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

Revision 7261, 93.5 KB checked in by thiago, 12 years ago (diff)

Ticket #3088 - Uma parte da exportação de mensagem foi concluida.

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