source: sandbox/2.5.0-expresso1/expressoMail1_2/js/mail_archiver.js @ 7409

Revision 7409, 93.2 KB checked in by marcosw, 12 years ago (diff)

Ticket #3088 - Correção na seleção de msgs locais e paginação

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    //Marcosw inicio - criado array para guardar todas mensagens de determinada pasta
173    this.allmessagesbyfolder = new Array();
174    //Marcosw fim
175}
176
177//Invoked at some possible MA crash issue
178MailArchiver.prototype.resetObject = function(){
179    expresso_mail_archive.message_list = new Array();
180    expresso_mail_archive.messagelisted = new Array();
181    expresso_mail_archive.total_messages = 0;
182    expresso_mail_archive.messages_processed = 0;
183    expresso_mail_archive.messages_fail = 0;
184    //expresso_mail_archive.folder_origin = null;
185    //expresso_mail_archive.folder_destination = null;
186    //expresso_mail_archive.folder = null;
187    expresso_mail_archive.isbusy = false;
188    //window.alert('ResetedObject, deixando current folder como "' + expresso_mail_archive.currentfolder + '"\nfolder destination "' + expresso_mail_archive.folder_destination+ '"');
189}
190
191/*SystemCheck method: test if MailArchive is installed and/or running at user workstation
192*Try to get a instance of ArchiveServices object - the handler of services provided by
193*the MailArchive services provider interface, from user workstation.
194*/
195MailArchiver.prototype.SystemCheck = function(){
196    expresso_mail_archive.enabled = ((ArchiveServices) ? true : false);   
197    if(expresso_mail_archive.enabled){
198        expresso_mail_archive.getAuthId();
199    }
200    else{
201       
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    auto_refresh();
359}
360
361/*Startup method: initializes all the Mail Archive structure to work so far as possible
362 *Looks like the old 'gears_init', from Gears
363 **/
364MailArchiver.prototype.Startup = function(){
365    this.SystemCheck(); 
366}
367
368MailArchiver.prototype.serializeToExpresso = function(data){
369    return(connector.serialize(data));
370}
371
372MailArchiver.prototype.unserializeFromExpresso = function(data){
373    return(connector.unserialize(data));
374}
375
376
377MailArchiver.prototype.CreateMessageList = function(msg_list){
378    //window.alert('criando messagelist de arquivamento.');
379   
380//    for(var j=0; j<expresso_mail_archive.messageslisted.length; j++){
381//        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"]);
382//    }
383   
384    if((msg_list != null) && (msg_list != "") && (msg_list != " ")){
385        if (expresso_mail_archive.message_list.length == 0){
386            //Get all the messages ids by pass at msgs_id to "message_list" object array propertie - if more than one exists
387            if(msg_list.indexOf(',') != -1){
388                var tmp_list = msg_list.split(',');
389                for(var i=0; i < tmp_list.length; i++){
390                    expresso_mail_archive.message_list.push(tmp_list[i]);
391                }
392            }
393           
394            //Push message list to process the only one
395            else {
396                //window.alert('testando marcadores default...\n->Answered = ' +expresso_mail_archive.messageslisted[i]["Answered"] + '\n->Unseen = '+expresso_mail_archive.messageslisted[i]["Unseen"]);
397                expresso_mail_archive.message_list.push(msg_list);
398            }
399        }
400    }
401    //msg_list is corrupted. aborting population
402    else expresso_mail_archive.message_list = new Array();
403}
404
405
406//Archive Operation
407MailArchiver.prototype.Archive = function(source_folder,destination_folder,msgs_id){
408    //window.alert('tentando arquivar a mensagem [' + msgs_id + '], do folder ['+source_folder+'] para a pasta destino ['+destination_folder+']');
409    //modal('archive_queue');
410   
411    try{
412        //Sets the folders properties: destination and origin
413        expresso_mail_archive.folder_origin = source_folder;
414        expresso_mail_archive.CreateMessageList(msgs_id);
415        var tagsHandler = function(data){
416            if(data){
417                var datah = eval(data);
418                //window.alert('unseen = ' +datah["unseen"] + '\nrecent = ' + datah["recent"] + '\nflagged = ' + datah["flagged"] + '\ndraft = ' + datah["draft"] + '\nanswered = ' + datah["answered"] + '\ndeleted = ' + datah["deleted"] + '\nforwarded = ' + datah["forwarded"]);
419                expresso_mail_archive.taglist = datah;
420                //Sets the message counter and busy state
421                if(expresso_mail_archive.isbusy == false){
422                    expresso_mail_archive.total_messages = expresso_mail_archive.message_list.length;
423                    expresso_mail_archive.isbusy =  true;
424                }
425           
426                var fcaption = "";
427               
428                if(destination_folder.substr(0,5) == 'local'){
429                    //Marcosw inicio - correção para arquivar mensagens a subpastas locais.
430                    //expresso_mail_archive.folder_destination = destination_folder.substr(6,destination_folder.length);
431                    expresso_mail_archive.folder_destination = destination_folder.replace("local_messages_","");
432                    //Marcosw fim
433                }
434                else{
435                    expresso_mail_archive.folder_destination = destination_folder;
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
532       //Marcosw inicio - Adicionado mensagem informando progresso de arquivamento
533       write_msg(get_lang("Message %1 of %2 successfully archived", expresso_mail_archive.messages_processed, expresso_mail_archive.total_messages));
534       //Marcosw fim
535       
536       expresso_mail_archive.message_list.shift();
537       expresso_mail_archive.Archive(expresso_mail_archive.folder_origin, expresso_mail_archive.folder_destination, expresso_mail_archive.message_list);
538    }
539    else{
540        //Marcosw inicio - Melhoria na exibição de mensagem
541        //document.getElementById('main_title').innerHTML = get_lang("All done. End of archive messages operation");
542        write_msg(get_lang("All done. End of archive messages operation"));
543        //Marcosw fim
544        expresso_mail_archive.resetObject();
545        expresso_mail_archive.archivefolder = null;
546        window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);       
547        connector.purgeCache();
548        //ttreeBox.name_folder = "local_" + expresso_mail_archive.currentfolder;
549        //ttreeBox.name_folder = "local_inbox";
550        draw_tree_local_folders();
551        //ttreeBox.update_folder(true);   
552    }
553    //close_lightbox();
554}
555//Archive callback Fail
556MailArchiver.prototype.getArchiveOperationFailure = function(error_message){
557    window.alert('Hi! getArchiveOperationFailure comes with ' + error_message.getReturn());
558    window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);
559}
560
561/**
562 *move Folder
563 *
564 *@author Thiago Rossetto Afonso [thiago@prognus.com.br]
565 *
566 *@param folder_to_move Current folder that will be moved to another folder
567 *@param folder_to Folter that will receive the new folder
568 */
569MailArchiver.prototype.moveFolder = function(folder_to_move, folder_to){
570    try{
571        connector.showProgressBar();
572        ArchiveServices.moveFolder(expresso_mail_archive.moveFolderOK, expresso_mail_archive.moveFolderFailure, expresso_mail_archive.session.id, folder_to_move, folder_to);
573    }catch(e){
574        expresso_mail_archive.getFaultInfo();
575    }
576}
577MailArchiver.prototype.moveFolderOK = function(message){
578    write_msg(get_lang("Your folder was moved!"));
579}
580MailArchiver.prototype.moveFolderFailure = function(error_message){
581    alert("Error: " + error_message.getReturn());
582}
583
584
585
586
587/**
588 *Unarchieve Message
589 *
590 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
591 *
592 *@param folder Original Folder of the message
593 *@param new_folder The new folder of the message
594 *@param msgs_number id of the messages
595 */
596MailArchiver.prototype.unarchieve = function (folder, new_folder, msgs_number){
597    try{
598        //Marcosw inicio - Melhoria na exibição de mensagem
599        //document.getElementById('main_title').innerHTML = get_lang("Starting to unarchive messages");
600        write_msg(get_lang("Starting to unarchive messages"));
601        //Marcosw fim
602        if(currentTab.toString().indexOf("_r") != -1){
603            msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
604        }
605
606        if(!msgs_number)
607            msgs_number = get_selected_messages();       
608               
609        if (parseInt(msgs_number) > 0 || msgs_number.length > 0){       
610            expresso_mail_archive.message_list = new Array();
611            expresso_mail_archive.CreateMessageList(msgs_number);
612            if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
613                expresso_mail_archive.unarchivecounter = 0;
614                expresso_mail_archive.unarchive_error_counter=0;
615
616                //Marcosw início - correção de inconsistência com o nome da pasta local
617                //expresso_mail_archive.getFolderInfo(folder.substr(6, folder.length));
618                expresso_mail_archive.getFolderInfo(folder.replace("local_messages_",""));
619                //Marcosw fim
620
621                expresso_mail_archive.unarchievefolder = expresso_mail_archive.folder.name;
622                (new_folder != null)?expresso_mail_archive.unarchievenewfolder = new_folder:expresso_mail_archive.unarchievenewfolder='INBOX';
623               
624                expresso_mail_archive.unarchieveHandler();
625               
626                //Marcos Início - É preciso remover a aba da mensagem
627                if(currentTab.toString().indexOf("_r") != -1){
628                    delete_border(currentTab,'false'); 
629                }
630                //Marcos Fim
631            }
632            else{
633                write_msg(get_lang('No selected message.'));
634            }
635        }                               
636        else
637            write_msg(get_lang('No selected message.'));
638    }
639    catch (e){
640        write_msg(get_lang('Unarchive error: ' + e));
641    }
642}
643
644/**
645 *
646 *Unarchieve Message Handler
647 *
648 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
649 *
650 **/
651MailArchiver.prototype.unarchieveHandler = function(){
652    try{
653        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';   
654   
655        //Creates a new object to unarchive messages. It's a CXF Add-on CORS component
656        var UnarchiveReqHandler = new cxf_cors_request_object();
657        UnarchiveReqHandler.init();
658
659        //Both XDomainRequest and XMLHttpRequest L2 supports onload event
660        UnarchiveReqHandler.handler.onload = function(){           
661            for (var w=0; w < expresso_mail_archive.messageslisted.length; w++){
662                               
663                if(expresso_mail_archive.messageslisted[w]["msg_number"] == expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]){
664                    var timestamp = expresso_mail_archive.messageslisted[w]["timestamp"];
665                   
666                    //Get local tagged message data
667                    var flags = new String("");
668                   
669                    //Forwarded is special one: marks as "answered" and "draft"
670                    if(expresso_mail_archive.messageslisted[w]["Forwarded"]){
671                        if(expresso_mail_archive.messageslisted[w]["Forwarded"] == 'F')
672                            flags += 'A:X';                                 
673                    }
674                    else{
675                        //Answered tag
676                        if(expresso_mail_archive.messageslisted[w]["Answered"])
677                            if(expresso_mail_archive.messageslisted[w]["Answered"] == 'A')
678                                flags += 'A';
679                            else
680                                flags += ':';
681                        else
682                            flags += ':';                   
683
684                        //Draft tag
685                        if(expresso_mail_archive.messageslisted[w]["Draft"])
686                            if(expresso_mail_archive.messageslisted[w]["Draft"] == 'X')
687                                flags += 'D'+':';                   
688                            else
689                                flags += ':';
690                        else
691                            flags += ':';
692                    }
693                   
694                    //Flagged tag
695                    if(expresso_mail_archive.messageslisted[w]["Flagged"])
696                        //Marcosw inicio - alterado o valor de Flagged de 'true' para 'F', para evitar inconsistencia
697                        if(expresso_mail_archive.messageslisted[w]["Flagged"] == 'F')
698                        //Marcosw fim
699                            flags += 'F'+':';                                       
700                        else
701                            flags += ':';
702                    else
703                        flags += ':';
704                   
705                    //Unseen tag
706                    if(expresso_mail_archive.messageslisted[w]["Unseen"])
707                        if(expresso_mail_archive.messageslisted[w]["Unseen"] == 'U')
708                            flags += 'U';     
709                        else
710                            flags += '';
711                    else
712                        flags += '';
713                   
714                    //Imap tag hash id
715                    flags += "#@#@#@";                   
716                   
717                    break;
718                }
719            }
720            var id = expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter];
721            var source =  encodeURIComponent(UnarchiveReqHandler.handler.responseText) + "#@#@#@";
722            var params =
723            "&folder="      + escape(expresso_mail_archive.unarchievenewfolder) +
724            "&source="      + source +
725            "&timestamp="   + timestamp +
726            "&madata=true"  +
727            "&flags="       + flags +
728            "&id="          + id;
729       
730            var handler_unarchive = function(data){
731                expresso_mail_archive.unarchieveController(data);
732            }
733            //Marcosw inicio - Melhoria na exibição de mensagem
734            //document.getElementById('main_title').innerHTML = get_lang('Unarchiving message %1 of %2', (expresso_mail_archive.unarchivecounter + 1), expresso_mail_archive.message_list.length);
735            write_msg(get_lang('Unarchiving message %1 of %2', (expresso_mail_archive.unarchivecounter + 1), expresso_mail_archive.message_list.length));
736            //Marcosw fim
737           
738            cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params);
739
740        }
741       
742        //Marcosw inicio - Melhoria na exibição de mensagem
743        //document.getElementById('main_title').innerHTML = get_lang('Opening message %1 to unarchive', (expresso_mail_archive.unarchivecounter + 1));
744        write_msg(get_lang('Opening message %1 to unarchive', (expresso_mail_archive.unarchivecounter + 1)));
745        //Marcosw fim
746   
747        UnarchiveReqHandler.handler.open("GET", email, true);
748        if(UnarchiveReqHandler.handler.overrideMimeType){
749            UnarchiveReqHandler.handler.overrideMimeType("message/rfc822; charset=windows-1252");
750        }
751   
752        UnarchiveReqHandler.handler.send();
753    }
754    catch(e){
755        write_msg(get_lang('Unarchive error: ' + e));
756    }
757}
758
759/**
760 *
761 *Unarchieve Message Controller
762 *
763 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
764 *
765 **/
766MailArchiver.prototype.unarchieveController = function(data){
767    expresso_mail_archive.unarchivecounter++;
768   
769    if (data)
770    {
771        if (data.error != "")
772        {
773            expresso_mail_archive.unarchive_error_counter++;
774        }
775       
776        if (data.archived && preferences.keep_archived_messages == "0")
777        {
778            // apaga
779            expresso_mail_archive.deleteMessages(data.archived[0]);
780        }
781       
782    }
783
784    if (expresso_mail_archive.unarchivecounter < expresso_mail_archive.message_list.length){
785        expresso_mail_archive.unarchieveHandler();
786    }
787    else
788    {
789        if (expresso_mail_archive.unarchive_error_counter == 0)
790        {   
791            if (expresso_mail_archive.message_list.length==1){
792                //Marcosw inicio - melhoria na exibição da mensagem
793                //document.getElementById('main_title').innerHTML = get_lang('Message successfully unarchived');
794                //window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000); 
795                write_msg(get_lang('Message successfully unarchived'));
796                //Marcosw fim
797            }
798            else{
799                //Marcosw inicio - melhoria na exibição da mensagem
800                //document.getElementById('main_title').innerHTML = get_lang('Messages successfully unarchived');
801                //window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000); 
802                write_msg(get_lang('Messages successfully unarchived'));
803                //Marcosw fim
804            }
805        }
806        else
807        {
808            if (expresso_mail_archive.message_list.length==1){
809                //Marcosw inicio - melhoria na exibição da mensagem
810                write_msg(get_lang("Coudn't unarchive message"));
811                //document.getElementById('main_title').innerHTML = get_lang("Coudn't unarchive message");
812                //window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000); 
813                //Marcosw fim
814            }
815            else if (expresso_mail_archive.unarchive_error_counter == expresso_mail_archive.message_list.length)
816            {
817                //Marcosw inicio - melhoria na exibição da mensagem
818                write_msg(get_lang('No messages were unarchived'));
819                //document.getElementById('main_title').innerHTML = get_lang("No messages were unarchived");
820                //window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);
821                //Marcosw fim
822            }
823            else{
824                //Marcosw inicio - melhoria na exibição da mensagem
825                write_msg(get_lang("Some messages weren't successfully unarchived"));
826                //document.getElementById('main_title').innerHTML = get_lang("Some messages weren't successfully unarchived");
827                //window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000); 
828                //Marcosw fim
829            }
830               
831        }
832        //clear message list
833        expresso_mail_archive.message_list = new Array();
834    }
835}
836
837/**
838 *Archieve Delete Message
839 *
840 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
841 *
842 *@param msgs_number Unique identification of the message
843 */
844MailArchiver.prototype.deleteMessages = function(msgs_number){
845    try{
846        // This is necessary 'couse we can get a delete operation while an unarchive operation
847        // is still executing
848        expresso_mail_archive._temp_list = expresso_mail_archive.message_list;
849        expresso_mail_archive.message_list = new Array();
850       
851        expresso_mail_archive.CreateMessageList(msgs_number);
852        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
853            ArchiveServices.deleteMessages(expresso_mail_archive.deleteMessagesOperationOK,
854                                           expresso_mail_archive.deleteMessagesOperationFailure,
855                                           expresso_mail_archive.session.id,
856                                           expresso_mail_archive.message_list);
857        }
858        else{
859            write_msg(get_lang('No selected message.'));
860        }
861    }
862    catch (e){
863        window.alert('Delete error: ' + e);
864    }
865}
866
867/**
868 *Archieve Delete Message Ok
869 *
870 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
871 *
872 */
873MailArchiver.prototype.deleteMessagesOperationOK = function(){
874/*    var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders'};
875    expresso_mail_archive.drawdata = drawinginfo;
876    expresso_mail_archive.drawFolderTree();
877    expresso_mail_archive.listMessages();
878    */
879    connector.purgeCache();
880    //ttreeBox.update_folder(true);
881    if(expresso_mail_archive.message_list.length > 1){
882        write_msg(get_lang("The messages were deleted."));
883    }else{
884        write_msg(get_lang("The message was deleted."));
885    }
886    expresso_mail_archive.update_counters = true;
887    expresso_mail_archive.messageslisted = new Array();
888    expresso_mail_archive.message_list = new Array();
889
890    //Marcosw início - É preciso alterar o valor do currentfolder para que a página seja recarregada corretamente.
891    expresso_mail_archive.currentfolder = folder.replace("local_messages_","");
892    //Marcosw fim
893
894    expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder);
895
896    //Marcosw inicio - objeto tree_folders teve de ser comentado por gera inconsistência, não é mais utilizado
897    //tree_folders.getNodeById('local_trash')._select();   
898    //Marcosw fim
899
900    /*connector.purgeCache();
901    ttreeBox.name_folder = "local_" + expresso_mail_archive.currentfolder;
902    //draw_tree_local_folders();
903    ttreeBox.update_folder(true);
904    expresso_mail_archive.listMessages();   
905   
906    //window.alert('logo depois: msglist.lengtht = ' + expresso_mail_archive.message_list.length);
907    if(expresso_mail_archive.message_list.length > 1){
908        write_msg(get_lang("The messages were deleted."));
909    }else{
910        write_msg(get_lang("The message was deleted."));
911    }
912    */
913   
914    // This is necessary 'couse we can get a delete operation while an unarchive operation
915    // is still executing
916    expresso_mail_archive.message_list = expresso_mail_archive._temp_list;
917    expresso_mail_archive._temp_list = null;
918}
919
920/**
921 *Archieve Delete Message Operation Failure
922 *
923 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
924 *
925 */
926MailArchiver.prototype.deleteMessagesOperationFailure = function(error_message){
927    if(expresso_mail_archive.message_list.length > 1){
928        write_msg(get_lang("Error deleting messages.") + ' ' + error_message.getReturn());
929    }else{
930        write_msg(get_lang("Error deleting message.") + ' ' + error_message.getReturn());
931    }
932   
933    // This is necessary 'couse we can get a delete operation while an unarchive operation
934    // is still executing
935    expresso_mail_archive.message_list = expresso_mail_archive._temp_list;
936    expresso_mail_archive._temp_list = null;
937}
938
939/**
940 *Move message
941 *
942 *@param folder Folder where the message will be moved
943 *@param msgs_number Unique Id of the message
944 *
945 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
946 *
947 */
948MailArchiver.prototype.moveMessages = function(folder, msgs_number){   
949    try{
950        //Marcos inicio - melhoria na exibição da mensagem
951        //document.getElementById('main_title').innerHTML = get_lang("Starting to move messages");
952        write_msg(get_lang("Starting to move messages"));
953        //Marcosw fim
954
955        expresso_mail_archive.CreateMessageList(msgs_number);
956        expresso_mail_archive.folder_destination = folder;
957        //window.alert('invocando o moveMessages com lista = ' + expresso_mail_archive.message_list.length + ' e folder destino =' + folder + '.\nFolder corrente ï¿œ ' + expresso_mail_archive.currentfolder);
958       
959        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
960            expresso_mail_archive.total_messages = expresso_mail_archive.message_list.length;
961            expresso_mail_archive.moveMessagesHandler();           
962        }
963        else{
964            write_msg(get_lang('No selected message.'));
965        }
966    }
967    catch (e){
968        expresso_mail_archive.getFaultInfo();
969    }
970}
971
972MailArchiver.prototype.moveMessagesHandler = function(){
973    //Marcosw iní­cio - código foi comentado pois causava inconsistencias.
974    // if((ttreeBox.name_folder != null) && (ttreeBox.name_folder != '') && (ttreeBox.name_folder.length >0)){
975    //     expresso_mail_archive.currentfolder = ttreeBox.name_folder.substr(6, ttreeBox.name_folder.length);
976    // }
977    //Marcosw fim
978   
979    //Marcosw inicio - adicionado código atualizar a folder corretamente
980    expresso_mail_archive.currentfolder = folder.substr(6, folder.length);
981    //Marcosw fim
982
983    if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
984        //Marcosw inicio - Melhoria na exibição da mensagem
985        //document.getElementById('main_title').innerHTML = get_lang('Moving message %1 of %2', expresso_mail_archive.messages_processed, expresso_mail_archive.total_messages);
986        write_msg(get_lang('Moving message %1 of %2', expresso_mail_archive.messages_processed, expresso_mail_archive.total_messages));
987        //Marcosw fim
988        ArchiveServices.moveMessages(expresso_mail_archive.moveMessagesOperationOK,
989                                     expresso_mail_archive.moveMessagesOperationFailure,
990                                     expresso_mail_archive.session.id,
991                                     expresso_mail_archive.folder_destination,
992                                     new Array(expresso_mail_archive.message_list[parseInt(expresso_mail_archive.messages_processed)])
993                                     );
994    }
995    else{
996        window.alert('Moving handler messagelist caught:\n ' + expresso_mail_archive.message_list.length);       
997    }   
998}
999
1000/**
1001 *Move Message Ok
1002 *
1003 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
1004 *
1005 */
1006MailArchiver.prototype.moveMessagesOperationOK = function(){
1007    //archivement allready done, update controll data and interface
1008    expresso_mail_archive.messages_processed++;
1009   
1010    if(parseInt(expresso_mail_archive.messages_processed) < parseInt(expresso_mail_archive.total_messages)){
1011       window.setTimeout(expresso_mail_archive.moveMessagesHandler,1);       
1012    }
1013    else{
1014        //Marcosw inicio - Melhoria na exibição de mensagem
1015        //document.getElementById('main_title').innerHTML = get_lang("All done. Message(s) moved successfully");
1016        //window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);
1017        write_msg(get_lang("All done. Message(s) moved successfully"));
1018        //Marcosw fim
1019       
1020        //Tag messages moved
1021        for(var i=0; i<expresso_mail_archive.message_list.length; i++){
1022            var tlist = expresso_mail_archive.pattern.tagConfig(expresso_mail_archive.taglist, expresso_mail_archive.message_list[i], 0);
1023            if(tlist != null){
1024                try{
1025                    expresso_mail_archive.drawdata = null;
1026                    ArchiveServices.tagMessages(expresso_mail_archive.tagMessagesOperationOK, expresso_mail_archive.tagMessagesOperationFailure, expresso_mail_archive.session.id, tlist);
1027                }
1028                catch(e){
1029                    expresso_mail_archive.getFaultInfo();
1030                }
1031            }           
1032        }         
1033       
1034        expresso_mail_archive.update_counters = true;
1035        expresso_mail_archive.messageslisted = new Array();
1036        expresso_mail_archive.message_list = new Array(); 
1037
1038        expresso_mail_archive.getFolderInfo(expresso_mail_archive.currentfolder);
1039        expresso_mail_archive.getFolderInfo(expresso_mail_archive.folder_destination);
1040        expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder);
1041             
1042        //Marcosw início - código foi comentado pois causava inconsistencias.
1043        // if(expresso_mail_archive.currentfolder.substr(0,6) == 'local_'){
1044        //     ttreeBox.name_folder = expresso_mail_archive.currentfolder;
1045        // }
1046        // else{
1047        //     ttreeBox.name_folder = "local_" + expresso_mail_archive.currentfolder;
1048        // }
1049        //ttreeBox.update_folder(true);
1050        expresso_mail_archive.resetObject();
1051    }
1052}
1053
1054/**
1055 *Move Message Failure
1056 *
1057 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
1058 *
1059 */
1060MailArchiver.prototype.moveMessagesOperationFailure = function(error_message){
1061    if(expresso_mail_archive.message_list.length > 1){
1062        write_msg(get_lang("Error moving messages.") + ' ' + error_message.getReturn());
1063    }else{
1064        write_msg(get_lang("Error moving message.") + ' ' + error_message.getReturn());
1065    }
1066}
1067
1068
1069//getFolderList Operation
1070MailArchiver.prototype.getFoldersList = function(basefolder){   
1071    try{
1072        connector.showProgressBar();
1073        //window.alert('no expresso_mail_archive.getFoldersList com basefolder = ' + basefolder);
1074        if(basefolder == 'local_root')
1075            basefolder = "";
1076        //window.alert('folderlist com basefolder = ' + basefolder);
1077        //ArchiveServices.listFolders(expresso_mail_archive.getFoldersListOperationOK, expresso_mail_archive.getFoldersListOperationFailure, sessid, basefolder);
1078        ArchiveServices.listFolders(expresso_mail_archive.getFoldersListOperationOK, expresso_mail_archive.getFoldersListOperationFailure, expresso_mail_archive.session.id, basefolder);
1079       
1080    }
1081    catch (e){
1082        expresso_mail_archive.getFaultInfo();
1083    }
1084}
1085
1086//getFolderList callback OK
1087MailArchiver.prototype.getFoldersListOperationOK = function(folderlist){
1088    //Internal variable used to map all XML data return from WS invokated
1089    var lfolders = new Array();
1090
1091   
1092    //Mapping XML data to a handler data structure
1093    if(folderlist.getReturn().length > 0){
1094        var lfolders = new Array();
1095        for(i=0; i<folderlist.getReturn().length; i++){
1096            (folderlist.getReturn()[i].getFolderCount() > 0 ) ? folderChild = 1 : folderChild = 0;
1097
1098            //Store folder data at this format: {folder name, number of messages contained, folder has child nodes, folder id, folder parent id, folder full path}
1099            //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());
1100            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()};
1101            //window.alert('folder ' + folderData.name + ' tem ' + folderData.messages + ' mensagens, sendo ' + folderData.unseen + ' nï¿œo lidas');
1102            lfolders.push(folderData);
1103        }
1104
1105        //Sets folders property at main object
1106        expresso_mail_archive.folders = lfolders;
1107       
1108        //Sets current folder, only if no one is setted
1109        //if(expresso_mail_archive.currentfolder == null){
1110            if(expresso_mail_archive.folders[0]["parentid"] == "home"){ // change from "" to "home"(12/12/2011)
1111                expresso_mail_archive.currentfolder = 'local_root';
1112            }
1113            else
1114                expresso_mail_archive.currentfolder = expresso_mail_archive.folders[0]["parentid"];
1115        //}
1116       
1117       
1118        //Folders dumping :)
1119        /*var strFolders = '---';
1120        for (var w=0; w < expresso_mail_archive.folders.length; w++){
1121            strFolders += '\nFolder ' + w + ' -->';
1122            for (x in expresso_mail_archive.folders[w]){
1123                strFolders += '\n----------' + x + ':= ' + expresso_mail_archive.folders[w][x];
1124            }
1125            strFolders += '\n<---';
1126        }
1127        strFolders += '\n---';
1128        alert(lfolders.length + ' folders mapeados, com default = ' + expresso_mail_archive.currentfolder + '\nfolders list:\n\n' + strFolders);
1129        */
1130        //window.alert('foldersListOperationOK com drawdata:\n' + expresso_mail_archive.drawdata);
1131        //If something UI related have been flagged, handle it
1132        if (expresso_mail_archive.drawdata){
1133            //window.alert('com drawdata e treeName = ' + expresso_mail_archive.drawdata.treeName);
1134            expresso_mail_archive.drawFolderTree();
1135        }
1136    } else {
1137        expresso_mail_archive.folders = 0;
1138    }
1139    connector.hideProgressBar();
1140}
1141
1142//getFolderList callback Fail
1143MailArchiver.prototype.getFoldersListOperationFailure = function(error, http_msg){
1144    window.alert('List folders mistake:' + error + '\nhttp_error = ' + http_msg);
1145    connector.hideProgressBar();
1146}
1147
1148//drawFolderTree operation, if requested to
1149MailArchiver.prototype.drawFolderTree = function(){ 
1150    var localBaseName  = 'local_';
1151    var objectTree = expresso_mail_archive.drawdata.treeObject;
1152    var evalobjectTree = (typeof(expresso_mail_archive.drawdata.treeObject) == 'object') ? expresso_mail_archive.drawdata.treeObject: eval( '(' + expresso_mail_archive.drawdata.treeName + ')');
1153       
1154    if((expresso_mail_archive.drawdata.treeName == 'search_folders') && (Element('dftree_search_folders')))
1155        evalobjectTree = folders_tree;
1156    else{
1157        if((expresso_mail_archive.drawdata.treeName == 'folders_tree') && (Element('dftree_folders_tree')))
1158            evalobjectTree = folders_tree;
1159    }
1160       
1161    //Add nodes to tree   
1162    if(typeof(evalobjectTree) == 'object'){
1163        //window.alert('caiu pra dentro, com ' + expresso_mail_archive.folders.length + ' folders.');
1164        evalobjectTree._drawn = true;
1165        if(expresso_mail_archive.folders.length > 0){
1166            for(i=0; i<expresso_mail_archive.folders.length; i++){
1167                var folder_caption;
1168                //window.alert('iterando nodo ' + expresso_mail_archive.folders[i]["name"]);
1169           
1170                //Special folders treatment: Inbox, Outbox, Drafts, Sent and Trash folders               
1171                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')){
1172                    folder_caption = get_lang(expresso_mail_archive.folders[i]["name"]);
1173                }
1174                else{
1175                    folder_caption = expresso_mail_archive.folders[i]["name"];
1176                }
1177               
1178                var onClickVar = '';                               
1179                if((evalobjectTree.name != "folders_tree") && (evalobjectTree.name != "search_folders")){
1180                    onClickVar =  "change_folder('"+ localBaseName + expresso_mail_archive.folders[i]["id"] +"','"+ localBaseName + expresso_mail_archive.folders[i]["id"]+"', '" + expresso_mail_archive.drawdata.treeName + "')";
1181                    if(expresso_mail_archive.folders[i]["unseen"] != "0")
1182                        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>'
1183                }
1184     
1185                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"]});
1186                //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"]});
1187           
1188                //Adjust the id node names
1189                if(expresso_mail_archive.currentfolder){
1190                    if(expresso_mail_archive.currentfolder.substr(0,5) != 'local'){
1191                        evalobjectTree.add(n_demo, localBaseName + expresso_mail_archive.currentfolder);
1192                    }
1193                    else{
1194                        evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder);
1195                    }
1196                }
1197                else {
1198                    expresso_mail_archive.currentfolder = 'local_root';
1199                    evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder);
1200                }           
1201            }
1202        }
1203        //Set special folders icons   
1204        if (document.getElementById('llocal_senttree_folders')){
1205            document.getElementById('llocal_senttree_folders').style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_sent.png)";
1206        }
1207        if (document.getElementById('llocal_trashtree_folders')){
1208            document.getElementById('llocal_trashtree_folders').style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_trash.png)";
1209        }
1210        if (document.getElementById('llocal_draftstree_folders')){
1211            document.getElementById('llocal_draftstree_folders').style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_draft.png)";
1212        }
1213        if (document.getElementById('llocal_outboxtree_folders')){
1214            document.getElementById('llocal_outboxtree_folders').style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_sent.png)";
1215        }         
1216    }
1217    else {
1218        //does nothing
1219    }
1220}
1221
1222//getFaultInfo operation
1223MailArchiver.prototype.getFaultInfo = function(){
1224    try{
1225        //ArchiveServices.getFaultInfo(expresso_mail_archive.getFaultInfoOperationOK, expresso_mail_archive.getFaultInfoOperationFailure, sessid);
1226         ArchiveServices.getFaultInfo(expresso_mail_archive.getFaultInfoOperationOK, expresso_mail_archive.getFaultInfoOperationFailure, expresso_mail_archive.session.id);
1227         connector.hideProgressBar();
1228    }   
1229    catch(e){
1230        if (!expresso_mail_archive.enabled)
1231            write_msg(get_lang('MailArchiver does not seems to be running or installed at this workstation, local messages are disabled. Check it out!'),false);
1232        else{
1233            window.clearInterval(expresso_mail_archive.timer);
1234            write_msg(get_lang('There is something wrong with MailArchiver environment. Contact you support'), false);
1235            expresso_mail_archive.enabled = false;
1236            expresso_mail_archive.turnOffLocalTreeStructure();
1237        }
1238        connector.hideProgressBar();
1239    }
1240}
1241
1242//getFaultInfo callback OK
1243MailArchiver.prototype.getFaultInfoOperationOK = function(faultinfo){
1244    try{
1245        write_msg(get_lang('MailArchiver remote service reports the following error:', false) + faultinfo.getReturn().getSoapFaultString());
1246    } catch(e){
1247        write_msg(get_lang('The archive service reports a unknown error. Try to refresh your browser screen', false));
1248    }
1249    expresso_mail_archive.resetObject();
1250    expresso_mail_archive.archivefolder = null;
1251    window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);       
1252    connector.purgeCache();
1253    expresso_mail_archive.turnOffLocalTreeStructure();
1254}
1255
1256//getFaultInfo callback Fail
1257MailArchiver.prototype.getFaultInfoOperationFailure = function(errorCode, errorDesc){
1258    try{
1259        write_msg(get_lang('SoapFault capture fails at:' + errorCode + ' | ' + errorDesc, false));
1260    } catch(e){
1261        write_msg(get_lang('Service error mapping', false));
1262    }   
1263}
1264
1265//createFolder operation
1266MailArchiver.prototype.createFolder = function(parentFolder, folderName){
1267   
1268    try{
1269        //ArchiveServices.createFolder(expresso_mail_archive.createFolderOperationOK, expresso_mail_archive.createFolderOperationFailure, sessid, parentFolder, folderName);
1270        ArchiveServices.createFolder(expresso_mail_archive.createFolderOperationOK, expresso_mail_archive.createFolderOperationFailure, expresso_mail_archive.session.id, parentFolder, folderName);
1271    }
1272    catch (e){
1273        expresso_mail_archive.getFaultInfo();
1274    }
1275   
1276}
1277
1278//createFolder callback OK
1279MailArchiver.prototype.createFolderOperationOK = function (folderObject){
1280    //window.alert('callback de createfolderoperationok');
1281    draw_tree_local_folders();
1282    //expresso_mail_archive.drawdata.treeObject._drawn = true;
1283    //ttreeBox.update_folder();   
1284}
1285
1286//createFolder callback Fail
1287MailArchiver.prototype.createFolderOperationFailure = function (message){
1288    window.alert('Folder creation fails...\n->' + message.getReturn());
1289}
1290
1291//deleteFolder operation
1292MailArchiver.prototype.deleteFolder = function(folderName){
1293    try{
1294        ArchiveServices.deleteFolder(expresso_mail_archive.deleteFolderOperationOK, expresso_mail_archive.deleteFolderOperationFailure, expresso_mail_archive.session.id, folderName, true);
1295    }
1296    catch (e){
1297        expresso_mail_archive.getFaultInfo();
1298    }
1299   
1300}
1301
1302//deleteFolder callback OK
1303MailArchiver.prototype.deleteFolderOperationOK = function (folderObject){
1304    write_msg(get_lang("The local folder \"%1\" was successfully removed", expresso_mail_archive.drawdata.folderName));
1305    connector.purgeCache();
1306    ttreeBox.name_folder = "root";
1307    ttreeBox.update_folder();
1308    draw_tree_local_folders();
1309    ttreeBox.update_folder();   
1310}
1311
1312//deleteFolder callback Fail
1313MailArchiver.prototype.deleteFolderOperationFailure = function (message){
1314    expresso_mail_archive.getFaultInfo();
1315}
1316
1317//renameFolder operation
1318MailArchiver.prototype.renameFolder = function(folderId, newFolderName){
1319    try{
1320        //ArchiveServices.renameFolder(expresso_mail_archive.renameFolderOperationOK, expresso_mail_archive.renameFolderOperationFailure, sessid, folderId, newFolderName);
1321        ArchiveServices.renameFolder(expresso_mail_archive.renameFolderOperationOK, expresso_mail_archive.renameFolderOperationFailure, expresso_mail_archive.session.id, folderId, newFolderName);
1322    }
1323    catch (e){
1324        expresso_mail_archive.getFaultInfo();
1325    }
1326   
1327}
1328
1329//renameFolder callback OK
1330MailArchiver.prototype.renameFolderOperationOK = function (returnService){
1331    var evalobjectTree = eval(expresso_mail_archive.drawdata.treeName);
1332    evalobjectTree.update_folder();
1333}
1334
1335//renameFolder callback Fail
1336MailArchiver.prototype.renameFolderOperationFailure = function (ServiceFault){
1337    expresso_mail_archive.getFaultInfo();
1338}
1339
1340//getFolderInfo operation
1341MailArchiver.prototype.getFolderInfo = function (folderId){
1342    try{
1343        if(folderId == 'local_root')
1344            folderId = "";
1345        ArchiveServices.getFolderInfo(expresso_mail_archive.getFolderInfoOperationOK, expresso_mail_archive.getFolderInfoOperationFailure, expresso_mail_archive.session.id, folderId);
1346    }
1347    catch (e){
1348        expresso_mail_archive.getFaultInfo();
1349    }     
1350}
1351
1352//getFolderInfo callback OK
1353MailArchiver.prototype.getFolderInfoOperationOK = function(returnService){
1354   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()};
1355   expresso_mail_archive.folder = folder_info;
1356   expresso_mail_archive.updateCounter();
1357}
1358
1359//getFolderInfo callback Fail
1360MailArchiver.prototype.getFolderInfoOperationFailure = function (ServiceFault){
1361    window.alert('getFolderInfo service fails...\n->' + ServiceFault.getReturn());
1362    expresso_mail_archive.folder_data = true;
1363}
1364
1365function foo(){
1366    var a = 0;
1367    a++;
1368}
1369
1370
1371/**
1372 *delete All Messages
1373 *
1374 *@author Thiago Rossetto Afonso [thiago@prognus.com.br]
1375 *
1376 *@param folderId - folder id to get all messages that it has
1377 */
1378
1379MailArchiver.prototype.deleteAllMessages = function(folderId){
1380    try{
1381        var objfolder = new Object();
1382        objfolder.folder = folderId;
1383
1384        var query_data = expresso_mail_archive.queryconfig.query(objfolder);
1385
1386        ArchiveServices.listMessages(expresso_mail_archive.deleteMsgsOperationOK, expresso_mail_archive.deleteMsgsOperationFailure, expresso_mail_archive.session.id, query_data);
1387    }catch(e){
1388        expresso_mail_archive.getFaultInfo();
1389    }
1390}
1391MailArchiver.prototype.deleteMsgsOperationOK = function(returnService){
1392    var msgsArray = new Array();
1393    var msgs = "";
1394    for(var i=0; i< returnService.getReturn().length; i++){
1395        msgsArray.push(returnService.getReturn()[i]._id);   
1396    } 
1397    msgs = msgsArray.join(",");
1398
1399    MailArchiver.prototype.deleteMessages(msgs);
1400}
1401MailArchiver.prototype.deleteMsgsOperationFailure = function(){
1402    alert("Your Messages weren't deleted.");
1403}
1404
1405//listMessages operation
1406//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) {
1407//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) {
1408//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);
1409MailArchiver.prototype.listMessages = function(folderId){
1410    try{
1411        connector.showProgressBar();
1412        var getcurrent = get_current_folder();       
1413        //tree_folders.getNodeById(get_current_folder())._select();
1414        var folderid;
1415        if(typeof(folderId) != "undefined"){
1416            folderid = folderId;
1417        } else {
1418            folderid = this.currentfolder;   
1419        }
1420        var objfolder = new Object();
1421        objfolder.folder = folderid;
1422        //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>';
1423        //var testing_data_json_mapped = '{"query":{"@lowerIndex":"0", "@upperIndex":"50", "folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date", "@desc":"subject"}]}}';
1424        var query_data = expresso_mail_archive.queryconfig.query(objfolder);
1425        expresso_mail_archive.getFolderInfo(folderid);
1426        expresso_mail_archive.currentfolder = folderid;
1427       
1428
1429        //ArchiveServices.listMessages(expresso_mail_archive.listMessagesOperationOK, expresso_mail_archive.listMessagesOperationFailure, sessid, query_data);
1430        ArchiveServices.listMessages(expresso_mail_archive.listMessagesOperationOK, expresso_mail_archive.listMessagesOperationFailure, expresso_mail_archive.session.id, query_data);
1431    }
1432    catch (e){
1433        expresso_mail_archive.getFaultInfo();
1434    }
1435}
1436
1437//listMessages callback OK
1438MailArchiver.prototype.listMessagesOperationOK = function(returnService){
1439    var msglist = new Array();
1440    expresso_mail_archive.ServiceReturnObjectList = new Array();
1441    //window.alert('messages data\n\n' + print_r(returnService.getReturn().length));
1442    /*window.alert('Dados da mensagem:\n->From ' + returnService.getReturn()[0].getFrom()
1443                                      +'\n->To ' + returnService.getReturn()[0].getTo()
1444                                      +'\n->Subject ' + returnService.getReturn()[0].getSubject()
1445                                      +'\n->Date ' + returnService.getReturn()[0].getDate()
1446                                      +'\n->Date ' + returnService.getReturn()[0].getSize()
1447                                      +'\n->ID ' + returnService.getReturn()[0].getId());
1448    */
1449    var msg_unseen_count = 0;
1450    for(var i=0; i< returnService.getReturn().length; i++){
1451        var ExpSerialized = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]);
1452        var msgitem = connector.unserialize(ExpSerialized);
1453        //counts unseen messages
1454        if(msgitem.Unseen == 'U')
1455            msg_unseen_count++;
1456     
1457        // fernando
1458        // correção para por no padrao certo, se nao fizer isso buga a listagem
1459        msgitem_temp = msgitem.msg_sample;
1460        msgitem.msg_sample = { "body": msgitem_temp };
1461        msglist.push(msgitem);//usando connector.unserialize sobre o header mapeado no layout abaixo
1462        expresso_mail_archive.ServiceReturnObjectList.push(returnService.getReturn()[i]); //add each one service return data into this embeded object array
1463    }
1464    var tab_counters = expresso_mail_archive.getFolderCounters();
1465   
1466    //msglist["num_msgs"] = returnService.getReturn().length;
1467    //window.alert('service return length = ' + returnService.getReturn().length + '\nfolder.nummessages = ' + expresso_mail_archive.folder.nummessages);
1468   
1469    //window.alert('folder counters:\n' + print_r(tab_counters));
1470
1471    //msglist["num_msgs"] = expresso_mail_archive.folder.nummessages;
1472    msglist["num_msgs"] = tab_counters[0];
1473    //window.alert('num msgs');
1474    //(expresso_mail_archive.folder.unseen) ? msglist["tot_unseen"] = expresso_mail_archive.folder.unseen : msglist["tot_unseen"] = 0;
1475    (tab_counters[1] != 0) ? msglist["tot_unseen"] = tab_counters[1] : msglist["tot_unseen"] = 0;
1476//    window.alert('num unseen');
1477    //window.alert('print_r\n\n' + print_r(msglist));
1478   
1479    //expresso_mail_archive.updateCounter(returnService.getReturn().length, msg_unseen_count);   
1480    expresso_mail_archive.messageslisted = msglist;
1481    expresso_mail_archive.drawdata = {messagesList:msglist};
1482    //expresso_mail_archive.drawMessagesList();
1483    //expresso_mail_archive.drawMessagesList(returnService.getReturn().length, msg_unseen_count);
1484    //expresso_mail_archive.drawMessagesList(msglist["num_msgs"], msg_unseen_count);
1485    //add by fernando: desenha a lista de mensagens no expressomail
1486    expresso_mail_archive.drawMessagesList(msglist["num_msgs"], msglist['tot_unseen']);
1487    connector.hideProgressBar();
1488}
1489
1490//listMessages callback Fail
1491MailArchiver.prototype.listMessagesOperationFailure = function(ServiceFault){
1492    window.alert('listmessages FALHOU!\n' + ServiceFault.getReturn());
1493}
1494
1495//Marcosw inicio - criado métodos para retornar todos os ids de mensagens por folder
1496//List all messages by folder given and set a array with all messages ids
1497MailArchiver.prototype.listAllMessagesByFolder = function(folderid){
1498    try{
1499        var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date"}]}}';
1500        ArchiveServices.listMessages(expresso_mail_archive.listAllMessagesByFolderOperationOK, expresso_mail_archive.listAllMessagesByFolderOperationFailure, expresso_mail_archive.session.id, query_messages);
1501    }
1502    catch (e){
1503        expresso_mail_archive.getFaultInfo();
1504    }
1505}
1506
1507//listAllMessages callback OK
1508MailArchiver.prototype.listAllMessagesByFolderOperationOK = function(returnService){
1509    var msglist = new Array();
1510    for(var i=0; i< returnService.getReturn().length; i++){
1511        msglist.push(returnService.getReturn()[i]._id);
1512    }
1513    expresso_mail_archive.allmessagesbyfolder = msglist;
1514}
1515
1516//listAllMessages callback Fail
1517MailArchiver.prototype.listAllMessagesByFolderOperationFailure = function(ServiceFault){
1518    window.alert('listAllmessagesByFolder FALHOU!\n' + ServiceFault.getReturn());
1519}
1520//Marcosw fim
1521
1522MailArchiver.prototype.getFolderMessagesNumber = function(){
1523    var n = 0;
1524    for(var i=0; i < expresso_mail_archive.folders.length; i++){
1525        if(expresso_mail_archive.folders[i]["id"] == expresso_mail_archive.currentfolder){
1526            n = expresso_mail_archive.folders[i]["messages"];
1527        }
1528    }
1529    return(n);
1530}
1531
1532MailArchiver.prototype.drawMessagesList = function(msgtot, msgunseen){
1533    //window.alert('no drawMessagesList com folder = ' + expresso_mail_archive.currentfolder  + '\nudatecounters = ' + expresso_mail_archive.udatecounters);
1534    var data_to_draw = expresso_mail_archive.drawdata.messagesList; 
1535    //window.alert('data to draw =  ' + data_to_draw.length + '\ndata_to_draw[0].from.full = ' + print_r(data_to_draw));
1536    //window.alert('Current folder = ' + expresso_mail_archive.currentfolder + ' com ' + expresso_mail_archive.folders.length + ' folders.');
1537    var fcaption = expresso_mail_archive.currentfolder;
1538   
1539    /*for (var w=0; w < expresso_mail_archive.folders.length; w++){
1540        //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 + '"');
1541        if(expresso_mail_archive.folders[w]["id"] == expresso_mail_archive.currentfolder){
1542            fcaption = expresso_mail_archive.folders[w]["name"];
1543            window.alert('folder found!\n -> ' + fcaption);
1544            break;
1545        }
1546    }*/
1547   
1548    var fcaption = expresso_mail_archive.folder.name;
1549   
1550    /*window.alert('fcaption = ' + fcaption);
1551    var udate_tree_folder = expresso_mail_archive.drawdata.treefolder;
1552    window.alert('atualizar contador da ï¿œrvore : ' + udate_tree_folder);
1553    var udate_tab_folder = expresso_mail_archive.drawdata.tabfolder;
1554    window.alert('atualizar contador da tab : ' + udate_tab_folder);*/
1555    //var folder_num_msgs = expresso_mail_archive.getFolderMessagesNumber();
1556    var folder_num_msgs = expresso_mail_archive.folder.nummessages;
1557    //window.alert('num = ' + folder_num_msgs);
1558
1559    //Marcosw início - Inserido comentário no código pois fazia com que se removesse a aba de listagem de emails
1560    //alternate_border(0);
1561    //Marcosw fim
1562   
1563    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>';
1564    draw_box(data_to_draw, 'local_' + expresso_mail_archive.currentfolder, true);
1565    //draw_paging(expresso_mail_archive.drawdata.messagesList.length);
1566    //draw_paging(preferences.max_email_per_page);
1567    draw_paging(folder_num_msgs);   
1568    if(((msgtot) && (msgunseen)) || ((parseInt(msgtot)==0)&&(parseInt(msgunseen)==0))){
1569        //volta aqui
1570        Element('new_m').innerHTML = '<font color="RED">'+$(".tr_msg_unread").length+'</font>';
1571        //expresso_mail_archive.updateCounter(msgtot, $(".tr_msg_unread").length);
1572    }
1573    else{
1574        Element("tot_m").innerHTML = folder_num_msgs;
1575        Element('new_m').innerHTML = data_to_draw['tot_unseen'] ? '<font color="RED">'+data_to_draw['tot_unseen']+'</font>' : 0;
1576    }
1577}
1578
1579MailArchiver.prototype.getMessageHeaders = function(msgId){
1580    var msgfound = false;
1581    var headerMsg;
1582       
1583    //Get message header info, from message list operation previously invoked
1584    for (var w=0; w < expresso_mail_archive.messageslisted.length; w++){
1585        if(expresso_mail_archive.messageslisted[w]["msg_number"] == msgId){
1586            headerMsg = expresso_mail_archive.messageslisted[w];
1587            msgfound = true;
1588            break;
1589        }
1590    }
1591   
1592    //Message does not exists at default message list previouslly invoked. Then, will be tryed to get it at possible search criteria existing tab.
1593    if(!msgfound){
1594        //Try to discover if desired message is at a search local data tab
1595        if(currentTab.toString().indexOf("search_local") != -1){
1596            var msgId2 = msgId.substr(0,msgId.indexOf("_s"));           
1597            for (var w=0; w < expresso_mail_archive.search_message_list.length; w++){
1598                if(expresso_mail_archive.search_message_list[w]["msg_number"] == msgId2){
1599                    headerMsg = expresso_mail_archive.search_message_list[w];
1600                    msgfound = true;
1601                    break;
1602                }
1603            }
1604       
1605        }
1606    }
1607   
1608    //The message was found, as well the her headers
1609    if(msgfound){
1610        expresso_mail_archive.currentheaders = headerMsg;
1611        return(headerMsg);
1612    }
1613    //The message was not found   
1614    else{
1615        headerMsg = null;
1616        expresso_mail_archive.currentheaders = headerMsg;       
1617        return;
1618    }
1619}
1620
1621
1622
1623MailArchiver.prototype.getSomeMsgs = function(msgIds){
1624    try{
1625       expresso_mail_archive.getSomeMsg = new Array();
1626       for(var i=0; i < msgIds.length; i++){
1627           expresso_mail_archive.getSomeMsg.push(expresso_mail_archive.getMessageHeaders(msgIds[i]));
1628       }
1629       
1630   }catch(e){
1631
1632   }
1633}
1634
1635MailArchiver.prototype.getMessage = function(msgdata){
1636    try{
1637        if((msgdata.length <= 0) || (msgdata == null)){
1638            return;
1639        }
1640        expresso_mail_archive.currentmessage = expresso_mail_archive.getMessageHeaders(msgdata)["msg_number"];
1641        ArchiveServices.getMessageBody(expresso_mail_archive.getMessageOperationOK, expresso_mail_archive.getMessageOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.currentmessage);
1642    }
1643    catch(e){
1644        expresso_mail_archive.getFaultInfo();
1645    }
1646}
1647
1648MailArchiver.prototype.getMessageOperationOK = function(returnService){   
1649    if(returnService.getReturn().length <= 0){
1650        window.alert('Oh no: service return data is zero length...');
1651        return;
1652    }   
1653    var msgBody = returnService.getReturn();
1654    //var msgHeaders = expresso_mail_archive.getMessageHeaders(expresso_mail_archive.currentmessage);
1655    var msgHeaders = expresso_mail_archive.currentheaders;
1656    var expSerializedMessage = expresso_mail_archive.pattern.toExpressoMail(msgHeaders, msgBody);
1657   
1658    // Unset \\Unseen flag
1659    for (i=0; i < expresso_mail_archive.messageslisted.length; i++)
1660    {
1661        if (expresso_mail_archive.messageslisted[i].msg_number == expresso_mail_archive.currentmessage)
1662        {
1663            expresso_mail_archive.messageslisted[i]['Unseen'] = '';
1664        }
1665    }
1666   
1667    //window.alert('Serialized data\n\n' + print_r(expSerializedMessage));
1668    //expresso_mail_archive.showEmbededImage(msgBody);
1669    show_msg(expSerializedMessage);   
1670    window.setTimeout("expresso_mail_archive.setEmbeddedLink()", 1);
1671}
1672MailArchiver.prototype.getMessageOperationFailure = function(ServiceFault){
1673    window.alert('Message fails do be loaded.');
1674}
1675
1676/*
1677 *getMessageServiceObjet: search for a remote webservice object in memory to use
1678 *draw interface. Look at messages list first, then, search list. Returns desired
1679 *object, or null (if not found)
1680 **/
1681MailArchiver.prototype.getMessageServiceObject = function(msgid){
1682    var flag_found = false;
1683    var rtn_obj = null;
1684   
1685    //Message list
1686    if(expresso_mail_archive.ServiceReturnObjectList != null){
1687        for(var i=0; i < expresso_mail_archive.ServiceReturnObjectList.length; i++){
1688            if (expresso_mail_archive.ServiceReturnObjectList[i].getId() == msgid){
1689                flag_found = true;
1690                rtn_obj = expresso_mail_archive.ServiceReturnObjectList[i];
1691            }
1692        }
1693    }
1694       
1695    //Search list
1696    if(!flag_found){
1697        if(expresso_mail_archive.ServiceReturnObjectSearch != null){
1698            for(var i=0; i < expresso_mail_archive.ServiceReturnObjectSearch.length; i++){
1699                if (expresso_mail_archive.ServiceReturnObjectSearch[i].getId() == msgid){
1700                    flag_found = true;
1701                    rtn_obj = expresso_mail_archive.ServiceReturnObjectSearch[i];
1702                }
1703            }
1704        }       
1705    }
1706    return(rtn_obj);
1707}
1708
1709
1710MailArchiver.prototype.tagMessage = function(taglist){
1711    try{
1712        if(!taglist)
1713            taglist = expresso_mail_archive.taglist;
1714        //ArchiveServices.tagMessages(expresso_mail_archive.tagMessagesOperationOK, expresso_mail_archive.tagMessagesOperationFailure, sessid, taglist);
1715        ArchiveServices.tagMessages(expresso_mail_archive.tagMessagesOperationOK, expresso_mail_archive.tagMessagesOperationFailure, expresso_mail_archive.session.id, taglist);
1716    } catch (e){
1717        //window.alert('TagMessage fails at: ' + (e.description)?e.description:e);
1718        expresso_mail_archive.getFaultInfo();
1719    }     
1720}
1721
1722MailArchiver.prototype.tagMessagesOperationOK = function(serviceData){
1723    //ajustar os contadores de lida/nao lida etc...
1724    if((expresso_mail_archive.currenttag != '') && (expresso_mail_archive.tagmsg == true)){
1725        write_msg(get_lang('Messages marked as "%1"', get_lang(expresso_mail_archive.currenttag)));
1726        expresso_mail_archive.tagmsg = false;
1727    }
1728   
1729    expresso_mail_archive.currenttag = "";
1730    expresso_mail_archive.taglist = "";
1731
1732    //window.alert('expresso_mail_archive.folder_origin = ' + expresso_mail_archive.folder_origin  + '\nexpresso_mail_archive.current_folder = ' + get_current_folder());
1733
1734    if((expresso_mail_archive.drawdata) && (get_current_folder() == expresso_mail_archive.folder_origin)){
1735        expresso_mail_archive.drawFolderTree();
1736        expresso_mail_archive.listMessages();
1737        //expresso_mail_archive.drawdata = null;
1738        window.clearTimeout(expresso_mail_archive.progressbar);
1739    }
1740    else{
1741        /*
1742        connector.purgeCache();
1743        ttreeBox.name_folder = "local_" + expresso_mail_archive.currentfolder;
1744        draw_tree_local_folders();
1745        ttreeBox.update_folder(true);*/
1746    }
1747}
1748
1749MailArchiver.prototype.tagMessagesOperationFailure = function(serviceData){
1750    var str_tag_fail = serviceData.getReturn();
1751    expresso_mail_archive.getFaultInfo();
1752}
1753
1754MailArchiver.prototype.download_all_msg_attachments = function(msgid){
1755    var default_format = 'zip'; //tar, jar, gzip, bz2 supports too
1756    var url = expresso_mail_archive.pattern.download_compressed_attachments(msgid, default_format);
1757    //window.open(url,"mywindow","width=1,height=1,scrollbars=no");
1758    location.href = url;
1759}
1760
1761MailArchiver.prototype.download_msg_source = function (format){
1762    //Default export format is zip
1763    if(!format)
1764        format = 'zip';
1765   
1766    expresso_mail_archive.exportformat = format;
1767   
1768    if (openTab.type[currentTab] > 1){
1769        var msgs_id = currentTab.substring(0,currentTab.length-2,currentTab);
1770    }else{
1771        var msgs_id = get_selected_messages();
1772    }   
1773   
1774    var vetmsg = msgs_id.split(",");
1775    if(vetmsg.length > 0){
1776        var arr_msg = new Array();
1777        for(var k=0; k<vetmsg.length; k++){
1778            arr_msg.push(vetmsg[k]);
1779        }           
1780    }
1781    else var arr_msg = new Array(msgs_id);
1782   
1783    var messages_array = {"format": format, "type": 'messages', "messages": arr_msg};
1784    var texp = expresso_mail_archive.pattern.zipConfig(messages_array);
1785   
1786    if(texp != null){
1787        try{
1788            //ArchiveServices.zipMessages(expresso_mail_archive.download_mgs_sourceOperationOK, expresso_mail_archive.download_msg_sourceOperationFailure, sessid, texp);
1789            ArchiveServices.zipMessages(expresso_mail_archive.download_mgs_sourceOperationOK, expresso_mail_archive.download_msg_sourceOperationFailure, expresso_mail_archive.session.id, texp);
1790        }
1791        catch(e){
1792            //window.alert('Export local messages fails: ' + (e.description)?e.description:e);
1793            expresso_mail_archive.getFaultInfo();
1794        }
1795    }
1796}
1797
1798MailArchiver.prototype.download_mgs_sourceOperationOK = function(serviceData){
1799  if(serviceData.getReturn().length > 0){
1800      window.location.href = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/temp/mails_" + serviceData.getReturn() + '.' + expresso_mail_archive.exportformat;
1801  }
1802  else{
1803     
1804  }
1805}
1806
1807MailArchiver.prototype.download_mgs_sourceOperationFailure = function(serviceFail){
1808  window.alert('ZipMessages FAIL:' + serviceFail.getReturn()); 
1809}
1810
1811MailArchiver.prototype.export_local_messages = function(folderid, recursive, format){
1812    //Default export format is zip
1813    if(!format)
1814        format = 'zip';
1815   
1816    expresso_mail_archive.exportformat = format;   
1817    if(folderid == 'root')//export root local folder
1818        var messages_array = {"format": format, "type": 'folder', "recursive" : true, "messages": ""};
1819    else//export local folder entry
1820        var messages_array = {"format": format, "type": 'folder', "recursive" : recursive, "messages": folderid};
1821    var texp = expresso_mail_archive.pattern.zipConfig(messages_array);
1822   
1823    if(texp != null){
1824        try{
1825            ArchiveServices.zipMessages(expresso_mail_archive.download_mgs_sourceOperationOK, expresso_mail_archive.download_msg_sourceOperationFailure, expresso_mail_archive.session.id, texp);
1826        }
1827        catch(e){
1828            //window.alert('Export local messages fails: ' + (e.description)?e.description:e);
1829            expresso_mail_archive.getFaultInfo();
1830        }
1831    }   
1832}
1833
1834MailArchiver.prototype.updateCounter = function(a,b){
1835    //window.alert('updateCounter reached');
1836
1837    if(((a) && (b)) || ((parseInt(a)==0)&&(parseInt(b)==0))){
1838        //Element("tot_m").innerHTML = a;
1839        Element('new_m').innerHTML = (b >= 0) ? '<font color="RED">'+b+'</font>' : 0;
1840        return;
1841    }
1842   
1843    if(expresso_mail_archive.update_counters == true){
1844        connector.purgeCache();
1845        var elm_tree = Element('llocal_'+expresso_mail_archive.folder.id+'tree_folders');
1846       
1847        if(elm_tree){
1848       
1849        //search appropriate "unseen" span to handle with
1850        for(var j=0; j<elm_tree.childNodes.length; j++){
1851            if (elm_tree.childNodes[j].nodeName.toLowerCase() == 'span'){
1852                var elm = elm_tree.childNodes[j];
1853                break;
1854            }       
1855        }
1856   
1857        if(expresso_mail_archive.folder.unseen > 0){
1858            if (elm){
1859                elm.innerHTML = expresso_mail_archive.folder.unseen;
1860            }               
1861            else{
1862                var htm_el = document.createElement('font');
1863                htm_el.style.color = 'red';
1864                document.getElementById('llocal_'+expresso_mail_archive.folder.id+'tree_folders').appendChild(htm_el);   
1865                htm_el.innerHTML = '&nbsp(';
1866               
1867                var spn_el = document.createElement('span');
1868                spn_el.id = 'dftree_'+expresso_mail_archive.folder.id+'_unseen';
1869                spn_el.style.color = 'red';
1870                document.getElementById('llocal_'+expresso_mail_archive.folder.id+'tree_folders').appendChild(spn_el);
1871                spn_el.innerHTML = expresso_mail_archive.folder.unseen;
1872               
1873                var htm2_el = document.createElement('font');
1874                htm2_el.style.color = 'red';
1875                document.getElementById('llocal_'+expresso_mail_archive.folder.id+'tree_folders').appendChild(htm2_el);   
1876                htm2_el.innerHTML = ')';
1877            }
1878        }
1879        else{
1880            if(elm){
1881                var spn = elm.parentNode.parentNode;
1882                elm.parentNode.removeChild(elm.previousSibling);
1883                elm.parentNode.removeChild(elm.nextSibling);
1884                elm.parentNode.removeChild(elm);
1885            }
1886        }
1887
1888        //reset pointer to re-do working to move messages (2 folders envolved)
1889        if (expresso_mail_archive.folder_destination != null){
1890            if(expresso_mail_archive.currentfolder == expresso_mail_archive.folder_destination){
1891                expresso_mail_archive.update_counters = false;
1892            }
1893            else{
1894                //window.alert('aqui, queima o folder_destination');
1895                //expresso_mail_archive.folder_destination = null;
1896            }           
1897        }
1898        else{
1899            expresso_mail_archive.update_counters = false;
1900        }
1901    }
1902    }
1903    //no counter needs
1904    else return;
1905}
1906
1907MailArchiver.prototype.getBase64PartData = function(partid, field){
1908    var spid = new String(partid);
1909    if(parseInt(spid.length) > 0){
1910        expresso_mail_archive.tmp_att_datasource = field;
1911        try{
1912            //ArchiveServices.getRawBinaryBody(expresso_mail_archive.getBase64PartDataOK, expresso_mail_archive.getBase64PartDataFailure, sessid, partid);
1913            ArchiveServices.getRawBinaryBody(expresso_mail_archive.getBase64PartDataOK, expresso_mail_archive.getBase64PartDataFailure, expresso_mail_archive.session.id, partid);
1914        }
1915        catch(e){
1916            //window.alert('Fail to getRawBinaryBody data from part id ' + partid + ':\n' + (e.description)?e.description:e);
1917            expresso_mail_archive.getFaultInfo();
1918        }
1919    }
1920    else {
1921        return(null);
1922    }
1923}
1924
1925MailArchiver.prototype.getBase64PartDataOK = function(serviceData){
1926    var encdata = serviceData.getReturn();
1927    if(encdata.length <= 0){
1928        window.alert('Oh no: service return data is zero length...');
1929        this.tmp_att_data = null;
1930    }   
1931    else{
1932        expresso_mail_archive.tmp_att_datasource.value = encdata;
1933    }
1934}
1935
1936MailArchiver.prototype.getBase64PartDataFailure = function(serviceReturn){
1937    window.alert('There are erros on getting binary data part:' + serviceReturn.getReturn());
1938}
1939
1940MailArchiver.prototype.search = function(folders,fields){
1941    try{
1942        connector.showProgressBar();
1943        if((folders) && (fields)){
1944            expresso_mail_archive.search_queryconfig.reset();
1945            var folderlist = expresso_mail_archive.search_queryconfig.pharseFolders(folders);
1946            var filters = eval('(' + expresso_mail_archive.queryconfig.pharseSearchFields(fields) + ')');
1947
1948            if(folderlist.indexOf("#") != -1)
1949                filters.folder = folderlist.substr(0, folderlist.indexOf("#"));
1950            else
1951                filters.folder = folderlist;
1952            if(folderlist.toLowerCase().indexOf("#recursive") != -1)
1953                expresso_mail_archive.search_queryconfig.folder_recursive = true;
1954            else
1955                expresso_mail_archive.search_queryconfig.folder_recursive = false;
1956
1957            expresso_mail_archive.querydata = expresso_mail_archive.search_queryconfig.query(filters);
1958           
1959            //var query_data = '<?xml version="1.0" encoding="UTF-8"?><query subject="teste"><folder id="inbox"/><order asc="date"/></query>';
1960            ArchiveServices.listMessages(expresso_mail_archive.searchOperationOK, expresso_mail_archive.searchOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.querydata);       
1961        }
1962        //changing order view criteria (sorting result)
1963        else{   
1964            ArchiveServices.listMessages(expresso_mail_archive.searchOperationOK, expresso_mail_archive.searchOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.querydata);       
1965        }
1966    }catch (e){
1967        expresso_mail_archive.getFaultInfo();
1968    }
1969}
1970
1971MailArchiver.prototype.searchOperationOK = function(returnService){
1972    if(returnService.getReturn().length > 0){
1973        var msglist = new Array();
1974        var msglist2 = new Array();
1975        expresso_mail_archive.ServiceReturnObjectSearch = new Array();
1976
1977        for(var i=0; i< returnService.getReturn().length; i++){
1978            var ExpSerialized = expresso_mail_archive.pattern.toExpressoSearchHeader(returnService.getReturn()[i]);
1979            var ExpSerialized2 = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]);
1980            var msgitem = connector.unserialize(ExpSerialized);
1981            var msgitem2 = connector.unserialize(ExpSerialized2);
1982     
1983            msglist.push(msgitem);//usando connector.unserialize sobre o header mapeado no layout abaixo
1984            msglist2.push(msgitem2);
1985            expresso_mail_archive.ServiceReturnObjectSearch.push(returnService.getReturn()[i]); //add each one service return data into this embeded object array
1986           
1987        }
1988        msglist["num_msgs"] = returnService.getReturn().length;
1989        msglist2["num_msgs"] = returnService.getReturn().length;
1990           
1991        //expresso_mail_archive.queryresult = msglist;       
1992        expresso_mail_archive.search_queryresult = msglist;   
1993        //expresso_mail_archive.messageslisted = msglist2;
1994        expresso_mail_archive.search_message_list = msglist2;
1995        //window.alert('temos ' + expresso_mail_archive.search_message_list.length + ' mensagens de resultado da pesquisa mapeadas em memï¿œria');
1996    }
1997    else{
1998        expresso_mail_archive.ServiceReturnObjectSearch = null;
1999        expresso_mail_archive.search_queryresult        = null;
2000        expresso_mail_archive.search_message_list       = null;
2001        expresso_mail_archive.messageslisted            = null;
2002        expresso_mail_archive.queryresult               = null;
2003    }
2004    connector.hideProgressBar();
2005}
2006
2007MailArchiver.prototype.searchOperationFailure = function(){
2008    write_msg(get_lang('MailArchiver search operation fails', true));
2009    expresso_mail_archive.ServiceReturnObjectSearch = null;
2010    expresso_mail_archive.search_queryresult        = null;
2011    expresso_mail_archive.search_message_list       = null;
2012    expresso_mail_archive.messageslisted            = null;
2013    expresso_mail_archive.queryresult               = null;
2014    connector.hideProgressBar();
2015}
2016
2017MailArchiver.prototype.getAuthId = function(){
2018    var handler_get_logon = function(data){
2019        if(data){
2020            expresso_mail_archive.balancerid = data[0];
2021            expresso_mail_archive.sessionid = data[1];
2022            expresso_mail_archive.logonid = new Array(data[2],data[3]);
2023            expresso_mail_archive.login();
2024        }
2025        else{
2026            window.alert('Login credentials call failure');
2027            expresso_mail_archive.session = null;
2028        }
2029    }
2030    cExecute("$this.user.get_mailarchiver_authid",handler_get_logon);     
2031}
2032
2033MailArchiver.prototype.login = function(){
2034    try{
2035        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);
2036    }
2037    catch(e){
2038        expresso_mail_archive.getFaultInfo();
2039    }
2040}
2041
2042MailArchiver.prototype.loginOperationOK = function(returnService){
2043    if((typeof(returnService.getReturn()) == 'object') && (returnService.getReturn() != null)){
2044        expresso_mail_archive.session = new Object();
2045        expresso_mail_archive.session.expiration = returnService.getReturn().getExpiration();
2046        expresso_mail_archive.session.id = returnService.getReturn().getId();
2047        expresso_mail_archive.session.permissions = returnService.getReturn().getPermissions();
2048        expresso_mail_archive.CreateDefaultStructrure();
2049    }
2050    else{
2051        //not logged in MailArchiver
2052        expresso_mail_archive.session = null;
2053        write_msg(get_lang('MailArchiver user login fail', true));
2054        expresso_mail_archive.enabled = false;
2055        expresso_mail_archive.timer=null;
2056        expresso_mail_archive.interval = 500;
2057        ArchiveServices = null;
2058        connector.purgeCache();       
2059        draw_tree_folders();
2060        //expresso_mail_archive.DeactivateStatusListener(expresso_mail_archive);
2061    }
2062}
2063
2064MailArchiver.prototype.getFolderCounters = function(){
2065    var vetreturn = new Array();
2066    /*for(var k=0; k<expresso_mail_archive.folders.length; k++){
2067        if(expresso_mail_archive.folders[k]["id"] == expresso_mail_archive.currentfolder){
2068            vetreturn.push(expresso_mail_archive.folders[k]["messages"], expresso_mail_archive.folders[k]["unseen"]);
2069            break;
2070        }
2071    }*/
2072    vetreturn.push(expresso_mail_archive.folder.nummessages, expresso_mail_archive.folder.unseen);
2073    return(vetreturn);
2074}
2075
2076MailArchiver.prototype.setEmbeddedLink = function(){
2077    var img_objects = document.getElementsByTagName('img');
2078    for(var k = 0; k < img_objects.length; k++){
2079        if(img_objects[k].name.indexOf('embedded_img_') != -1) {
2080            var obj_link = img_objects[k].name.split('embedded_img_');
2081            var txt_link = obj_link[1];
2082            var img_base_link = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/temp/" + txt_link;
2083            img_objects[k].src = img_base_link;
2084        }
2085    }
2086}
2087/*
2088MailArchiver.prototype.getFolderPath = function(folder){
2089    try{
2090        ArchiveServices.getFolderInfo(expresso_mail_archive.getFolderPathOperationOK, expresso_mail_archive.getFolderPathOperationFailure, expresso_mail_archive.session.id, folder);
2091    }
2092    catch(e){
2093        window.alert('getFolderPath fails');
2094    }
2095}
2096
2097MailArchiver.prototype.getFolderPathOperationOK = function(serviceReturn){
2098    window.alert('service return from getFolderPathOperationOK = ' + serviceReturn().getFolderPath());
2099    if(serviceReturn().length>0){
2100        window.alert('ok');
2101    }
2102    else{
2103        window.alert('nope');
2104    }
2105}
2106
2107MailArchiver.prototype.getFolderPathOperationFailure = function(serviceFault){
2108    window.alert('fails at gettting folder path');
2109}
2110*/
2111
2112MailArchiver.prototype.getMessageInfo = function(msgId){
2113    try{
2114        ArchiveServices.getMessageInfo(expresso_mail_archive.getMessageInfoOperationOK, expresso_mail_archive.getMessageInfoOperationFailure, expresso_mail_archive.session.id, msgId);
2115    }
2116    catch(e){
2117        window.alert('getMessageInfo fails');
2118    }   
2119}
2120
2121MailArchiver.prototype.getMessageInfoOperationOK = function(serviceReturn){
2122    //window.alert('service return from getMessageInfoOperationOK = ' + serviceReturn.getReturn() + '\n' + typeof(serviceReturn.getReturn()) + '\n' + print_r(serviceReturn.getReturn()));
2123    if(typeof(serviceReturn.getReturn() == 'object')){
2124        var ExpSerialized2 = expresso_mail_archive.pattern.toExpressoHeader(serviceReturn.getReturn());
2125        var msgitem2 = connector.unserialize(ExpSerialized2);
2126        expresso_mail_archive.messageslisted.push(msgitem2);   
2127        window.alert('vai chamar de volta o getMessageHeaders com: \nid => ' + serviceReturn.getReturn().getId());
2128        expresso_mail_archive.getMessageHeaders(serviceReturn.getReturn().getId());
2129    }
2130    else{
2131        window.alert('getMessageInfoOperationOK nope');
2132    }
2133}
2134
2135MailArchiver.prototype.turnOffLocalTreeStructure = function (){
2136     draw_new_tree_folder(); 
2137}
2138
2139MailArchiver.prototype.getMessageInfoOperationFailure = function(serviceFault){
2140    window.alert('fails at gettting message info');
2141}
2142
2143MailArchiver.prototype.loginOperationFailure = function(ServiceFaillure){
2144    write_msg(get_lang('MailArchiver login operation fail', true));
2145}
2146
2147MailArchiver.prototype.logout = function(){
2148    write_msg(get_lang('MailArchiver user logged out', true));
2149}
2150/*
2151 *The all pourpose JavaScript variable, used by all related functionalityes at
2152 *Expresso Mail to handle this object at user gui.
2153 */
2154
2155var expresso_mail_archive;
2156expresso_mail_archive = new MailArchiver();
2157-->
Note: See TracBrowser for help on using the repository browser.