source: sandbox/expressoMail1_2/MailArchiver/2.2/expressoMail1_2/js/mail_archiver.js @ 5085

Revision 5085, 47.9 KB checked in by fernando-alberto, 13 years ago (diff)

Ticket #1269 - Desenvolvimento da nova solucao de arquivamento local MailArchiver?, tags para arquivamento

  • Property svn:eol-style set to native
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
17var sessid = 'sessionId';
18
19function IterateIt(){
20    var deph = 0;
21    var returnstr = "";
22
23    for (i in arguments[0]){
24      if((arguments[0][i]) && (arguments[0][i].visited == null)){
25          arguments[0][i].visited = true;
26
27          if(typeof(arguments[0][i]) == 'object'){
28            returnstr += '+ Property "' + i + '"[object ' + deph + ']\n<br>';
29            //returnstr += IterateIt(arguments[0][i]);
30            deph++;
31          }
32      }
33    else returnstr += 'Property "' + i + '" -> ' + arguments[0][i] + ' [' + typeof(i) + ']\n<br>';
34    }
35    return (returnstr);
36}
37
38function dump(arr,level) {
39        var dumped_text = "";
40        if(!level) level = 0;
41       
42        //The padding given at the beginning of the line.
43        var level_padding = "";
44        for(var j=0;j<level+1;j++) level_padding += "    ";
45       
46        if(typeof(arr) == 'object') { //Array/Hashes/Objects
47                for(var item in arr) {
48                        var value = arr[item];
49                       
50                        if(typeof(value) == 'object') { //If it is an array,
51                                dumped_text += level_padding + "'" + item + "' ...\n<br>";
52                                dumped_text += dump(value,level+1);
53                        } else {
54                                dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n<br>";
55                        }
56                }
57        } else { //Stings/Chars/Numbers etc.
58                dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
59        }
60        return dumped_text;
61}
62
63function zeroFill(d){
64    if(parseInt(d) < 10)
65        return('0' + d);
66    else
67        return(d);
68}
69
70/**
71 * Concatenates the values of a variable into an easily readable string
72 * by Matt Hackett [scriptnode.com]
73 * @param {Object} x The variable to debug
74 * @param {Number} max The maximum number of recursions allowed (keep low, around 5 for HTML elements to prevent errors) [default: 10]
75 * @param {String} sep The separator to use between [default: a single space ' ']
76 * @param {Number} l The current level deep (amount of recursion). Do not use this parameter: it's for the function's own use
77 */
78function print_r(x, max, sep, l) {
79
80        l = l || 0;
81        max = max || 100;
82        sep = sep || ' ';
83
84        if (l > max) {
85                return "[WARNING: Too much recursion]\n";
86        }
87
88        var
89                i,
90                r = '',
91                t = typeof x,
92                tab = '';
93
94        if (x === null) {
95                r += "(null)\n";
96        } else if (t == 'object') {
97
98                l++;
99
100                for (i = 0; i < l; i++) {
101                        tab += sep;
102                }
103
104                if (x && x.length) {
105                        t = 'array';
106                }
107
108                r += '(' + t + ") :\n";
109
110                for (i in x) {
111                        try {
112                                r += tab + '[' + i + '] : ' + print_r(x[i], max, sep, (l + 1));
113                        } catch(e) {
114                                return "[ERROR: " + e + "]\n";
115                        }
116                }
117
118        } else {
119
120                if (t == 'string') {
121                        if (x == '') {
122                                x = '(empty)';
123                        }
124                }
125
126                r += '(' + t + ') ' + x + "\n";
127
128        }
129
130        return r;
131
132};
133var_dump = print_r;
134
135
136
137//Main object structure: object property data definition
138function MailArchiver() {
139    this.enabled = null;
140    this.interval = 500;
141    this.timer = null;
142    this.counter = 0;
143    this.service_count = 0;
144    this.service_count_tryouts = 0;
145    this.message_list = new Array();
146    this.messageslisted = new Array();
147    this.total_messages = 0;
148    this.messages_processed = 0;
149    this.messages_fail = 0;
150    this.folder_origin = null;
151    this.folder_destination = null;
152    this.folders = null;
153    this.currentfolder = 'local_root';
154    this.currentmessage = null;
155    this.drawdata = null;
156    this.onprocess = false;
157    this.folder_data = false;
158    this.queryconfig = new MAQueryConfig();
159    this.pattern = new MAPattern();
160    this.messagesourcehandler = null;
161    this.ServiceReturnObject = null;
162    this.specialfolders = {
163                            "inbox":"local_inbox",
164                            "sent":"local_sent",
165                            "drafts":"local_drafts",
166                            "outbox":"local_outbox",
167                            "trash":"local_trash"
168                          };                         
169    this.unarchivecounter = 0;
170    this.unarchievefolder = null;
171    this.unarchievenewfolder = null;
172    this.taglist = null;                         
173}
174
175//Invoked at some possible MA crash issue
176MailArchiver.prototype.resetObject = function(){
177    expresso_mail_archive.message_list = 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}
185
186/*SystemCheck method: test if MailArchive is installed and/or running at user workstation
187*Try to get a instance of ArchiveServices object - the handler of services provided by
188*the MailArchive services provider interface, from user workstation.
189*/
190MailArchiver.prototype.SystemCheck = function(){
191    expresso_mail_archive.enabled = ((ArchiveServices) ? true : false);
192    if(expresso_mail_archive.enabled){
193       var reqHandler = new cxf_cors_request_object();
194       reqHandler.init();
195       this.messagesourcehandler = reqHandler.handler; 
196    }
197}
198
199//Turns on the listener timer to check services availability
200MailArchiver.prototype.ActivateStatusListener = function(obj){
201    if (document.getElementById('mail_archiver_retry'))
202        tem_tag = true;
203    else
204        tem_tag = false;
205    try{
206        if (obj.enabled){
207            obj.interval = 500; //set default timer to 1ms (imediate lauching)
208            draw_footer_box(get_current_folder());
209            obj.getServicesStatus(obj);
210        }
211        else{
212            throw "this is not enabled: " + obj;
213            window.alert('Nope: obj.enabled is not true...');
214        }
215    }
216    catch (e){
217        window.alert('ActivateStatusListener error: ' + e);
218    }
219}
220
221//Turns off the service status listener, at a crash issue
222MailArchiver.prototype.DeactivateStatusListener = function(obj){
223    window.clearInterval(obj.timer);
224    obj.enabled = null;
225    obj.timer=null;
226    obj.interval = 500;
227    ArchiveServices = null;
228    connector.purgeCache();
229   
230    draw_footer_box(get_current_folder());
231    auto_refresh();
232    if(document.getElementById('mail_archiver_retry')){
233        document.getElementById('mail_archiver_retry').parentNode.removeChild(document.getElementById('mail_archiver_retry'));
234    }
235    else{
236        //Redraw "Offline" linkage, intended to recoonect MailArchiver link   
237        connector.purgeCache();
238        ttreeBox.name_folder = "root";
239        ttreeBox.update_folder();
240        draw_tree_local_folders();
241        ttreeBox.update_folder();
242        change_folder('INBOX', 'INBOX', ttreeBox); 
243    }
244}
245
246//ServiceStatus callback OK
247MailArchiver.prototype.getServicesStatusOK = function(serviceData){
248    //window.alert('getServicesStatusOK com servicedata = ' + serviceData.getReturn());
249    expresso_mail_archive.service_count = expresso_mail_archive.counter;
250    if ((serviceData.getReturn() == "STARTED") || (serviceData.getReturn() == "RUNNING")){
251        //If there is no timer activated to services check interval, set it up.
252        if(expresso_mail_archive.enabled){
253           if(expresso_mail_archive.timer == null){
254                expresso_mail_archive.interval = 5000;
255                expresso_mail_archive.timer = window.setInterval(expresso_mail_archive.getServicesStatus, expresso_mail_archive.interval);
256                var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders', folderName: 'local_root'};
257                expresso_mail_archive.currentfolder = 'local_root';
258                expresso_mail_archive.drawdata = drawinginfo;
259                expresso_mail_archive.getFoldersList();
260           }
261        }
262        else{
263            window.clearInterval(expresso_mail_archive.timer);
264            write_msg(get_lang('Your preferences are setting to use local messages, but Mail Archiver does not seems to be running or installed at this workstation. By now, we are turning off this feature. Check it out!'),true);
265        }
266    }
267    else{
268        expresso_mail_archive.enabled = false;
269        window.clearInterval(expresso_mail_archive.timer);
270        write_msg(get_lang('Your preferences are setting to use local messages, but Mail Archiver does not seems to be running or installed at this workstation. By now, we are turning off this feature. Check it out!'),true);
271    }
272    //window.alert('fooArc set to null');
273    fooArc = null;
274}
275
276//Dettach resources handler
277MailArchiver.prototype.DeactivateResources = function(obj){   
278    if(obj.timer)
279        window.clearInterval(obj.timer);
280    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!'));
281    obj.DeactivateStatusListener(obj);
282    return;
283}
284
285//Services Status Fail callback
286MailArchiver.prototype.getServicesStatusFailure = function(serviceData){
287    window.alert('getServicesStatusFailure incomming');
288    window.alert('getServicesStatusFailure feature: ' + serviceData);
289}
290
291//Service Status handler
292MailArchiver.prototype.getServicesStatus = function(obj){
293    //window.alert('em getServicesStatus obj.enabled = ' + obj.enabled + '\nArchiveServices.enabled = ' + ArchiveServices.enabled + '\nArchiveServices = ' + ArchiveServices);
294    try{
295        //window.alert('on try 01');
296        expresso_mail_archive.service_count_tryouts++;
297        //window.alert('service_count_tryouts = ' + expresso_mail_archive.service_count_tryouts + '\nservice_count = ' + expresso_mail_archive.service_count);
298       
299        if((expresso_mail_archive.service_count_tryouts - expresso_mail_archive.service_count) > 1){
300            //window.alert('problema -> deve desligar');
301            expresso_mail_archive.DeactivateResources(expresso_mail_archive);           
302        }
303        else
304            //window.alert('ok');
305       
306        var fooArc = new web_service_mailarchiver_serpro__ArchiveServices();
307        fooArc.url = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/arcserv/ArchiveServices";
308        //window.alert('typeof(fooArc) = ' + typeof(fooArc) + '\nfooArc = ' + fooArc);
309        if(fooArc){
310            try{
311                //window.alert('on try 02');
312                fooArc.getState(expresso_mail_archive.getServicesStatusOK, expresso_mail_archive.getServicesStatusFailure, "true");
313                fooArc = null;
314            }catch (e){
315                throw "Service failure status: getState";
316            }
317        }
318        else {
319            throw "No ArchiveServices object present. Sorry, but leaving now...";
320        }
321    }catch (e){
322        //window.alert('getServiceStatus exception:' + e);
323    }
324    expresso_mail_archive.counter = expresso_mail_archive.counter +1;
325}
326
327/*Restart method: re-initializes all the Mail Archive structure
328 **/
329MailArchiver.prototype.Restart = function(obj){
330    obj.SystemCheck();
331    obj.ActivateStatusListener(obj);
332    auto_refresh();
333}
334
335/*Startup method: initializes all the Mail Archive structure to work so far as possible
336 *Looks like the old 'gears_init', from Gears
337 **/
338MailArchiver.prototype.Startup = function(){
339    this.SystemCheck();
340    this.ActivateStatusListener(this);
341}
342
343MailArchiver.prototype.serializeToExpresso = function(data){
344    return(connector.serialize(data));
345}
346
347MailArchiver.prototype.unserializeFromExpresso = function(data){
348    return(connector.unserialize(data));
349}
350
351
352MailArchiver.prototype.CreateMessageList = function(msg_list){
353    //window.alert('criando messagelist de arquivamento.');
354   
355//    for(var j=0; j<expresso_mail_archive.messageslisted.length; j++){
356//        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"]);
357//    }
358   
359    if((msg_list != null) && (msg_list != "") && (msg_list != " ")){
360        if (expresso_mail_archive.message_list.length == 0){
361            //Get all the messages ids by pass at msgs_id to "message_list" object array propertie - if more than one exists
362            if(msg_list.indexOf(',') != -1){
363                var tmp_list = msg_list.split(',');
364                for(var i=0; i < tmp_list.length; i++){
365                    expresso_mail_archive.message_list.push(tmp_list[i]);
366                }
367            }
368           
369            //Push message list to process the only one
370            else {
371                //window.alert('testando marcadores default...\n->Answered = ' +expresso_mail_archive.messageslisted[i]["Answered"] + '\n->Unseen = '+expresso_mail_archive.messageslisted[i]["Unseen"]);
372                expresso_mail_archive.message_list.push(msg_list);
373            }
374        }
375    }
376    //msg_list is corrupted. aborting population
377    else expresso_mail_archive.message_list = new Array();
378}
379
380
381//Archive Operation
382MailArchiver.prototype.Archive = function(source_folder,destination_folder,msgs_id){
383    //window.alert('tentando arquivar a mensagem [' + msgs_id + '], do folder ['+source_folder+'] para a pasta destino ['+destination_folder+']');
384    try{
385        document.getElementById('main_title').innerHTML = get_lang("Starting to archive messages");
386        expresso_mail_archive.CreateMessageList(msgs_id);
387       
388        var tagsHandler = function(data){
389            if(data){
390                var datah = eval(data);
391                //window.alert('unseen = ' +datah["unseen"] + '\nrecent = ' + datah["recent"] + '\nflagged = ' + datah["flagged"] + '\ndraft = ' + datah["draft"] + '\nanswered = ' + datah["answered"] + '\ndeleted = ' + datah["deleted"] + '\nforwarded = ' + datah["forwarded"]);
392                expresso_mail_archive.taglist = datah;
393            }
394        }
395
396        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')){
397
398            //Get all tags from current archiving message
399            var pardata = "&folder=" + url_encode(current_folder)+ "&msg_number="+ expresso_mail_archive.message_list[0];
400            cExecute("$this.imap_functions.get_msg_flags", tagsHandler, pardata);
401
402            //Sets the message counter
403            expresso_mail_archive.total_messages = expresso_mail_archive.message_list.length;
404           
405            //Sets the folders properties: destination and origin
406            expresso_mail_archive.folder_origin = source_folder;
407            //window.alert('substr(0,5) = ' + destination_folder.substr(0,5));
408            if(destination_folder.substr(0,5) == 'local')
409                expresso_mail_archive.folder_destination = destination_folder.substr(6,destination_folder.length);
410            else
411                expresso_mail_archive.folder_destination = destination_folder;         
412           
413            var fcaption = expresso_mail_archive.folder_destination;
414   
415            for (var w=0; w < expresso_mail_archive.folders.length; w++){
416                if(expresso_mail_archive.folders[w]["id"] == expresso_mail_archive.folder_destination){
417                    fcaption = expresso_mail_archive.folders[w]["name"];
418                    break;
419                }
420            }
421           
422            //window.alert('destination_folder = ' + expresso_mail_archive.folder_destination);
423
424            var arch_handler = function(data){
425                //Store the message source from Ajax request by now (string data)
426                var js_var = new String(data);
427                try{
428                    //Archive services needs session id, message source and destination folder
429                    document.getElementById('main_title').innerHTML = get_lang("Archiving messages on folder %1...", fcaption);
430                    ArchiveServices.archive(expresso_mail_archive.getArchiveOperationOK, expresso_mail_archive.getArchiveOperationFailure, sessid, data ,expresso_mail_archive.folder_destination);
431                }
432                catch(e){
433                    window.alert('ArchiveServices.archive error: ' + e);
434                }
435            }
436           
437            document.getElementById('main_title').innerHTML = get_lang("Archiving message %1 of %2", expresso_mail_archive.messages_processed, expresso_mail_archive.message_list.length);
438            cExecute("$this.exporteml.js_source_var",arch_handler,"folder="+url_decode(source_folder)+"&msgs_to_export="+expresso_mail_archive.message_list[0]);
439        }
440        else throw('Ops. Message list stack is empty!\nMessage list count = ' + expresso_mail_archive.message_list.length + '\nFirst child = ' + expresso_mail_archive.message_list[0]);
441    }
442    catch(e){
443        window.alert(get_lang("Archive error: %1", (e.description)?e.description:e));
444    }
445}
446
447//Archive callback OK
448MailArchiver.prototype.getArchiveOperationOK = function(status_message){
449    //message must be tagged
450    var arcid = status_message.getReturn().getId();
451    var tlist = expresso_mail_archive.pattern.tagConfig(expresso_mail_archive.taglist, arcid);
452    if(tlist != null){
453        try{
454            ArchiveServices.tagMessages(expresso_mail_archive.tagMessagesOperationOK, expresso_mail_archive.tagMessagesOperationFailure, sessid, tlist);
455        }catch (e){
456            window.alert('ArchiveServices.tagMessages failed at: ' + (e.description)?e.description:e);
457        }
458    }
459    //archivement allready done, update controll data and interface
460    expresso_mail_archive.messages_processed++;
461    if(expresso_mail_archive.message_list.length > 1){
462       document.getElementById('main_title').innerHTML = get_lang("Message %1 of %2 successfully archived", expresso_mail_archive.messages_processed, expresso_mail_archive.total_messages);
463       expresso_mail_archive.message_list.shift();
464       expresso_mail_archive.Archive(expresso_mail_archive.folder_origin, expresso_mail_archive.folder_destination, expresso_mail_archive.message_list);
465    }
466    else{
467        document.getElementById('main_title').innerHTML = get_lang("All done. End of archive messages operation");
468        expresso_mail_archive.resetObject();
469        window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);
470    }
471}
472//Archive callback Fail
473MailArchiver.prototype.getArchiveOperationFailure = function(error_message){
474    window.alert('Hi! getArchiveOperationFailure comes with ' + error_message.getReturn());
475    window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);
476}
477
478/**
479 *Unarchieve Message
480 *
481 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
482 *
483 *@param folder Original Folder of the message
484 *@param new_folder The new folder of the message
485 *@param msgs_number id of the messages
486 */
487MailArchiver.prototype.unarchieve = function (folder, new_folder, msgs_number){
488    try{
489        expresso_mail_archive.message_list = new Array();
490        expresso_mail_archive.CreateMessageList(msgs_number);
491        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
492            expresso_mail_archive.unarchivecounter = 0;
493            expresso_mail_archive.unarchievefolder = folder;
494            expresso_mail_archive.unarchievenewfolder = new_folder;
495            expresso_mail_archive.unarchieveHandler();
496        }
497        else{
498            write_msg(get_lang('No selected message.'));
499        }
500    }
501    catch (e){
502        write_msg(get_lang('Unarchive error: ' + e));
503    }
504}
505
506/**
507 *
508 *Unarchieve Message Handler
509 *
510 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
511 *
512 **/
513MailArchiver.prototype.unarchieveHandler = function(){
514    var email = 'http://127.0.0.1:4333/mail/' + expresso_mail_archive.unarchievefolder.substr(6).charAt(0).toUpperCase() + expresso_mail_archive.unarchievefolder.substr(7) + '/'+ expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter] + '.eml';
515    expresso_mail_archive.messagesourcehandler.onreadystatechange = function(){
516        if (expresso_mail_archive.messagesourcehandler.readyState==4 && expresso_mail_archive.messagesourcehandler.status==200){
517            for (var w=0; w < expresso_mail_archive.messageslisted.length; w++){
518                if(expresso_mail_archive.messageslisted[w]["msg_number"] == expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]){
519                    var timestamp = expresso_mail_archive.messageslisted[w]["timestamp"];
520                    var flags  = "#@#@#@" + (expresso_mail_archive.messageslisted[w]["Answered"]!=undefined)?'A':'';
521                        flags +=            (expresso_mail_archive.messageslisted[w]["Draft"]   !=undefined)?'D':'';
522                        flags +=            (expresso_mail_archive.messageslisted[w]["Flagged"] !=undefined)?'F':'';
523                        flags +=            (expresso_mail_archive.messageslisted[w]["Unseen"]  !=undefined)?'U':'';
524                    break;
525                }
526            }
527            var source = "#@#@#@" + escape(expresso_mail_archive.messagesourcehandler.responseText);
528            //var flags+="#@#@#@"+ mail["Answered"] +":"+mail["Draft"]+":"+mail["Flagged"]+":"+mail["Unseen"];
529            var params =
530            "&folder="      + expresso_mail_archive.unarchievenewfolder +
531            "&source="      + source +
532            "&timestamp="   + timestamp +
533            "&flags="       + flags;
534            var handler_unarchive = function(){
535                expresso_mail_archive.unarchieveController();
536            }
537            write_msg(get_lang('Unarchieving ' + (expresso_mail_archive.unarchivecounter + 1) + ' of ' +  expresso_mail_archive.message_list.length));
538            cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params);
539        }
540    }
541    write_msg(get_lang('Opening message ' + (expresso_mail_archive.unarchivecounter + 1) + ' for Unarchieve'));
542    expresso_mail_archive.messagesourcehandler.open("GET", email, true);
543    expresso_mail_archive.messagesourcehandler.send();
544}
545
546/**
547 *
548 *Unarchieve Message Controller
549 *
550 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
551 *
552 **/
553MailArchiver.prototype.unarchieveController = function(){
554    expresso_mail_archive.unarchivecounter++;
555    if (expresso_mail_archive.unarchivecounter < expresso_mail_archive.message_list.length){
556        expresso_mail_archive.unarchieveHandler();
557    }
558    else{
559        if (expresso_mail_archive.message_list.length==1){
560            write_msg(get_lang('Message successfully unarchived'));
561        }
562        else{
563            write_msg(get_lang('Messages successfully unarchived'));
564        }
565    }
566}
567
568/**
569 *Archieve Delete Message
570 *
571 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
572 *
573 *@param msgs_number Unique identification of the message
574 */
575MailArchiver.prototype.deleteMessages = function(msgs_number){
576    try{
577        expresso_mail_archive.CreateMessageList(msgs_number);
578        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
579            ArchiveServices.deleteMessages(expresso_mail_archive.deleteMessagesOperationOK,
580                                           expresso_mail_archive.deleteMessagesOperationFailure,
581                                           sessid,
582                                           expresso_mail_archive.message_list);
583        }
584        else{
585            write_msg(get_lang('No selected message.'));
586        }
587    }
588    catch (e){
589        window.alert('Delete error: ' + e);
590    }
591}
592
593/**
594 *Archieve Delete Message Ok
595 *
596 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
597 *
598 */
599MailArchiver.prototype.deleteMessagesOperationOK = function(){
600    var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders'};
601    expresso_mail_archive.drawdata = drawinginfo;
602    expresso_mail_archive.drawFolderTree();
603    expresso_mail_archive.listMessages();
604    if(expresso_mail_archive.message_list.length > 1){
605        write_msg(get_lang("The messages were deleted."));
606    }else{
607        write_msg(get_lang("The message was deleted."));
608    }
609}
610
611/**
612 *Archieve Delete Message Operation Failure
613 *
614 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
615 *
616 */
617MailArchiver.prototype.deleteMessagesOperationFailure = function(error_message){
618    if(expresso_mail_archive.message_list.length > 1){
619        write_msg(get_lang("Error deleting messages.") + ' ' + error_message.getReturn());
620    }else{
621        write_msg(get_lang("Error deleting message.") + ' ' + error_message.getReturn());
622    }
623}
624
625/**
626 *Move message
627 *
628 *@param folder Folder where the message will be moved
629 *@param msgs_number Unique Id of the message
630 *
631 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
632 *
633 */
634MailArchiver.prototype.moveMessages = function(folder, msgs_number){
635    try{
636        expresso_mail_archive.CreateMessageList(msgs_number);
637        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
638            ArchiveServices.moveMessages(expresso_mail_archive.moveMessagesOperationOK,
639                                           expresso_mail_archive.moveMessagesOperationFailure,
640                                           sessid,
641                                           expresso_mail_archive.message_list,
642                                           folder
643                                       );
644        }
645        else{
646            write_msg(get_lang('No selected message.'));
647        }
648    }
649    catch (e){
650        window.alert('Move error: ' + e);
651    }
652}
653
654/**
655 *Move Message Ok
656 *
657 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
658 *
659 */
660MailArchiver.prototype.moveMessagesOperationOK = function(){
661    var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders'};
662    expresso_mail_archive.drawdata = drawinginfo;
663    expresso_mail_archive.drawFolderTree();
664    expresso_mail_archive.listMessages();
665    if(expresso_mail_archive.message_list.length > 1){
666        write_msg(get_lang("The messages were moved."));
667    }else{
668        write_msg(get_lang("The message was moved."));
669    }
670}
671
672/**
673 *Move Message Failure
674 *
675 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
676 *
677 */
678MailArchiver.prototype.moveMessagesOperationFailure = function(error_message){
679    if(expresso_mail_archive.message_list.length > 1){
680        write_msg(get_lang("Error moving messages.") + ' ' + error_message.getReturn());
681    }else{
682        write_msg(get_lang("Error moving message.") + ' ' + error_message.getReturn());
683    }
684}
685
686
687//getFolderList Operation
688MailArchiver.prototype.getFoldersList = function(basefolder){   
689    try{
690        ArchiveServices.listFolders(expresso_mail_archive.getFoldersListOperationOK, expresso_mail_archive.getFoldersListOperationFailure, sessid, basefolder);
691    }
692    catch (e){
693        //window.alert('AQUI MESMO\nOps...List folders fails at:\n' + e.description);
694    }
695}
696
697//getFolderList callback OK
698MailArchiver.prototype.getFoldersListOperationOK = function(folderlist){
699    //Internal variable used to map all XML data return from WS invokated
700    var lfolders = new Array();
701   
702    //Mapping XML data to a handler data structure
703    if(folderlist.getReturn().length > 0){
704        var lfolders = new Array();
705        for(i=0; i<folderlist.getReturn().length; i++){
706            (folderlist.getReturn()[i].getFolderCount() > 0 ) ? folderChild = 1 : folderChild = 0;
707
708            //Store folder data at this format: {folder name, number of messages contained, folder has child nodes, folder id, folder parent id, folder full path}
709            //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());
710            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()};
711            //window.alert('folder ' + folderData.name + ' tem ' + folderData.messages + ' mensagens.');
712            lfolders.push(folderData);
713        }
714
715        //Sets folders property at main object
716        expresso_mail_archive.folders = lfolders;
717       
718        if(expresso_mail_archive.folders[0]["parentid"] == "")
719            expresso_mail_archive.currentfolder = 'local_root';
720        else
721            expresso_mail_archive.currentfolder = expresso_mail_archive.folders[0]["parentid"];
722       
723        //Folders dumping :)
724        /*var strFolders = '---';
725        for (var w=0; w < expresso_mail_archive.folders.length; w++){
726            strFolders += '\nFolder ' + w + ' -->';
727            for (x in expresso_mail_archive.folders[w]){
728                strFolders += '\n----------' + x + ':= ' + expresso_mail_archive.folders[w][x];
729            }
730            strFolders += '\n<---';
731        }
732        strFolders += '\n---';
733        alert(lfolders.length + ' folders mapeados, com default = ' + expresso_mail_archive.currentfolder + '\nfolders list:\n\n' + strFolders);
734        */
735
736        //If something UI related have been flagged, handle it
737        if (expresso_mail_archive.drawdata){
738            //window.alert('com drawdata e treeName = ' + expresso_mail_archive.drawdata.treeName);
739            expresso_mail_archive.drawFolderTree();
740        }
741    }
742}
743
744//getFolderList callback Fail
745MailArchiver.prototype.getFoldersListOperationFailure = function(error, http_msg){
746    window.alert('List folders mistake:' + error + '\nhttp_error = ' + http_msg);
747}
748
749//drawFolderTree operation, if requested to
750MailArchiver.prototype.drawFolderTree = function(){
751    //window.alert('na api de foldertree');
752    var localBaseName  = 'local_';
753    var objectTree = expresso_mail_archive.drawdata.treeObject;
754    var evalobjectTree = eval(expresso_mail_archive.drawdata.treeName);
755     
756    //Add nodes to tree
757    if(typeof(evalobjectTree) == 'object'){
758    if(expresso_mail_archive.folders.length > 0){
759        //window.alert('vai adicionar ' + expresso_mail_archive.folders.length + '  elementos na tree');
760        //window.alert('arvore ja tem ' + evalobjectTree.length + ' nodos');
761        for(i=0; i<expresso_mail_archive.folders.length; i++){
762            var folder_caption;
763           
764            //Special folders treatment: Inbox, Outbox, Drafts, Sent and Trash folders
765            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')){
766                folder_caption = get_lang(expresso_mail_archive.folders[i]["name"]);
767            }
768            else{
769                folder_caption = expresso_mail_archive.folders[i]["name"];
770            }
771           
772            if(expresso_mail_archive.folders[i]["unseen"] == "0")           
773                var n_demo = new dNode({id: localBaseName + expresso_mail_archive.folders[i]["id"], caption: folder_caption, onClick: "change_folder('"+ localBaseName + expresso_mail_archive.folders[i]["id"] +"','"+ localBaseName + expresso_mail_archive.folders[i]["id"]+"', '" + expresso_mail_archive.drawdata.treeName + "')", plusSign:expresso_mail_archive.folders[i]["haschild"]});
774            else
775               //var nn = new dNode({id:data[i].folder_id, caption:lang_folder(data[i].folder_name) + '<font style=color:red>&nbsp(</font><span id="dftree_'+data[i].folder_id+'_unseen" style=color:red>'+data[i].folder_unseen+'</span><font style=color:red>)</font>', onClick:"change_folder('"+data[i].folder_id+"','"+data[i].folder_name+"')", plusSign:data[i].folder_hasChildren});
776               var n_demo = new dNode({id: localBaseName + expresso_mail_archive.folders[i]["id"], caption: folder_caption + '<font style=color:red>&nbsp(</font><span id="dftree_'+expresso_mail_archive.folders[i]["id"]+'_unseen" style=color:red>'+expresso_mail_archive.folders[i]["unseen"]+'</span><font style=color:red>)</font>', onClick: "change_folder('"+ localBaseName + expresso_mail_archive.folders[i]["id"] +"','"+ localBaseName + expresso_mail_archive.folders[i]["id"]+"', '" + expresso_mail_archive.drawdata.treeName + "')", plusSign:expresso_mail_archive.folders[i]["haschild"]});   
777         
778         //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"]});
779           
780            //Adjust the id node names
781            if(expresso_mail_archive.currentfolder){
782                if(expresso_mail_archive.currentfolder.substr(0,5) != 'local'){
783                    evalobjectTree.add(n_demo, localBaseName + expresso_mail_archive.currentfolder);
784                }
785                else{
786                    evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder);
787                }
788            }
789            else {
790                expresso_mail_archive.currentfolder = 'local_root';
791                evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder);
792            }
793        }
794        //window.alert('refrescando...');
795        //evalobjectTree.update_folder('local_root');
796    }
797    }
798}
799
800//getFaultInfo operation
801MailArchiver.prototype.getFaultInfo = function(){
802    try{
803        ArchiveServices.getFaultInfo(expresso_mail_archive.getFaultInfoOperationOK, expresso_mail_archive.getFaultInfoOperationFailure, sessid);
804    }   
805    catch(e){
806        write_msg(get_lang('getFaultInfo invoke fails = ' + e),true);
807    }
808}
809
810//getFaultInfo callback OK
811MailArchiver.prototype.getFaultInfoOperationOK = function(faultinfo){
812    try{
813        write_msg(get_lang('MailArchiver remote service reports the following error:' + faultinfo.getReturn().getSoapFaultString(), true));
814    } catch(e){
815        write_msg(get_lang('Ops! It was not possible to capture service error data.', true));
816    }
817}
818
819//getFaultInfo callback Fail
820MailArchiver.prototype.getFaultInfoOperationFailure = function(errorCode, errorDesc){
821    try{
822        write_msg(get_lang('SoapFault capture fails at:' + errorCode + ' | ' + errorDesc, true));
823    } catch(e){
824        write_msg(get_lang('Service error mapping', true));
825    }   
826}
827
828//createFolder operation
829MailArchiver.prototype.createFolder = function(parentFolder, folderName){
830   
831    try{
832        ArchiveServices.createFolder(expresso_mail_archive.createFolderOperationOK, expresso_mail_archive.createFolderOperationFailure, sessid, parentFolder, folderName);
833    }
834    catch (e){
835        window.alert('Ops...create folder fails at:\n' + e);
836    }
837   
838}
839
840//createFolder callback OK
841MailArchiver.prototype.createFolderOperationOK = function (folderObject){
842    draw_tree_local_folders();
843    ttreeBox.update_folder();   
844}
845
846//createFolder callback Fail
847MailArchiver.prototype.createFolderOperationFailure = function (message){
848    window.alert('Folder creation fails...\n->' + message.getReturn());
849}
850
851//deleteFolder operation
852MailArchiver.prototype.deleteFolder = function(folderName){
853    try{
854        ArchiveServices.deleteFolder(expresso_mail_archive.deleteFolderOperationOK, expresso_mail_archive.deleteFolderOperationFailure, sessid, folderName, true);
855    }
856    catch (e){
857        window.alert('Ops...delete folder fails at:\n' + e);
858    }
859   
860}
861
862//deleteFolder callback OK
863MailArchiver.prototype.deleteFolderOperationOK = function (folderObject){
864    window.alert('delete ok');
865    //var fo = IterateIt(folderObject);
866    write_msg(get_lang("The folder " + expresso_mail_archive.drawdata.folderName + " was successfully removed"));
867    connector.purgeCache();
868    ttreeBox.name_folder = "root";
869    ttreeBox.update_folder();
870    draw_tree_local_folders();
871    ttreeBox.update_folder();   
872}
873
874//deleteFolder callback Fail
875MailArchiver.prototype.deleteFolderOperationFailure = function (message){
876    window.alert('Folder deletion fails...\n->' + message.getReturn());
877}
878
879//renameFolder operation
880MailArchiver.prototype.renameFolder = function(folderId, newFolderName){
881    try{
882        ArchiveServices.renameFolder(expresso_mail_archive.renameFolderOperationOK, expresso_mail_archive.renameFolderOperationFailure, sessid, folderId, newFolderName);
883    }
884    catch (e){
885        window.alert('Ops...renaming folder fails at:\n' + e);
886    }
887   
888}
889
890//renameFolder callback OK
891MailArchiver.prototype.renameFolderOperationOK = function (returnService){
892    var evalobjectTree = eval(expresso_mail_archive.drawdata.treeName);
893    evalobjectTree.update_folder();
894}
895
896//renameFolder callback Fail
897MailArchiver.prototype.renameFolderOperationFailure = function (ServiceFault){
898    window.alert('Folder rename fails...\n->' + ServiceFault.getReturn());
899    alert(get_lang("cannot rename folder. try other folder name"));
900}
901
902//getFolderInfo operation
903MailArchiver.prototype.getFolderInfo = function (folderId){
904    try{
905        ArchiveServices.getFolderInfo(expresso_mail_archive.getFolderInfoOperationOK, expresso_mail_archive.getFolderInfoOperationFailure, sessid, folderId);
906    }
907    catch (e){
908        window.alert('Ops...getFolderInfo fails at:\n' + e);
909    }     
910}
911
912//getFolderInfo callback OK
913MailArchiver.prototype.getFolderInfoOperationOK = function(returnService){
914   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()};
915   expresso_mail_archive.folder = folder_info;
916}
917
918//getFolderInfo callback Fail
919MailArchiver.prototype.getFolderInfoOperationFailure = function (ServiceFault){
920    window.alert('getFolderInfo service fails...\n->' + ServiceFault.getReturn());
921    expresso_mail_archive.folder_data = true;
922}
923
924function foo(){
925    var a = 0;
926    a++;
927}
928
929//listMessages operation
930//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) {
931//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) {
932//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);
933MailArchiver.prototype.listMessages = function(){
934    try{
935        var folderid = expresso_mail_archive.currentfolder;
936        //window.alert('folderid = ' + folderid);
937        //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>';
938        //var testing_data_json_mapped = '{"query":{"@lowerIndex":"0", "@upperIndex":"50", "folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date", "@desc":"subject"}]}}';
939        //window.alert('Query config lower = ' + expresso_mail_archive.queryconfig.lowerIndex + ' - upper = ' + expresso_mail_archive.queryconfig.upperIndex + ' folder = ' + expresso_mail_archive.queryconfig.folder);
940        //if (expresso_mail_archive.queryconfig.folder != null)
941        var query_data = expresso_mail_archive.queryconfig.query();
942        //else
943//            var testing_data = testing_data_json_mapped;
944       
945        //window.alert('vai chamar o listMessages com testing_data = ' + testing_data);
946        expresso_mail_archive.getFolderInfo(folderid);//invoked to compute messages count     
947        //window.alert('Há ' + expresso_mail_archive.folder.nummessages +' no folder ' + expresso_mail_archive.folder.name);
948        ArchiveServices.listMessages(expresso_mail_archive.listMessagesOperationOK, expresso_mail_archive.listMessagesOperationFailure, sessid, query_data);
949    }
950    catch (e){
951        window.alert('Ops...listMessages fails at:\n' + e);
952    }
953}
954
955//listMessages callback OK
956MailArchiver.prototype.listMessagesOperationOK = function(returnService){
957    var msglist = new Array();
958    expresso_mail_archive.ServiceReturnObject = new Array();
959    //window.alert('messages data\n\n' + print_r(returnService.getReturn()));
960    /*window.alert('Dados da mensagem:\n->From ' + returnService.getReturn()[0].getFrom()
961                                      +'\n->To ' + returnService.getReturn()[0].getTo()
962                                      +'\n->Subject ' + returnService.getReturn()[0].getSubject()
963                                      +'\n->Date ' + returnService.getReturn()[0].getDate()
964                                      +'\n->Date ' + returnService.getReturn()[0].getSize()
965                                      +'\n->ID ' + returnService.getReturn()[0].getId());
966    */
967    for(var i=0; i< returnService.getReturn().length; i++){
968        //window.alert('quer deserializar:\n\n' + print_r(returnService.getReturn()[i]));
969        var ExpSerialized = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]);
970        //window.alert('expSerialized ' + i + '\n\n --\n\n' + print_r(ExpSerialized));
971        //var test = connector.unserialize(ExpSerialized);
972        //window.alert('unserialized = \n\n' + test);
973        msglist.push(connector.unserialize(ExpSerialized));//usando connector.unserialize sobre o header mapeado no layout abaixo
974        expresso_mail_archive.ServiceReturnObject.push(returnService.getReturn()[i]); //add each one service return data into this embeded object array
975        //window.alert('ServiceReturnObject.lenght = ' + expresso_mail_archive.ServiceReturnObject.length + '\n\n:' + expresso_mail_archive.ServiceReturnObject[i]);
976    }
977    msglist["num_msgs"] = returnService.getReturn().length;
978    msglist["tot_unseen"] = expresso_mail_archive.folder.unseen;
979    //window.alert('print_r\n\n' + print_r(msglist));
980   
981    expresso_mail_archive.messageslisted = msglist;
982    //window.alert('expresso_mail_archive.message_list.length = ' + expresso_mail_archive.message_list.length);
983    //window.alert(print_r(expresso_mail_archive.message_list));
984    expresso_mail_archive.drawdata = {messagesList:msglist};
985    expresso_mail_archive.drawMessagesList();
986}
987
988//listMessages callback Fail
989MailArchiver.prototype.listMessagesOperationFailure = function(ServiceFault){
990    window.alert('listmessages FALHOU!\n' + ServiceFault.getReturn());
991}
992
993MailArchiver.prototype.getFolderMessagesNumber = function(){
994    var n = 0;
995    for(var i=0; i < expresso_mail_archive.folders.length; i++){
996        if(expresso_mail_archive.folders[i]["id"] == expresso_mail_archive.currentfolder){
997            n = expresso_mail_archive.folders[i]["messages"];
998        }
999    }
1000    return(n);
1001}
1002
1003MailArchiver.prototype.drawMessagesList = function(){
1004    var data_to_draw = expresso_mail_archive.drawdata.messagesList; 
1005    //window.alert('data to draw =  ' + data_to_draw.length + '\ndata_to_draw[0].from.full = ' + print_r(data_to_draw));
1006    //window.alert('Current folder = ' + expresso_mail_archive.currentfolder + ' com ' + expresso_mail_archive.folders.length + ' folders.');
1007    var fcaption = expresso_mail_archive.currentfolder;
1008   
1009    /*for (var w=0; w < expresso_mail_archive.folders.length; w++){
1010        //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 + '"');
1011        if(expresso_mail_archive.folders[w]["id"] == expresso_mail_archive.currentfolder){
1012            fcaption = expresso_mail_archive.folders[w]["name"];
1013            window.alert('folder found!\n -> ' + fcaption);
1014            break;
1015        }
1016    }*/
1017   
1018    var fcaption = expresso_mail_archive.folder.name;
1019    //var folder_num_msgs = expresso_mail_archive.getFolderMessagesNumber();
1020    var folder_num_msgs = expresso_mail_archive.folder.nummessages;
1021    //window.alert('num = ' + folder_num_msgs);
1022    alternate_border(0);
1023    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>';
1024    draw_box(data_to_draw, 'local_' + expresso_mail_archive.currentfolder, true);
1025    //draw_paging(expresso_mail_archive.drawdata.messagesList.length);
1026    //draw_paging(preferences.max_email_per_page);
1027    draw_paging(folder_num_msgs);
1028    Element("tot_m").innerHTML = folder_num_msgs;
1029    Element('new_m').innerHTML = data_to_draw['tot_unseen'] ? '<font color="RED">'+data_to_draw['tot_unseen']+'</font>' : 0;
1030    //update_menu();
1031   
1032}
1033
1034MailArchiver.prototype.getMessageHeaders = function(msgId){
1035    var msgfound = false;
1036    var headerMsg;
1037   
1038    //Get message header info, from message list operation previously invoked
1039    for (var w=0; w < expresso_mail_archive.messageslisted.length; w++){
1040        //window.alert('comparando messageslisted "' +expresso_mail_archive.messageslisted[w]["msg_number"]+ '" com o id parametrizado "' +msgId+ '"');
1041        if(expresso_mail_archive.messageslisted[w]["msg_number"] == msgId){
1042            headerMsg = expresso_mail_archive.messageslisted[w];
1043            msgfound = true;
1044            break;
1045        }
1046    }
1047    //Message does not exists at message list. it will not be loaded.
1048    if(!msgfound){
1049        alert('ops... the message"'+msgId+'" was not found at messages list, so it cannot be readed!')
1050        headerMsg = null;
1051        return;
1052    }
1053    //window.alert('getMessageHeaders\n\n' + print_r(headerMsg));
1054    return(headerMsg);
1055}
1056
1057MailArchiver.prototype.getMessage = function(msgdata){
1058    try{
1059        if((msgdata.length <= 0) || (msgdata == null)){
1060            window.alert('no msgdata received. aborting local message load')
1061            return;
1062        }
1063
1064        expresso_mail_archive.currentmessage = expresso_mail_archive.getMessageHeaders(msgdata)["msg_number"];
1065        //window.alert('current message guid = ' + expresso_mail_archive.currentmessage);
1066
1067        //window.alert('vai invocar getMessageBody com msgid=' + expresso_mail_archive.currentmessage);
1068        ArchiveServices.getMessageBody(expresso_mail_archive.getMessageOperationOK, expresso_mail_archive.getMessageOperationFailure, sessid, expresso_mail_archive.currentmessage);
1069    }
1070    catch(e){
1071        window.alert('Ops...getMessage fails at:\n' + e);
1072    }
1073}
1074
1075MailArchiver.prototype.getMessageOperationOK = function(returnService){
1076    if(returnService.getReturn().length <= 0){
1077        window.alert('Oh no: service return data is zero length...');
1078        return;
1079    }
1080   
1081    //window.alert('Get header info from message "' + expresso_mail_archive.currentmessage + '"');
1082   
1083   
1084    var msgBody = returnService.getReturn();
1085    //window.alert('getMessageOperationOK headers get..');
1086    var msgHeaders = expresso_mail_archive.getMessageHeaders(expresso_mail_archive.currentmessage);
1087    //var expSerializedMessage = expresso_mail_archive.toExpressoMessage(msgHeaders, msgBody);
1088    var expSerializedMessage = expresso_mail_archive.pattern.toExpressoMail(msgHeaders, msgBody);
1089    //window.alert('Serialized data\n\n' + print_r(expSerializedMessage));
1090    show_msg(expSerializedMessage);
1091}
1092
1093MailArchiver.prototype.getMessageOperationFailure = function(ServiceFault){
1094    window.alert('Message fails do be loaded.');
1095}
1096
1097
1098MailArchiver.prototype.getMessageServiceObject = function(msgid){
1099    for(var i=0; i < expresso_mail_archive.ServiceReturnObject.length; i++){
1100        if (expresso_mail_archive.ServiceReturnObject[i].getId() == msgid){
1101            return(expresso_mail_archive.ServiceReturnObject[i]);
1102        }
1103    }
1104    return(null);
1105}
1106
1107MailArchiver.prototype.Query = function(offlow, offup, qdata){
1108    window.alert('Query offlow = ' + offlow + ' - offup= ' + offup);
1109    var querystring = this.queryconfig.query(offlow, offup, qdata);
1110    this.listMessages();
1111}
1112
1113/*
1114 *The all pourpose JavaScript variable, used by all related functionalityes at
1115 *Expresso Mail to handle this object at user gui.
1116 */
1117
1118var expresso_mail_archive;
1119expresso_mail_archive = new MailArchiver();
1120-->
Note: See TracBrowser for help on using the repository browser.