source: sandbox/2.5.0-expresso1/expressoMail1_2/js/MAExpressoPattern.js @ 7373

Revision 7373, 72.5 KB checked in by marcosw, 12 years ago (diff)

Ticket #3088 - Correção no manter flags ao passar pela pasta rascunhos

Line 
1<!--
2/*
3 * MailArchiver Expresso Pattern serialized format
4 * ---
5 * This resources intended to be used on converting data formats, to make
6 * it work on ExpressoMail pattern.
7 *
8 * Basicly, it gets all the service return data (almost enveloped at SOAP
9 * webservices spec i.e XML data), and then transform it to the serialized
10 * pattern used by Expresso (somethink almost close or near JSON Javascript
11 * objects).
12 *
13 * @author Fernando Wendt [fernando-alberto.wendt@serpro.gov.br]
14 *
15 * @status under development
16 *
17 */
18var MAPattern = function(){
19   
20}
21// -----------------------------------SERIALIZED DATA TEMPLATES ----------------
22MAPattern.prototype.toExpressoAddress = function(data){   
23    if((typeof(data) != 'undefined') && (data.length > 0)){
24
25        if((typeof(data) != 'string') || (data.indexOf("{") == -1)){
26            var objMsg = expresso_mail_archive.getMessageServiceObject(data);
27            var attData = objMsg.getTo();
28            var Fromdata = attData ? eval("(" + attData + ")") : null;
29            if (Fromdata == null)
30                return('N;');
31        }
32        else{
33            var Fromdata = data ?  eval("(" + data + ")") : null;
34            if (Fromdata == null){
35                return('N;');     
36            }
37            else{
38                if((!Fromdata.mailbox) && (!Fromdata.groupbox)){
39                    var nofrom = get_lang('Sender not identified');
40                    return('a:2{s:4:"name";s:' + nofrom.length + ':"' + nofrom + '";s:5:"email";s:'+nofrom.length +':"'+nofrom +'";}');
41                }
42            }
43        }       
44       
45        //var Fromdata = eval("(" + data + ")");
46        if(Fromdata.mailbox){
47            //just one address to pharse: length is undefined
48            if(typeof(Fromdata.mailbox.length) == 'undefined'){
49                var objfrom = Fromdata.mailbox;
50                flag1 = 1;
51            }
52            else{
53                var objfrom = Fromdata.mailbox[0];
54                flag1 = 2;
55            }
56           
57            if(objfrom["@name"] != 'null')
58                var dataName = (objfrom["@name"]);
59            else
60                var dataName = "";
61               
62            if(objfrom["@localPart"] != 'null')
63                var dataEmailPart = (objfrom["@localPart"]);
64            else
65                var dataEmailpart = "";
66               
67            if(objfrom["@domain"] != 'null')
68                var dataEmailDomain = (objfrom["@domain"]);
69            else
70                var dataEmailDomain = "";
71               
72            if(dataEmailDomain != "")
73                var dataEmail =  dataEmailPart + '@' + dataEmailDomain;
74            else
75                var dataEmail =  dataEmailPart;
76                               
77            if(dataName == '')
78                dataName = dataEmail;
79               
80            var dataTmp = '\"'+dataName+'\"&lt;'+dataEmail+'&gt;'
81            var tplFrom = 'a:3:{'
82+                         's:4:"name";'
83+                         's:'+dataName.length+':"'+dataName+'";'
84+                         's:5:"email";'
85+                         's:'+dataEmail.length+':"'+dataEmail+'";'
86+                         's:4:"full";'
87+                         's:'+(dataTmp.length)+':"'+dataTmp+'";'
88+                         '}';               
89        }
90        else{
91            if(Fromdata.group){
92                //just one address to pharse: length is undefined
93                if(typeof(Fromdata.group.length) == 'undefined'){
94                    if(Fromdata.group["@name"]){
95                        var dataName = Fromdata.group["@name"];
96                    }
97                    else
98                        var dataName = null;
99                   
100                    if(Fromdata.group["@localPart"]){
101                        var dataEmail = Fromdata.group["@localPart"] + '@' + Fromdata.group["@domain"];
102                    }
103                    else
104                        var dataEmail = null;
105                   
106                    if(dataName == 'null')
107                        dataName = dataEmail;
108                }
109                //address list to pharse, but to header(folder list messages action), only first metters
110                else{
111                    var dataName = Fromdata.group[0]["@name"];
112                    var dataEmail = Fromdata.group[0]["@localPart"] + '@' + Fromdata.group[0]["@domain"];
113                    if(dataName == 'null')
114                        dataName = dataEmail;
115                }
116           
117            if((dataName != null) && (dataEmail != null)){
118                var dataTmp = '\"'+dataName+'\"&lt;'+dataEmail+'&gt;'
119                var tplFrom = 'a:3:{'
120+                         's:4:"name";'
121+                         's:'+dataName.length+':"'+dataName+'";'
122+                         's:5:"email";'
123+                         's:'+dataEmail.length+':"'+dataEmail+'";'
124+                         's:4:"full";'
125+                         's:'+(dataTmp.length)+':"'+dataTmp+'";'
126+                         '}';               
127            }
128            else{
129                if(dataName!= null){
130                var tplFrom = 'a:2:{'
131+                         's:4:"name";'
132+                         's:'+dataName.length+':"'+dataName+'";'
133+                         's:4:"full";'
134+                         's:'+(dataName.length)+':"'+dataName+'";'
135+                         '}';                     
136                }
137                else{
138                    if(dataEmail != null){
139                    var tplFrom = 'a:2:{'
140+                         's:4:"email";'
141+                         's:'+dataEmail.length+':"'+dataEmail+'";'
142+                         's:4:"full";'
143+                         's:'+(dataEmail.length)+':"'+dataEmail+'";'
144+                         '}';                         
145                    }
146                    else tplFrom = 'a:2{s:4:"name";s:14:"Unknow mailbox";s:5:"email";s:15:"Unknow_mailbox";}';
147                }
148            }
149           }   
150           //Data adrress from mailbox is empty, null, or canot be correctly returned by service invocation (will return 'unknow mailbox' string)
151           else {
152                tplFrom = 'N;';
153           }       
154        }
155    }
156    else{
157        tplFrom = 'N;';
158    }
159    return(tplFrom);
160}
161
162MAPattern.prototype.toExpressoCc = function(data){
163    if((typeof(data) != 'undefined') && (data.length > 0)){
164        var Fromdata = eval("(" + data + ")");
165        if(Fromdata.mailbox){
166        //just one address to pharse: length is undefined
167            if(typeof(Fromdata.mailbox.length) == 'undefined'){
168                var dataName = Fromdata.mailbox["@name"];
169                var dataEmail = Fromdata.mailbox["@localPart"] + '@' + Fromdata.mailbox["@domain"];
170                if (dataName == 'null')
171                    var dataFull = 's:'+(dataEmail.length)+':"'+dataEmail+'";';
172                else{
173                    var dataTmp = '\"'+dataName+'\"&lt;'+dataEmail+'&gt;'
174                    var dataFull = 's:'+(dataTmp.length)+':"'+dataTmp+'";'
175                }
176            }
177            //address list to pharse, but to header(folder list messages action), only first metters
178            else{
179                    var dataTmp = '';
180                    for( i in Fromdata.mailbox){
181                        var dataName = Fromdata.mailbox[i]["@name"];
182                        var dataEmail = Fromdata.mailbox[i]["@localPart"] + '@' + Fromdata.mailbox[i]["@domain"];
183                        if (dataName == 'null')
184                             dataTmp = dataTmp + dataEmail+',';
185                        else{
186                             dataTmp = dataTmp + '\"'+dataName+'\"&lt;'+dataEmail+'&gt;,';
187                            }
188                }
189                dataTmp = dataTmp.substring(0,(dataTmp.length - 1));
190                 var dataFull = 's:'+(dataTmp.length)+':"'+dataTmp+'";'
191
192            }
193
194            var tplCc = dataFull;
195
196        }
197        else {
198            tplCc = 'N;';
199        }
200    }
201    //Data adrress from mailbox is empty, null, or canot be correctly returned by service invocation (will return 'unknow mailbox' string)
202    else {
203        tplCc = 'N;';
204    }
205   
206    return(tplCc);
207   
208}
209
210MAPattern.prototype.toExpressoDispositionNotificationTo = function(data){
211    var objMsg = expresso_mail_archive.getMessageServiceObject(data);
212    var dntData = objMsg.getDispositionNotificationTo();
213
214    if((typeof(dntData) != 'undefined') && (dntData.length > 0)){
215        var notificationData = eval("(" + dntData + ")");
216        if(notificationData.mailbox){
217            //just one address to pharse: length is undefined
218            if(typeof(notificationData.mailbox.length) == 'undefined'){
219                var dataEmail = notificationData.mailbox["@localPart"] + '@' + notificationData.mailbox["@domain"];
220            }
221            //address list to parse, but to header(folder list messages action), only first matters
222            else{
223                var dataEmail = notificationData.mailbox[0]["@localPart"] + '@' + notificationData.mailbox[0]["@domain"];
224            }
225
226            var tplNotification = 's:25:"DispositionNotificationTo";s:' + dataEmail.length + ':"' + dataEmail + '";'
227        }
228        //Data adrress from mailbox is empty, null, or canot be correctly returned by service invocation (will return 'unknow mailbox' string)
229        else {
230            tplNotification = 's:25:"DispositionNotificationTo";N;';
231        }
232    }
233    else {
234        tplNotification = 's:25:"DispositionNotificationTo";N;';
235    }
236
237    return tplNotification;
238}
239
240MAPattern.prototype.toExpressoAddress2 = function(data){
241    if((typeof(data) != 'undefined') && (data.length > 0)){
242        if((typeof(data) != 'string') || (data.indexOf("{") == -1)){
243            var objMsg = expresso_mail_archive.getMessageServiceObject(data);
244            var attData = objMsg.getTo();
245            var Fromdata = attData ? eval("(" + attData + ")") : null;
246            if (Fromdata == null){               
247                var noto = get_lang("without destination");
248                return('s:10:"toaddress2";s:' + noto.length + ':"'+noto+'";');
249            }
250        }
251        else{
252            var Fromdata = data ?  eval("(" + data + ")") : null;
253            if (Fromdata == null)
254                return('s:10:"toaddress2";N;');                       
255        }       
256       
257        if(Fromdata && Fromdata.mailbox){
258            //just one address to pharse: length is undefined
259            if(typeof(Fromdata.mailbox.length) == 'undefined'){
260                var dataEmail = Fromdata.mailbox["@localPart"] + '@' + Fromdata.mailbox["@domain"];
261            }
262            //address list to pharse, but to header(folder list messages action), only first metters
263            else{
264                var datatmp = "";
265                for(var k=0; k<Fromdata.mailbox.length; k++){                   
266                    if(Fromdata.mailbox[k]["@name"] != 'null'){
267                        datatmp += '"' + Fromdata.mailbox[k]["@name"] + '" ';
268                        if(Fromdata.mailbox[k]["@localPart"] != 'null')
269                            datatmp += '&lt;' + Fromdata.mailbox[k]["@localPart"];
270                        if(Fromdata.mailbox[k]["@domain"] != 'null')
271                            datatmp += '@' + Fromdata.mailbox[k]["@domain"] + '&gt;';                   
272                        else
273                            datatmp += '&gt;';
274                    }
275                    else{
276                        if(Fromdata.mailbox[k]["@localPart"] != 'null')
277                            datatmp += Fromdata.mailbox[k]["@localPart"];
278                        if(Fromdata.mailbox[k]["@domain"] != 'null')
279                            datatmp += '@' + Fromdata.mailbox[k]["@domain"];
280                    }
281                    if(datatmp != '')
282                        datatmp += ', ';
283                }
284                datatmp = datatmp.substr(0, datatmp.length -2);
285                var dataEmail = datatmp;
286               
287                //var dataEmail = Fromdata.mailbox[0]["@localPart"] + '@' + Fromdata.mailbox[0]["@domain"];
288            }
289
290            //var tplAddr2 = 's:10:"toaddress2";s:' + dataEmail.length + ':"' + dataEmail + '";'
291            var tplAddr2 = 's:10:"toaddress2";s:' + dataEmail.length + ':"' + dataEmail + '";'
292        }
293        else{
294            if(Fromdata && Fromdata.group){
295                //just one address group to pharse
296                if(typeof(Fromdata.group.length) == 'undefined'){   
297                    //there is a group email identifier
298                    if(Fromdata.group['@localPart']){
299                        var dataEmail = Fromdata.group["@localPart"] + '@' + Fromdata.group["@domain"];
300                    }
301                    //there is no email identifier, will try by name
302                    else{
303                        if(Fromdata.group['@name']){
304                            var dataEmail = '"' + Fromdata.group['@name'] + '"';                       
305                        }
306                        else{
307                            dataEmail = 'N';
308                        }
309                    }
310
311                }
312                //group address list to pharse, but to header(folder list messages action), only first metters
313                else{
314                    var dataEmail = Fromdata.group[0]["@localPart"] + '@' + Fromdata.group[0]["@domain"];
315                }
316
317                var tplAddr2 = 's:10:"toaddress2";s:' + dataEmail.length + ':"' + dataEmail + '";'               
318            }
319            //Data adrress from mailbox is empty, null, or canot be correctly returned by service invocation (will return 'unknow mailbox' string)
320            else {
321                tplAddr2 = 's:10:"toaddress2";s:1:"N";';
322            }
323        }
324
325    }
326    else{
327        //tplAddr2 = 's:10:"toaddress2";s:1:"";';
328        var noto = get_lang("without destination");
329        tplAddr2 = 's:10:"toaddress2";s:' + noto.length + ':"'+noto+'";';
330    }
331    return(tplAddr2);
332}
333
334
335MAPattern.prototype.toExpressoSender = function(data){
336    if((typeof(data) != 'undefined') && (data.length > 0)){
337        if((typeof(data) != 'string') || (data.indexOf("{") == -1)){
338            var objMsg = expresso_mail_archive.getMessageServiceObject(data);
339            var attData = objMsg.getSender();
340            var Fromdata = attData ? eval("(" + attData + ")") : null;
341            if (Fromdata == null)
342                return('s:6:"sender";N;');
343        }
344        else{
345            var Fromdata = data ?  eval("(" + data + ")") : null;
346            if (Fromdata == null)
347                return('s:6:"sender";N;');                       
348        }       
349       
350        //var Fromdata = eval("(" + data + ")");
351        if(Fromdata.mailbox){
352            //just one address to pharse: length is undefined
353            if(typeof(Fromdata.mailbox.length) == 'undefined'){
354                var objfrom = Fromdata.mailbox;
355                flag1 = 1;
356            }
357            else{
358                var objfrom = Fromdata.mailbox[0];
359                flag1 = 2;
360            }
361           
362            if(objfrom["@name"] != 'null')
363                var dataName = (objfrom["@name"]);
364            else
365                var dataName = "";
366               
367            if(objfrom["@localPart"] != 'null')
368                var dataEmailPart = (objfrom["@localPart"]);
369            else
370                var dataEmailpart = "";
371               
372            if(objfrom["@domain"] != 'null')
373                var dataEmailDomain = (objfrom["@domain"]);
374            else
375                var dataEmailDomain = "";
376               
377            if(dataEmailDomain != "")
378                var dataEmail =  dataEmailPart + '@' + dataEmailDomain;
379            else
380                var dataEmail =  dataEmailPart;
381               
382            if(dataName == '')
383                dataName = dataEmail;
384               
385            var dataTmp = '\"'+dataName+'\"&lt;'+dataEmail+'&gt;'
386           
387            var tplFrom = 'a:3:{'
388+                         's:4:"name";'
389+                         's:'+dataName.length+':"'+dataName+'";'
390+                         's:5:"email";'
391+                         's:'+dataEmail.length+':"'+dataEmail+'";'
392+                         's:4:"full";'
393+                         's:'+(dataTmp.length)+':"'+dataTmp+'";'
394+                         '}';               
395            }
396            else{
397                if(Fromdata.group){
398                    //just one address to pharse: length is undefined
399                    if(typeof(Fromdata.group.length) == 'undefined'){
400                        if(Fromdata.group["@name"]){
401                            var dataName = Fromdata.group["@name"];
402                        }
403                        else
404                            var dataName = null;
405                   
406                        if(Fromdata.group["@localPart"]){
407                            var dataEmail = Fromdata.group["@localPart"] + '@' + Fromdata.group["@domain"];
408                        }
409                        else
410                            var dataEmail = null;
411                   
412                        if(dataName == 'null')
413                            dataName = dataEmail;
414                    }
415                    //address list to pharse, but to header(folder list messages action), only first metters
416                    else{
417                        var dataName = Fromdata.group[0]["@name"];
418                        var dataEmail = Fromdata.group[0]["@localPart"] + '@' + Fromdata.group[0]["@domain"];
419                        if(dataName == 'null')
420                            dataName = dataEmail;
421                    }
422           
423                if((dataName != null) && (dataEmail != null)){
424                    var dataTmp = '\"'+dataName+'\"&lt;'+dataEmail+'&gt;'
425                    var tplFrom = 'a:3:{'
426+                         's:4:"name";'
427+                         's:'+dataName.length+':"'+dataName+'";'
428+                         's:5:"email";'
429+                         's:'+dataEmail.length+':"'+dataEmail+'";'
430+                         's:4:"full";'
431+                         's:'+(dataTmp.length)+':"'+dataTmp+'";'
432+                         '}';               
433                }
434                else{
435                    if(dataName!= null){
436                    var tplFrom = 'a:2:{'
437+                         's:4:"name";'
438+                         's:'+dataName.length+':"'+dataName+'";'
439+                         's:4:"full";'
440+                         's:'+(dataName.length)+':"'+dataName+'";'
441+                         '}';                     
442                    }
443                    else{
444                        if(dataEmail != null){
445                        var tplFrom = 'a:2:{'
446+                         's:4:"email";'
447+                         's:'+dataEmail.length+':"'+dataEmail+'";'
448+                         's:4:"full";'
449+                         's:'+(dataEmail.length)+':"'+dataEmail+'";'
450+                         '}';                         
451                        }
452                        else tplFrom = 'a:2{s:4:"name";s:14:"Unknow mailbox";s:5:"email";s:15:"Unknow_mailbox";}';
453                    }
454                }
455            }   
456           else {
457                tplFrom = 'N;';
458           }       
459        }
460    }
461    else{
462        tplFrom = 'N;';
463    }
464    return('s:6:"sender";' + tplFrom);
465}
466
467MAPattern.prototype.toExpressoReplyTo = function(data){
468    if((typeof(data) != 'undefined') && (data.length > 0)){
469
470        if((typeof(data) != 'string') || (data.indexOf("{") == -1)){
471            var objMsg = expresso_mail_archive.getMessageServiceObject(data);
472            var attData = objMsg.getReplyTo();
473            var Fromdata = attData ? eval("(" + attData + ")") : null;
474            if (Fromdata == null)
475                return('s:8:"reply_to";N;');           
476        }
477        else{
478            var Fromdata = data ?  eval("(" + data + ")") : null;
479            if (Fromdata == null)
480                return('s:8:"reply_to";N;');                       
481        }       
482       
483        //var Fromdata = eval("(" + data + ")");       
484        if(Fromdata.mailbox){
485            //just one address to pharse: length is undefined
486            if(typeof(Fromdata.mailbox.length) == 'undefined'){
487                var objfrom = Fromdata.mailbox;
488                flag1 = 1;
489            }
490            else{
491                var objfrom = Fromdata.mailbox[0];
492                flag1 = 2;
493            }
494           
495            if(objfrom["@name"] != 'null')
496                var dataName = (objfrom["@name"]);
497            else
498                var dataName = "";
499               
500            if(objfrom["@localPart"] != 'null')
501                var dataEmailPart = (objfrom["@localPart"]);
502            else
503                var dataEmailpart = "";
504               
505            if(objfrom["@domain"] != 'null')
506                var dataEmailDomain = (objfrom["@domain"]);
507            else
508                var dataEmailDomain = "";
509               
510            if(dataEmailDomain != "")
511                var dataEmail =  dataEmailPart + '@' + dataEmailDomain;
512            else
513                var dataEmail =  dataEmailPart;
514               
515            if(dataName == '')
516                tplFrom = dataEmail;
517            else
518                tplFrom = '\"'+dataName+'\" &lt;'+dataEmail+'&gt;'               
519           
520           
521            //tplFrom = dataEmail;
522           
523            }
524            else{
525                if(Fromdata.group){
526                    //just one address to pharse: length is undefined
527                    if(typeof(Fromdata.group.length) == 'undefined'){
528                        if(Fromdata.group["@name"]){
529                            var dataName = Fromdata.group["@name"];
530                        }
531                        else
532                            var dataName = null;
533                   
534                        if(Fromdata.group["@localPart"]){
535                            var dataEmail = Fromdata.group["@localPart"] + '@' + Fromdata.group["@domain"];
536                        }
537                        else
538                            var dataEmail = null;
539                   
540                        if(dataName == 'null')
541                            tplFrom = dataEmail;
542                        else
543                            tplFrom = '\"'+dataName+'\" &lt;'+dataEmail+'&gt;'   
544                       
545                    }
546                    //address list to pharse, but to header(folder list messages action), only first metters
547                    else{
548                        var dataName = Fromdata.group[0]["@name"];
549                        var dataEmail = Fromdata.group[0]["@localPart"] + '@' + Fromdata.group[0]["@domain"];
550                       
551                        if(dataName == 'null')
552                            tplFrom = dataEmail;
553                        else
554                            tplFrom = '\"'+dataName+'\" &lt;'+dataEmail+'&gt;'   
555                    }
556                }   
557                //Data adrress from mailbox is empty, null, or canot be correctly returned by service invocation (will return 'unknow mailbox' string)
558                else {
559                    tplFrom = 'N;';
560                    return('');
561                }       
562            }
563        }
564        else{
565            tplFrom = 'N;';
566            return('')
567        }
568        return('s:8:"reply_to";s:' + tplFrom.length + ':"' + tplFrom + '";');
569}
570
571MAPattern.prototype.toExpressoSearchFrom = function(data){
572    if((typeof(data) != 'undefined') && (data.length > 0)){
573
574        if((typeof(data) != 'string') || (data.indexOf("{") == -1)){
575            var objMsg = expresso_mail_archive.getMessageServiceObject(data);
576            var attData = objMsg.getFrom();
577            var Fromdata = attData ? eval("(" + attData + ")") : null;
578            if (Fromdata == null)
579                return('N;');
580        }
581        else{
582            var Fromdata = data ?  eval("(" + data + ")") : null;
583            if (Fromdata == null)
584                return('N;');           
585        }       
586       
587        //var Fromdata = eval("(" + data + ")");
588        if(Fromdata.mailbox){
589            //just one address to pharse: length is undefined
590            if(typeof(Fromdata.mailbox.length) == 'undefined'){
591                var objfrom = Fromdata.mailbox;
592            }
593            else{
594                var objfrom = Fromdata.mailbox[0];
595            }
596           
597            if(objfrom["@name"] != 'null')
598                var tplSearchFrom = (objfrom["@name"]);
599            else{               
600                if(objfrom["@localPart"] != 'null')
601                   var dataEmailPart = (objfrom["@localPart"]);
602                else
603                   var dataEmailpart = "";
604               
605                if(objfrom["@domain"] != 'null')
606                    var dataEmailDomain = (objfrom["@domain"]);
607                else
608                    var dataEmailDomain = "";
609               
610                if(dataEmailDomain != "")
611                    var tplSearchFrom =  dataEmailPart + '@' + dataEmailDomain;
612                else
613                    var tplSearchFrom =  dataEmailPart;
614            }
615        }
616        else{
617            if(Fromdata.group){
618                //just one address to pharse: length is undefined
619                if(typeof(Fromdata.group.length) == 'undefined'){
620                    if(Fromdata.group["@name"]){
621                        var tplSearchFrom = Fromdata.group["@name"];
622                    }
623                    else{
624                   
625                        if(Fromdata.group["@localPart"]){
626                            var tplSearchFrom = Fromdata.group["@localPart"] + '@' + Fromdata.group["@domain"];
627                        }
628                        else
629                            var tplSearchFrom = null;
630                    }
631                   
632                }
633                //address list to pharse, but to header(folder list messages action), only first metters
634                else{
635                    var dataName = Fromdata.group[0]["@name"];
636                    var dataEmail = Fromdata.group[0]["@localPart"] + '@' + Fromdata.group[0]["@domain"];
637                    if(dataName == 'null')
638                        var tplSearchFrom = dataEmail;
639                    else
640                        var tplSearchFrom = dataName;
641                }
642           
643        }
644    }
645    }
646    else{
647        var tplSearchFrom = 'N;';
648    }
649    //window.alert('from search = ' + tplSearchFrom);
650    return(tplSearchFrom);
651}
652
653
654MAPattern.prototype.toExpressoSubject = function(data){
655    if((typeof(data) != 'undefined') && (data.length > 0)){
656        var tplSbj = 's:'+data.length+':"'+data+'";'
657    }
658    //Subject is empty, null, or canot be correctly returned by service invocation (will return 'Message without subject' string)
659    else {
660        tplSbj = 's:25:"[Message without subject]";';
661    }
662    return(tplSbj);
663}
664
665MAPattern.prototype.toExpressoPreview = function(data){
666    //var objMsg = expresso_mail_archive.getMessageServiceObject(data);
667    var prwData = data;
668   
669   
670    if(prwData){
671        if((typeof(prwData) != 'undefined') && (prwData.length > 0)){
672            var tplSbj = 's:'+prwData.length+':"'+prwData+'";'
673        }
674        else {
675            tplSbj = 's:1:" ";';
676        }
677    }
678    else
679        tplSbj = 's:1:" ";';
680    return(tplSbj);
681}
682
683MAPattern.prototype.toExpressoAttachmentsHeader = function(data){
684    if((typeof(data) != 'undefined') && (data.length > 2)){
685        var Attdata = eval("(" + data + ")");
686        if(typeof(Attdata.attachment) != 'undefined'){                   
687            var tplAttatch = 'a:2:{'
688+               's:5:"names";';
689            //More than 1 attachment - because length will be 'undefined' if just one exists
690            if(Attdata.attachment.length > 0){
691                var strnamesatt = "";
692                for(var x=0; x<Attdata.attachment.length; x++){
693                  var attId = Attdata.attachment[x]["@id"];
694                  var attName = Attdata.attachment[x]["@name"];
695                  var attSize = Attdata.attachment[x]["@size"];
696                  var attMediaType = Attdata.attachment[x]["@mediaType"];
697                  var attSubType = Attdata.attachment[x]["@subType"];
698                  var attEncoding = Attdata.attachment[x]["@encoding"];
699                 
700                  strnamesatt += attName + ', ';
701                }
702                strnamesatt = strnamesatt.substr(0, strnamesatt.length-2);
703                var intnumberatt = Attdata.attachment.length;
704            }
705            //Just one attachment
706            else{
707                var attId = Attdata.attachment["@id"];
708                var attName = Attdata.attachment["@name"];
709                var attSize = Attdata.attachment["@size"];
710                var attMediaType = Attdata.attachment["@mediaType"];
711                var attSubType = Attdata.attachment["@subType"];
712                var attEncoding = Attdata.attachment["@encoding"];
713                strnamesatt = attName;
714                var intnumberatt = 1;
715            }
716           
717            tplAttatch += 's:'+strnamesatt.length+':"'+strnamesatt+'";'
718+               's:18:"number_attachments";i:' +intnumberatt+';'
719+           '}';
720        }
721        else {
722            tplAttatch = 'a:2:{s:5:"names";b:0;s:18:"number_attachments";i:0;}';   
723        }
724    }
725    //No attatch data
726    else {
727        tplAttatch = 'a:2:{s:5:"names";b:0;s:18:"number_attachments";i:0;}';
728    }
729    return(tplAttatch);
730}
731
732MAPattern.prototype.toExpressoDate = function(data){
733    var ndate = new Date(data);
734    var odate = zeroFill(ndate.getDate()) + '/' + zeroFill(ndate.getMonth()+1) + '/' + zeroFill(ndate.getFullYear() + ' ' + zeroFill(ndate.getHours()) + ':' + zeroFill(ndate.getMinutes()) + ':' + zeroFill(ndate.getSeconds()));
735    return(odate);
736}
737
738MAPattern.prototype.toExpressoFlags = function(data){
739    if((data.length > 0) && (typeof(data) != 'undefined')){
740        var Tagdata = eval("(" + data + ")");
741        if(typeof(Tagdata.tag) != 'undefined'){
742        //More than 1 attachment: length will be 'undefined' if just one exists
743        if(Tagdata.tag.length >= 0){
744            var strnamestag = "";
745            for(var x=0; x<Tagdata.tag.length; x++){
746                var tagvalue = Tagdata.tag[x]["@value"];
747                if(tagvalue.toLowerCase() == 'recent')
748                    strnamestag += 's:6:"Recent";s:1:"N";';
749                if(tagvalue.toLowerCase() == 'unseen')
750                    strnamestag += 's:6:"Unseen";s:1:"U";';
751                if(tagvalue.toLowerCase() == 'seen')
752                    strnamestag += 's:6:"Unseen";s:1:" ";';               
753                if(tagvalue.toLowerCase() == 'deleted')
754                    strnamestag += 's:7:"Deleted";s:1:"D";';
755                if(tagvalue.toLowerCase() == 'answered')
756                    strnamestag += 's:8:"Answered";s:1:"A";';
757                if(tagvalue.toLowerCase() == 'unanswered')
758                    strnamestag += 's:8:"Answered";s:1:" ";';               
759                if(tagvalue.toLowerCase() == 'forwarded')
760                    strnamestag += 's:9:"Forwarded";s:1:"F";';
761                if(tagvalue.toLowerCase() == 'draft')
762                    strnamestag += 's:5:"Draft";s:1:"X";';
763                if(tagvalue.toLowerCase() == 'importance_high')
764                    strnamestag += 's:10:"Importance";s:4:"High";';
765                if(tagvalue.toLowerCase() == 'flagged')
766                    strnamestag += 's:7:"Flagged";s:1:"F";';
767                if(tagvalue.toLowerCase() == 'unflagged')
768                    strnamestag += 's:7:"Flagged";b:0;';               
769            }
770            var tplTags = strnamestag;
771          }
772         
773          else{
774            var strnamestag = "";
775            var tagvalue = Tagdata.tag["@value"];
776                if(tagvalue.toLowerCase() == 'recent')
777                    strnamestag += 's:6:"Recent";s:1:"N";';
778                if(tagvalue.toLowerCase() == 'unseen')
779                    strnamestag += 's:6:"Unseen";s:1:"U";';
780                if(tagvalue.toLowerCase() == 'seen')
781                    strnamestag += 's:6:"Unseen";s:1:" ";';               
782                if(tagvalue.toLowerCase() == 'deleted')
783                    strnamestag += 's:7:"Deleted";s:1:"D";';
784                if(tagvalue.toLowerCase() == 'answered')
785                    strnamestag += 's:8:"Answered";s:1:"A";';
786                if(tagvalue.toLowerCase() == 'unanswered')
787                    strnamestag += 's:8:"Answered";s:1:" ";';               
788                if(tagvalue.toLowerCase() == 'forwarded')
789                    strnamestag += 's:9:"Forwarded";s:1:"F";';
790                if(tagvalue.toLowerCase() == 'draft')
791                    strnamestag += 's:5:"Draft";s:1:"X";';
792                if(tagvalue.toLowerCase() == 'importance_high')
793                    strnamestag += 's:10:"Importance";s:4:"High";';
794                if(tagvalue.toLowerCase() == 'flagged')
795                    strnamestag += 's:7:"Flagged";s:1:"F";';
796                if(tagvalue.toLowerCase() == 'unflagged')
797                    strnamestag += 's:7:"Flagged";b:0;';   
798            var tplTags = strnamestag;
799          }
800      }
801      //Something is wrong with tags: return defaults is no one tag
802      else{
803        tplTags = 's:6:"Recent";s:1:" ";s:6:"Unseen";s:1:" ";s:7:"Deleted";s:1:" ";s:8:"Answered";s:1:" ";s:9:"Forwarded";s:1:" ";s:5:"Draft";s:1:" ";s:10:"Importance";s:6:"Normal";s:7:"Flagged";b:0;';
804      }
805      return(tplTags);
806    }
807}
808
809MAPattern.prototype.toExpressoSearchFlags = function(data){
810    if((data.length > 0) && (typeof(data) != 'undefined')){
811        var Tagdata = eval("(" + data + ")");
812        if(typeof(Tagdata.tag) != 'undefined'){
813        //More than 1 attachment: length will be 'undefined' if just one exists
814        var tflagged = false;
815        if(Tagdata.tag.length >= 0){
816            var strnamestag = '';
817            for(var x=0; x<Tagdata.tag.length; x++){
818                var tagvalue = Tagdata.tag[x]["@value"];
819                if(tagvalue.toLowerCase() == 'recent')
820                    strnamestag += 'N';
821                if(tagvalue.toLowerCase() == 'unseen')
822                    strnamestag += 'U';
823                if(tagvalue.toLowerCase() == 'draft')
824                    strnamestag += 'X';
825                if(tagvalue.toLowerCase() == 'flagged')
826                    tflagged = true;
827                if((tagvalue.toLowerCase() == 'importance_high') && tflagged)
828                        strnamestag += 'F';
829            }
830            var tplTags = strnamestag;
831          }
832         
833          else{
834            var strnamestag = "";
835            var tflagged = false;
836            var tagvalue = Tagdata.tag["@value"];
837                if(tagvalue.toLowerCase() == 'recent')
838                    strnamestag += 'N';
839                if(tagvalue.toLowerCase() == 'unseen')
840                    strnamestag += 'U';
841                if(tagvalue.toLowerCase() == 'draft')
842                    strnamestag += 'X';
843                /*if(tagvalue.toLowerCase() == 'importance_high')
844                    strnamestag += 'F';
845                if(tagvalue.toLowerCase().indexOf('flagged')!= -1)
846                    strnamestag += 'F';*/
847                if(tagvalue.toLowerCase() == 'flagged')
848                    tflagged = true;
849                if((tagvalue.toLowerCase() == 'importance_high') && tflagged)
850                        strnamestag += 'F';
851            var tplTags = strnamestag;
852          }
853          var tplSearchTags = 's:4:"flag";s:' + tplTags.length + ':"' + tplTags + '";'
854      }
855      //Something is wrong with tags: return defaults is no one tag
856      else{
857        var tplSearchTags = 's:4:"flag";s:1:" ";';
858      }
859      //window.alert('tags to search data\n' + tplSearchTags);
860      return(tplSearchTags);
861    }
862}
863
864MAPattern.prototype.toExpressoHeader = function(data){   
865    var tplHeader = 'a:40:{'
866+           's:11:"ContentType";'
867+           's:' + data.getContentType().length + ':"' + data.getContentType() + '";'
868+           expresso_mail_archive.pattern.toExpressoFlags(data.getTags())
869+           's:10:"msg_number";'
870+           's:'+data.getId().length+':"'+data.getId()+'";'
871+           's:5:"udate";'
872+           'i:' + parseInt(data.getDate()/1000) + ';'
873+           's:9:"timestamp";'
874+           'i:' + parseInt(data.getDate()/1000) + ';'
875+           's:4:"from";'
876+           expresso_mail_archive.pattern.toExpressoAddress(data.getFrom())
877//+           's:6:"sender":' xpresso_mail_archive.pattern.toExpressoSender(expresso_mail_archive.currentmessage)
878+           's:2:"to";'
879+           expresso_mail_archive.pattern.toExpressoAddress(data.getTo())
880+           expresso_mail_archive.pattern.toExpressoAddress2(data.getTo())
881+           's:2:"cc";'
882+           expresso_mail_archive.pattern.toExpressoCc(data.getCc())
883+           's:3:"bcc";'
884+           expresso_mail_archive.pattern.toExpressoCc(data.getBcc())
885+           's:7:"subject";'
886+           expresso_mail_archive.pattern.toExpressoSubject(data.getSubject())
887+           's:4:"Size";'
888+           'i:'+data.getSize()+';'
889+           's:10:"msg_sample";' + expresso_mail_archive.pattern.toExpressoPreview(data.getPreview())
890+           's:10:"attachment";'
891+           expresso_mail_archive.pattern.toExpressoAttachmentsHeader(data.getAttachments())
892+           '}';
893    return(tplHeader);
894}
895
896MAPattern.prototype.toExpressoSearchHeader = function(data){   
897    //var accid = new String(account_id);
898    var accid = new String(data.getId());
899    //var fdata = data.getFolderId();
900    var fdata = data.getFolderPath();
901    var fname = fdata;
902       
903    var tplHeader = 'a:16:{'
904+           's:11:"ContentType";'
905+           's:' + data.getContentType().length + ':"' + data.getContentType() + '";'
906+           expresso_mail_archive.pattern.toExpressoSearchFlags(data.getTags())
907+           's:10:"msg_number";'
908+           's:'+data.getId().length+':"'+data.getId()+'";'
909+           's:5:"udate";'
910+           'i:' + parseInt(data.getDate()/1000) + ';'
911+           's:9:"timestamp";'
912+           'i:' + parseInt(data.getDate()/1000) + ';'
913+           's:4:"from";'
914+           's:' + expresso_mail_archive.pattern.toExpressoSearchFrom(data.getFrom()).length + ':"' + expresso_mail_archive.pattern.toExpressoSearchFrom(data.getFrom()) + '";'
915//+           's:6:"sender":' expresso_mail_archive.pattern.toExpressoSender(expresso_mail_archive.currentmessage)
916+           's:2:"to";'
917+           expresso_mail_archive.pattern.toExpressoAddress(data.getTo())
918+           expresso_mail_archive.pattern.toExpressoAddress2(data.getTo())
919+           's:2:"cc";'
920+           expresso_mail_archive.pattern.toExpressoCc(data.getCc())
921+           's:3:"bcc";'
922+           expresso_mail_archive.pattern.toExpressoCc(data.getBcc())
923+           's:7:"subject";'
924+           expresso_mail_archive.pattern.toExpressoSubject(data.getSubject())
925+           's:4:"size";'
926+           'i:'+data.getSize()+';'
927+           's:3:"uid";'
928+           's:'+ accid.length + ':"' + accid + '";'
929+           's:7:"boxname";'
930+           's:'+(fname.length + 6)+':"local_' + fname + '";'
931+           's:10:"msg_sample";' + expresso_mail_archive.pattern.toExpressoPreview(data.getPreview())
932+           's:10:"attachment";'
933+           expresso_mail_archive.pattern.toExpressoAttachmentsHeader(data.getAttachments())
934+           '}';
935
936    //window.alert('return from TplSearchHeader:\n' + tplHeader);
937   
938    return(tplHeader);
939}
940
941/*
942MAPattern.prototype.toExpressoBody = function(mheader){
943    var tplBody = 'a:33:{'
944+                   's:4:"body";N;'
945+                   's:11:"attachments";N;'
946+                   's:6:"thumbs";N;'
947+                   's:9:"signature";N;'
948+                   's:10:"Importance";s:6:"Normal";'
949+                   's:6:"Recent";s:1:" ";'
950+                   's:6:"Unseen";s:1:"N";'
951+                   's:7:"Deleted";s:1:" ";'
952+                   's:7:"Flagged";b:0;'
953+                   's:8:"Answered";s:1:" ";'
954+                   's:5:"Draft";s:1:" ";'
955+                   's:10:"msg_number";s:4:"2241";'
956+                   's:10:"msg_folder";s:5:"INBOX";'
957+                   's:5:"udate";s:5:"10:01";'
958+                   's:7:"msg_day";s:10:"10/05/2011";'
959+                   's:8:"msg_hour";s:5:"10:02";'
960+                   's:8:"fulldate";s:36:"10/05/2011 10:01 (05:35 horas atras)";'
961+                   's:9:"smalldate";s:5:"10:04";'
962+                   's:4:"from";N;'
963+                   's:6:"sender";a:3:{'
964+                       's:4:"name";N;'
965+                       's:5:"email";s:46:"listaregional-pae-bounces@grupos.serpro.gov.br";'
966+                       's:4:"full";s:46:"listaregional-pae-bounces@grupos.serpro.gov.br";'
967+                   '}'
968+                   's:10:"toaddress2";s:32:"comunicacao.social@serpro.gov.br";'
969+                   's:2:"cc";N;'
970+                   's:3:"bcc";N;'
971+                   's:8:"reply_to";N;'
972+                   's:7:"subject";N;'
973+                   's:4:"Size";s:4:"1234";'
974+                   's:15:"reply_toaddress";s:45:"com.social <comunicacao.social@serpro.gov.br>";'
975+                   's:9:"timestamp";i:1305032476;'
976+                   's:5:"login";i:944889240;'
977+                   's:6:"header";a:16:{'
978+                      's:11:"ContentType";s:6:"normal";'
979+                      's:10:"Importance";s:6:"Normal";'
980+                      's:6:"Recent";s:1:" ";'
981+                      's:6:"Unseen";s:1:"N";'
982+                      's:8:"Answered";s:1:" ";'
983+                      's:5:"Draft";s:1:" ";'
984+                      's:7:"Deleted";s:1:" ";'
985+                      's:7:"Flagged";b:0;'
986+                      's:10:"msg_number";s:4:"2251";'
987+                      's:5:"udate";s:10:"10/05/2011";'
988+                      's:11:"offsetToGMT";i:-10800;'
989+                      's:8:"aux_date";N;'
990+                      's:4:"from";a:2:{'
991+                         's:4:"name";s:10:"com.social";'
992+                         's:5:"email";s:32:"comunicacao.social@serpro.gov.br";'
993+                      '}'
994+                      's:2:"to";a:2:{'
995+                         's:4:"name";s:32:"comunicacao.social@serpro.gov.br";'
996+                         's:5:"email";s:32:"comunicacao.social@serpro.gov.br";'
997+                      '}'
998+                      's:7:"subject";s:28:"Primeira leitura - 10/5/2011";'
999+                      's:4:"Size";N;'
1000+                      's:10:"attachment";a:2:{'
1001+                         's:5:"names";b:0;'
1002+                         's:18:"number_attachments";i:0;'
1003+                      '}'
1004+                  '}'
1005+                  's:12:"array_attach";N;'
1006+                  's:15:"url_export_file";s:160:"inc/gotodownload.php?idx_file=/var/www/expressov2/expressoMail1_2/inc/../tmpLclAtt/source_38a3e960115351578aa182ae1d6c2b7b.txt&newfilename=fonte_da_mensagem.txt";'
1007+                  's:2:"to";N;'
1008+              '}';
1009    return(tplBody);
1010}
1011*/
1012
1013MAPattern.prototype.toExpressoMailDataHeader = function(msgid){
1014    var tplHMail = "";
1015    var tmpHead = expresso_mail_archive.getMessageHeaders(msgid);
1016    return tplHMail;   
1017}
1018
1019MAPattern.prototype.toExpressoMailData = function(msg){
1020    var tplBMail = "";
1021   
1022    return(tplBMail);
1023}
1024
1025MAPattern.prototype.toExpressoMailAttachment = function(att){   
1026    var objMsg = expresso_mail_archive.getMessageServiceObject(att);
1027    var attData = objMsg.getAttachments();
1028    var objAtt =  eval("(" + attData + ")");
1029    var srlData = "";
1030
1031    //There are attachments
1032    if(typeof(objAtt.attachment) != 'undefined'){
1033        if(typeof(objAtt.attachment.length) != 'undefined'){
1034            srlData = 's:11:"attachments";a:' + objAtt.attachment.length + ':{';
1035            for(var m=0; m<objAtt.attachment.length; m++){
1036                srlData += 's:1:"' + m + '";'
1037                         + 'a:4:{'
1038                         + 's:3:"pid";s:' + objAtt.attachment[m]["@id"].length + ':"' + objAtt.attachment[m]["@id"] + '";'
1039                         + 's:4:"name";s:' + objAtt.attachment[m]["@name"].length + ':"' + objAtt.attachment[m]["@name"] + '";'
1040                         + 's:8:"encoding";s:' + objAtt.attachment[m]["@encoding"].length + ':"' + objAtt.attachment[m]["@encoding"] + '";'
1041                         + 's:5:"fsize";i:' + objAtt.attachment[m]["@size"] + ';'
1042                         + '}';
1043            }
1044        }
1045        //just one att
1046        else{
1047            srlData = 's:11:"attachments";a:1:{';
1048            srlData += 's:1:"0";'
1049                     + 'a:4:{'
1050                     + 's:3:"pid";s:' + objAtt.attachment["@id"].length + ':"' + objAtt.attachment["@id"] + '";'
1051                     + 's:4:"name";s:' + objAtt.attachment["@name"].length + ':"' + objAtt.attachment["@name"] + '";'
1052                     + 's:8:"encoding";s:' + objAtt.attachment["@encoding"].length + ':"' + objAtt.attachment["@encoding"] + '";'
1053                     + 's:5:"fsize";i:' + objAtt.attachment["@size"] + ';'
1054                     + '}';
1055        }
1056        srlData += '}';           
1057    }   
1058    //No attachments data
1059    else{
1060        srlData = 's:11:"attachments";N;';
1061    }
1062    return(srlData);
1063}
1064
1065MAPattern.prototype.toExpressoMailThumbs = function(thb){
1066    var objMsg = expresso_mail_archive.getMessageServiceObject(thb);
1067    var attData = objMsg.getAttachments();
1068    var objAtt =  eval("(" + attData + ")");
1069    var srlData = "";
1070    var arrThumbs = new Array();
1071    if(typeof(objAtt.attachment) != 'undefined'){       
1072        //more than 1 att
1073        if(typeof(objAtt.attachment.length) != 'undefined'){
1074            for(var m=0; m<objAtt.attachment.length; m++){
1075                //Only images has thums
1076                if(objAtt.attachment[m]["@mediaType"].toLowerCase() == 'image')
1077                    arrThumbs.push(objAtt.attachment[m]);
1078            }
1079        }
1080        //just one att data
1081        else{
1082            if(objAtt.attachment["@mediaType"].toLowerCase() == 'image')
1083                arrThumbs.push(objAtt.attachment);
1084        }
1085        //There are thumbs
1086        if(arrThumbs.length > 0){
1087            srlData = 's:6:"thumbs";a:'+arrThumbs.length+':{'
1088            for(var n=0; n<arrThumbs.length; n++){
1089                var thumblink = '<a onMouseDown=\'save_image(event,this,"image/'+arrThumbs[n]["@subType"]+'")\' href=\'#'+mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/temp/'+arrThumbs[n]["@id"]+'/'+arrThumbs[n]["@name"]+'\' onClick="window.open(\''+mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/temp/'+arrThumbs[n]["@id"]+'/' + arrThumbs[n]["@name"] + '\',\'mywindow\',\'width=700,height=600,scrollbars=yes\');"><IMG id=\''+arrThumbs[n]["@id"]+'\' style=\'border:2px solid #fde7bc;padding:5px\' title=\'Clique na imagem para Ampliar.\' src="'+mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/temp/'+arrThumbs[n]["@id"]+'/thumb/120/' + arrThumbs[n]["@name"] +'"></a>';
1090                srlData += 's:1:"'+n+'";s:'+thumblink.length+':"'+thumblink+'";'
1091            }
1092            srlData += '}';   
1093        }
1094        //No thumbs
1095        else
1096            srlData = 's:6:"thumbs";N;';       
1097    }   
1098    //Something is wrong with attachments thumb behavior: return no thumbs
1099    else{
1100        srlData = 's:6:"thumbs";N;';
1101    }
1102    return(srlData);
1103}
1104
1105MAPattern.prototype.toExpressoMailSignature = function(sgn){
1106    return('s:9:"signature";N;');
1107}
1108
1109MAPattern.prototype.toExpressoMailBaseHeaders = function(hdr){
1110    var defMailHeaders = {'recent':' ','unseen': ' ','deleted': ' ','answered': ' ','draft': ' ','flagged': ' '};
1111    var objMsg = expresso_mail_archive.getMessageServiceObject(hdr);
1112    var tagData = objMsg.getTags();
1113    var objTag = eval('(' + tagData + ')');
1114    var tplHMail = "";
1115   
1116    if(objTag.tag){
1117    //More than 1 attachment - because length will be 'undefined' if just one exists
1118    if(objTag.tag.length >= 0){
1119
1120        //flaggs the tags
1121        for(var k=0; k<objTag.tag.length; k++){
1122            for(var j in defMailHeaders){
1123                var tagvalue = objTag.tag[k]["@value"].toLowerCase();
1124                if((tagvalue == j) && (defMailHeaders[j] != true))
1125                    defMailHeaders[j] = true;
1126                else
1127                    defMailHeaders[j] = false;
1128            }
1129        }
1130       
1131        //serialize all needed headers       
1132        if(defMailHeaders["recent"] == true)
1133            tplHMail += 's:6:"Recent";s:1:"N";';
1134        else
1135            tplHMail += 's:6:"Recent";s:1:" ";';
1136        if(defMailHeaders["unseen"] == true)
1137            tplHMail += 's:6:"Unseen";s:1:"U";';
1138        else
1139            tplHMail += 's:6:"Unseen";s:1:" ";';
1140        if(defMailHeaders["deleted"] == true)
1141            tplHMail += 's:7:"Deleted";s:1:"D";';
1142        else
1143            tplHMail += 's:7:"Deleted";s:1:" ";';
1144        if(defMailHeaders["answered"] == true)
1145            tplHMail += 's:8:"Answered";s:1:"A";';
1146        else
1147            tplHMail += 's:8:"Answered";s:1:" ";';
1148        if(defMailHeaders["draft"] == true)
1149            tplHMail += 's:5:"Draft";s:1:"X";';
1150        else
1151            tplHMail += 's:5:"Draft";s:1:" ";';       
1152        if(defMailHeaders["flagged"] == true)
1153            tplHMail += 's:7:"Flagged";s:1:"F";';
1154        else
1155            tplHMail += 's:7:"Flagged";s:1:" ";';                     
1156    }
1157    }
1158   
1159    //No header to tag
1160    else{
1161        tplHMail += 's:6:"Recent";s:1:" ";';
1162        tplHMail += 's:6:"Unseen";s:1:" ";';
1163        tplHMail += 's:7:"Deleted";s:1:" ";';
1164        tplHMail += 's:8:"Answered";s:1:" ";';
1165        tplHMail += 's:5:"Draft";s:1:" ";';       
1166        tplHMail += 's:7:"Flagged";s:1:" ";';             
1167    }
1168    return tplHMail;       
1169}
1170
1171MAPattern.prototype.toExpressoMailArrayAttach = function(att){
1172    var objMsg = expresso_mail_archive.getMessageServiceObject(att);
1173    var attData = objMsg.getAttachments();
1174    var objAtt =  eval("(" + attData + ")");
1175    var srlData = "";
1176
1177    //There are attacments, map all them
1178    if(typeof(objAtt.attachment) != 'undefined'){
1179        srlData = 's:12:"array_attach";a:' + objAtt.attachment.length + ':{';
1180        for(var m=0; m<objAtt.attachment.length; m++){
1181            var urllink = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/temp/download/'+objAtt.attachment[m]["@id"]+'/'+objAtt.attachment[m]["@name"];
1182            srlData += 's:1:"' + m + '";'
1183                     + 'a:3:{'
1184                     + 's:4:"name";s:' + objAtt.attachment[m]["@name"].length + ':"' + objAtt.attachment[m]["@name"] + '";'
1185                     + 's:3:"url";s:' + urllink.length + ':"' + urllink + '";'
1186                     + 's:3:"pid";s:' + objAtt.attachment[m]["@id"].length + ':"' + objAtt.attachment[m]["@id"] + '";'
1187                     + '}';
1188        }
1189        srlData += '}';
1190    }   
1191    //No one attachment
1192    else{
1193        srlData = 's:12:"array_attach";N;';
1194    }
1195    return(srlData);
1196}
1197
1198MAPattern.prototype.toExpressoMailURLExportFile = function(path, file){
1199    var srlData = 's:15:"url_export_file";';
1200    var urllink = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/'+path+'/'+file;
1201    srlData += 's:' + urllink.length + ':"' + urllink + '";'
1202    return(srlData);
1203}
1204
1205MAPattern.prototype.toExpressoMail = function(mheader, mbody){
1206    var tplMessage = null;
1207    var tplMessageData = null;
1208    var tplMessageHeaderData = null; 
1209   
1210    //Decodes message headers first
1211    var hdata = mheader;
1212    var h_date = expresso_mail_archive.pattern.toExpressoDate(mheader["udate"]*1000);
1213           
1214    //Init message template
1215    tplMessage = 'a:49{s:4:"body";N;'
1216+   expresso_mail_archive.pattern.toExpressoMailAttachment(expresso_mail_archive.currentmessage)
1217+   expresso_mail_archive.pattern.toExpressoMailThumbs(expresso_mail_archive.currentmessage)   
1218+   expresso_mail_archive.pattern.toExpressoMailSignature(expresso_mail_archive.currentmessage)
1219+   expresso_mail_archive.pattern.toExpressoMailBaseHeaders(expresso_mail_archive.currentmessage)
1220+   's:5:"udate";s:8:"' + h_date.split(" ")[1] +'";' //hours
1221+   's:7:"msg_day";s:10:"'+ h_date.split(" ")[0] +'";' //date
1222+   's:8:"msg_hour";s:8:"' + h_date.split(" ")[1] +'";' //hours
1223+   's:8:"fulldate";s:19:"' + h_date +'";' //full date + hours
1224+   's:9:"smalldate";s:8:"' + h_date.split(" ")[1] +'";' //hours
1225+   's:10:"msg_number";s:'+expresso_mail_archive.currentmessage.length+':"'+expresso_mail_archive.currentmessage+'";'
1226+   's:10:"msg_folder";s:'+(expresso_mail_archive.currentfolder.length+6)+':"local_'+expresso_mail_archive.currentfolder+'";'
1227+   's:4:"from";N;'
1228+    expresso_mail_archive.pattern.toExpressoSender(expresso_mail_archive.currentmessage)
1229+    expresso_mail_archive.pattern.toExpressoReplyTo(expresso_mail_archive.currentmessage)
1230+   's:10:"msg_sample";' + expresso_mail_archive.pattern.toExpressoPreview(expresso_mail_archive.currentmessage)
1231+    expresso_mail_archive.pattern.toExpressoAddress2(expresso_mail_archive.currentmessage)
1232+   's:9:"timestamp";i:'+ mheader["udate"]*1000 +';' //getback the lost miliseconds...
1233+   expresso_mail_archive.pattern.toExpressoDispositionNotificationTo(expresso_mail_archive.currentmessage)
1234+   's:5:"login";i:' + account_id
1235+   's:6:"header";' + expresso_mail_archive.pattern.toExpressoHeader(expresso_mail_archive.getMessageServiceObject(expresso_mail_archive.currentmessage))
1236+   expresso_mail_archive.pattern.toExpressoMailArrayAttach(expresso_mail_archive.currentmessage)
1237+   expresso_mail_archive.pattern.toExpressoMailURLExportFile(expresso_mail_archive.currentfolder, expresso_mail_archive.currentmessage)
1238+   's:2:"to";N;'
1239+   '}';
1240
1241    var strMailMessage = connector.unserialize(tplMessage);
1242//    strMessage['from'] = mheader["from"];
1243    //strMessage['from'] = expresso_mail_archive.toExpressoBody(mheader, mbody);
1244//    strMessage['subject'] = mheader["subject"];
1245    strMailMessage['body'] = mbody;
1246//    strMessage['to'] = mheader["to"];
1247//    strMessage['cc'] = mheader["cc"];
1248    strMailMessage['local_message'] = true;
1249    strMailMessage['folder'] = 'local_' + expresso_mail_archive.currentfolder;
1250    //strMessage['msg_number'] = mheader["msg_number"];
1251    //strMailMessage['msg_number'] = mheader["msg_number"];
1252    return(strMailMessage);
1253}
1254
1255MAPattern.prototype.toExpressoMessage = function(mheader, mbody){
1256    var strMessage = null;
1257    var strMessage1 = expresso_mail_archive.pattern.toExpressoBody(mheader);
1258    strMessage = connector.unserialize(strMessage1);
1259       
1260    strMessage['from'] = mheader["from"];
1261    //strMessage['from'] = expresso_mail_archive.toExpressoBody(mheader, mbody);
1262    strMessage['subject'] = mheader["subject"];
1263    strMessage['body'] = mbody;
1264    strMessage['to'] = mheader["to"];
1265    strMessage['cc'] = mheader["cc"];
1266    strMessage['local_message'] = true;
1267    strMessage['folder'] = 'local_' + expresso_mail_archive.currentfolder;
1268    strMessage['msg_number'] = mheader["msg_number"];
1269    return(strMessage);
1270
1271
1272/*
1273 *      retorno['from'] = connector.unserialize(rs.field(2));
1274        retorno['subject'] = rs.field(3);
1275        retorno['body'] = rs.field(4);
1276        //Codigo que as imagens embutidas em emails (com multipart/related ou multipart/mixed) sejam corretamente mostradas em emails arquivados. Os links do
1277        //tipo "./inc/show_embedded_attach.php?msg_folder=[folder]&msg_num=[msg_num]&msg_part=[part]"
1278        //são substituidos pelos links dos anexos capturados pelo gears.
1279
1280        var thumbs= retorno.thumbs;
1281        var anexos= retorno.array_attach;
1282        for (i in anexos)
1283        {
1284            if(anexos[i]['url'] && anexos[i]['url'].match(/((jpg)|(jpeg)|(png)|(gif)|(bmp))/gi))
1285            {
1286                var er_imagens = new RegExp("\\.\\/inc\\/show_embedded_attach.php\\?msg_folder=[\\w/]+\\&msg_num=[0-9]+\\&msg_part="+anexos[i]['pid']);
1287                var Result_imagens = er_imagens.exec(retorno['body']);
1288                retorno['body'] = retorno['body'].replace(Result_imagens,anexos[i]['url']);
1289                if(thumbs && thumbs[i]){
1290                    er_imagens = new RegExp("\\.\\/inc\\/show_thumbs.php\\?file_type=image\\/[\\w]+\\&msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']);
1291                    Result_imagens = er_imagens.exec(thumbs[i]);
1292                    thumbs[i] = thumbs[i].replace(Result_imagens,"'"+anexos[i]['url']+"'");
1293                    er_imagens = new RegExp("\\.\\/inc\\/show_img.php\\?msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']);
1294                    Result_imagens = er_imagens.exec(thumbs[i]);
1295                    thumbs[i] = thumbs[i].replace(Result_imagens,anexos[i]['url']);
1296                    thumbs[i] = thumbs[i].replace(/<IMG/i,'<img width="120"');
1297                }
1298            }
1299        }
1300
1301        retorno['to'] = connector.unserialize(rs.field(5));
1302        retorno['cc'] = connector.unserialize(rs.field(6));
1303
1304        retorno['local_message'] = true;
1305        retorno['msg_folder'] = "local_"+rs.field(7); //Now it's a local folder
1306        retorno['msg_number'] = rs.field(0)+plus_id; //the message number is the rowid
1307 **/
1308}
1309
1310MAPattern.prototype.tagConfig = function(taglist, arcidmsg, op){
1311    //window.alert('no maexpressopattern.tagconfig:\n' + print_r(taglist));
1312    if(taglist != null){
1313        var tagdata = "";
1314        //var flag_draft = false;
1315       
1316        //first message to tag data
1317        if(expresso_mail_archive.taglist == ""){
1318
1319            //Marcosw inicio - código comentado para evitar inconsistência de flags quando mensagens passam pela pasta rascunhos
1320            /*
1321            Draft folder, are "draft"
1322            if(expresso_mail_archive.folder_destination == 'drafts'){
1323                flag_draft = true;
1324                tagdata += '<add value="draft"/>';
1325                tagdata += '<remove value="answered"/>';
1326                tagdata += '<remove value="forwarded"/>';
1327                if (typeof(taglist) == 'object'){
1328                    for(var x in taglist[0]){
1329                        if (x != 'importance'){
1330                            if(( x != 'unseen') && ( x != 'answered')){
1331                                if((taglist[0][x] != '') && (taglist[0][x] != ' ') && (taglist[0][x] != null) && (x != 'msgid'))
1332                                    tagdata += '<remove value="'+x+'"/>';
1333                            }
1334                            else{
1335                                if( x == 'unseen'){
1336                                    if (taglist[0][x] == ' ')
1337                                        tagdata += '<remove value="seen"/>';
1338                                    else
1339                                        if((taglist[0][x] != '') && (taglist[0][x] != null))
1340                                            tagdata += '<remove value="unseen"/>';                               
1341                                }
1342                                if( x == 'answered'){
1343                                    if (taglist[0][x] == ' ')
1344                                        tagdata += '<remove value="unanswered"/>';
1345                                    else
1346                                        if((taglist[0][x] != '') && (taglist[0][x] != null))
1347                                            tagdata += '<remove value="answered"/>';                                                                   
1348                                }                             
1349                            }
1350                        }
1351                        else{
1352                            if((taglist[0][x] != '') && (taglist[0][x] != ' ')){
1353                                switch (taglist[0][x].toLowerCase()){
1354                                    case 'high':
1355                                        tagdata += '<remove value="importance_high"/>';
1356                                        tagdata += '<remove value="flagged"/>';
1357                                        break;
1358                                    default:
1359                                        tagdata += '<remove value="importance_normal"/>';
1360                                        tagdata += '<remove value="unflagged"/>';
1361                                        break;                                       
1362                                }
1363                            }
1364                        }
1365                    }
1366                }
1367                else{
1368                     if(!flag_draft)
1369                        tagdata += '<remove value="'+taglist+'"/>';
1370                }
1371            }
1372            else
1373               tagdata += '<remove value="draft"/>';
1374            */
1375            //Marcosw fim
1376
1377            //Trash folder, are "deleted""
1378            if(expresso_mail_archive.folder_destination == 'trash'){
1379                tagdata += '<add value="deleted"/>';
1380            }
1381            else
1382                tagdata += '<remove value="deleted"/>';
1383       
1384            //Marcosw inicio - código comentado para evitar inconsistência de flags quando mensagens passam pela pasta rascunhos
1385            //if(!flag_draft){
1386            //Marcosw fim
1387
1388            var action;
1389            if (op == 0)
1390                action = 'add';
1391            else
1392                action = 'remove';
1393   
1394            //object data -used at archieve op
1395            if (typeof(taglist) == 'object'){
1396                for(var x in taglist[0]){
1397                    if (x != 'importance'){
1398                        if(( x != 'unseen') && ( x != 'answered')){
1399                            if((taglist[0][x] != '') && (taglist[0][x] != ' ') && (taglist[0][x] != null) && (x != 'msgid'))
1400                                tagdata += '<'+action+' value="'+x+'"/>';
1401                        }
1402                        else{
1403                            if( x == 'unseen'){
1404                                if (taglist[0][x] == ' ')
1405                                    tagdata += '<'+action+' value="seen"/>';
1406                                else
1407                                    if((taglist[0][x] != '') && (taglist[0][x] != null))
1408                                        tagdata += '<'+action+' value="unseen"/>';                               
1409                            }
1410                            if( x == 'answered'){
1411                                if (taglist[0][x] == ' ')
1412                                    tagdata += '<'+action+' value="unanswered"/>';
1413                                else
1414                                    if((taglist[0][x] != '') && (taglist[0][x] != null))
1415                                        tagdata += '<'+action+' value="answered"/>';                                                                   
1416                            }                           
1417                        }
1418                    }
1419                    else{
1420                        if((taglist[0][x] != '') && (taglist[0][x] != ' ')){
1421                            switch (taglist[0][x].toLowerCase()){
1422                                case 'high':
1423                                    tagdata += '<'+action+' value="importance_high"/>';
1424                                    tagdata += '<'+action+' value="flagged"/>';
1425                                    break;
1426                                default:
1427                                    tagdata += '<'+action+' value="importance_normal"/>';
1428                                    tagdata += '<'+action+' value="unflagged"/>';
1429                                    break;                                       
1430                            }
1431                           
1432                       }
1433                       //if no importance data received, defaults is "Normal"
1434                       else{
1435                           tagdata += '<add value="importance_normal"/>';
1436                           tagdata += '<add value="unflagged"/>';
1437                       }
1438                    }
1439                }
1440            }
1441            //string data - used to tag a message when reading it (unseen and important, by now)
1442            else{
1443                if(taglist.indexOf(",") != -1){
1444                    var vet_tags = taglist.split(",");
1445                    for(var k=0; k<vet_tags.length; k++){
1446                        tagdata += '<'+action+' value="'+vet_tags[k]+'"/>';
1447                    }
1448                }
1449                else
1450                    tagdata += '<'+action+' value="'+taglist+'"/>';
1451            }
1452
1453            //Marcosw inicio - código comentado para evitar inconsistência de flags quando mensagens passam pela pasta rascunhos
1454            //}
1455            //Marcosw fim
1456
1457            if(tagdata != ""){   
1458                var tobject = '<tag>'
1459                +              '<message id="'+arcidmsg+'">'
1460                +              tagdata
1461                +              '</message>'
1462                +             '</tag>';
1463                //window.alert('tagdata ret1 = ' + tobject);
1464                return(tobject);
1465            }
1466        }
1467        //more messages to add at tag block
1468        else{
1469            var endpoint = expresso_mail_archive.taglist.lastIndexOf("<");
1470           
1471            //Marcosw inicio - código comentado para evitar inconsistência de flags quando mensagens passam pela pasta rascunhos
1472            /*
1473            Draft folder, are "draft"
1474            if(expresso_mail_archive.folder_destination == 'drafts'){
1475                flag_draft = true;
1476                tagdata += '<add value="draft"/>';
1477                if (typeof(taglist) == 'object'){
1478                    for(var x in taglist[0]){
1479                        if (x != 'importance'){
1480                            if(( x != 'unseen') && ( x != 'answered')){
1481                                if((taglist[0][x] != '') && (taglist[0][x] != ' ') && (taglist[0][x] != null) && (x != 'msgid'))
1482                                    tagdata += '<remove value="'+x+'"/>';
1483                            }
1484                            else{
1485                                if( x == 'unseen'){
1486                                    if (taglist[0][x] == ' ')
1487                                        tagdata += '<remove value="seen"/>';
1488                                    else
1489                                        if((taglist[0][x] != '') && (taglist[0][x] != null))
1490                                            tagdata += '<remove value="unseen"/>';                               
1491                                }
1492                                if( x == 'answered'){
1493                                    if (taglist[0][x] == ' ')
1494                                        tagdata += '<remove value="unanswered"/>';
1495                                    else
1496                                        if((taglist[0][x] != '') && (taglist[0][x] != null))
1497                                            tagdata += '<remove value="answered"/>';                                                                   
1498                                }                             
1499                            }
1500                        }
1501                        else{
1502                            if((taglist[0][x] != '') && (taglist[0][x] != ' ')){
1503                                switch (taglist[0][x].toLowerCase()){
1504                                    case 'high':
1505                                        tagdata += '<'+action+' value="importance_high"/>';
1506                                        tagdata += '<'+action+' value="flagged"/>';
1507                                        break;
1508                                    default:
1509                                        tagdata += '<'+action+' value="importance_normal"/>';
1510                                        tagdata += '<'+action+' value="unflagged"/>';
1511                                        break;                                       
1512                                }
1513                               
1514                            }
1515                           //if no importance data received, defaults is "Normal"
1516                           else{
1517                               tagdata += '<add value="importance_normal"/>';
1518                               tagdata += '<add value="unflagged"/>';
1519                           }
1520                        }
1521                    }
1522                }
1523                else{
1524                     if(!flag_draft)
1525                        tagdata += '<remove value="'+taglist+'"/>';
1526                }
1527            }
1528            else
1529                tagdata += '<remove value="draft"/>';
1530            */
1531            //Marcosw fim
1532
1533            //Trash folder, are "deleted""
1534            if(expresso_mail_archive.folder_destination == 'trash'){
1535                tagdata += '<add value="deleted"/>';
1536            }
1537            else
1538                tagdata += '<remove value="deleted"/>';
1539           
1540            //Marcosw inicio - código comentado para evitar inconsistência de flags quando mensagens passam pela pasta rascunhos
1541            //if(!flag_draft){
1542            //Marcosw fim
1543
1544            var action;
1545            if (op == 0)
1546                action = 'add';
1547            else
1548                action = 'remove';
1549   
1550            //object data -used at archieve op
1551            if (typeof(taglist) == 'object'){
1552                for(var x in taglist[0]){
1553                    if (x != 'importance'){
1554                        if(( x != 'unseen') && ( x != 'answered')){
1555                            if((taglist[0][x] != '') && (taglist[0][x] != ' ') && (taglist[0][x] != null) && (x != 'msgid'))
1556                                tagdata += '<'+action+' value="'+x+'"/>';
1557                        }
1558
1559                        else{
1560                            if( x == 'unseen'){
1561                                if (taglist[0][x] == ' ')
1562                                    tagdata += '<'+action+' value="seen"/>';
1563                                else
1564                                    if((taglist[0][x] != '') && (taglist[0][x] != null))
1565                                        tagdata += '<'+action+' value="unseen"/>';                               
1566                            }
1567                            if( x == 'answered'){
1568                                if (taglist[0][x] == ' ')
1569                                    tagdata += '<'+action+' value="unanswered"/>';
1570                                else
1571                                    if((taglist[0][x] != '') && (taglist[0][x] != null))
1572                                        tagdata += '<'+action+' value="answered"/>';                                                                   
1573                            }                             
1574                        }
1575                    }
1576                    else{
1577                        if((taglist[0][x] != '') && (taglist[0][x] != ' ')){
1578                            switch (taglist[0][x].toLowerCase()){
1579                                case 'important':
1580                                    tagdata += '<'+action+' value="importance_high"/>';
1581                                    tagdata += '<'+action+' value="flagged"/>';
1582                                    break;
1583                                default:
1584                                    tagdata += '<'+action+' value="importance_normal"/>';
1585                                    tagdata += '<'+action+' value="unflagged"/>';
1586                                    break;                                       
1587                            }
1588                           
1589                        }
1590                       //if no importance data received, defaults is "Normal"
1591                       else{
1592                           tagdata += '<add value="importance_normal"/>';
1593                           tagdata += '<add value="unflagged"/>';
1594                       }
1595                    }
1596                }
1597            }
1598            //string data - used to tag a message
1599            else{
1600                if(taglist.indexOf(",") != -1){
1601                    var vet_tags = taglist.split(",");
1602                    for(var k=0; k<vet_tags.length; k++){
1603                        tagdata += '<'+action+' value="'+vet_tags[k]+'"/>';
1604                    }
1605                }
1606                else
1607                    tagdata += '<'+action+' value="'+taglist+'"/>';
1608            }
1609
1610            //Marcosw inicio - código comentado para evitar inconsistência de flags quando mensagens passam pela pasta rascunhos
1611            //}
1612            //Marcosw fim
1613           
1614            if(tagdata != ""){       
1615                var tobject = expresso_mail_archive.taglist.substr(0, endpoint)
1616                +              '<message id="'+arcidmsg+'">'
1617                +              tagdata
1618                +              '</message>'
1619                +             '</tag>';
1620                //window.alert('tagdata ret2 = ' + tobject);
1621                return(tobject);
1622            }           
1623           
1624        }
1625        return(null);
1626    }
1627    return(null);
1628}
1629
1630MAPattern.prototype.zipConfig = function(array_messages){
1631    var tagdata ="";
1632    if(typeof(array_messages) == 'object'){
1633        if(!array_messages["format"])
1634            var def_format = 'zip';
1635        else
1636            var def_format = array_messages["format"].toLowerCase();
1637        var tobject = '<zip format="' + def_format + '">';
1638        //Export from selected messages grid
1639        if(array_messages["type"] == 'messages'){
1640            for(var k=0; k<array_messages["messages"].length;k++){
1641                tobject += '<message id="' + array_messages["messages"][k] + '"/>';
1642            }   
1643        }
1644        //Export from folder management
1645        else{
1646            var folderid = array_messages["messages"];
1647            if (!array_messages["recursive"])
1648                var rec = false;
1649            else
1650                var rec = array_messages["recursive"];
1651            tobject += '<folder id="' + array_messages["messages"] + '" recursive="' + rec + '"/>';
1652        }
1653        tobject += '</zip>';       
1654        return(tobject);
1655    }
1656    return(null);
1657}
1658
1659MAPattern.prototype.download_compressed_attachments = function(msgid,format){
1660    var urldownload = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/temp/download/parts_'+msgid+'.'+format;
1661    return(urldownload);
1662}
1663
1664MAPattern.prototype.message_source = function(msgid){
1665    var urldownload = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/'+folder+'/'+msgid+'.eml';
1666    return(urldownload);
1667}
1668-->
Note: See TracBrowser for help on using the repository browser.