source: trunk/expressoMail1_2/js/MAExpressoPattern.js @ 7971

Revision 7971, 72.7 KB checked in by thiago, 11 years ago (diff)

Ticket #3377 - Corrigido o problema da abertura da mensagem.

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() == 'answered')
826                    strnamestag += 'A';
827                if(tagvalue.toLowerCase() == 'flagged')
828                    tflagged = true;
829                if((tagvalue.toLowerCase() == 'importance_high') || tflagged)
830                        strnamestag += 'F';
831            }
832            var tplTags = strnamestag;
833          }
834         
835          else{
836            var strnamestag = "";
837            var tflagged = false;
838            var tagvalue = Tagdata.tag["@value"];
839                if(tagvalue.toLowerCase() == 'recent')
840                    strnamestag += 'N';
841                if(tagvalue.toLowerCase() == 'unseen')
842                    strnamestag += 'U';
843                if(tagvalue.toLowerCase() == 'draft')
844                    strnamestag += 'X';
845                /*if(tagvalue.toLowerCase() == 'importance_high')
846                    strnamestag += 'F';
847                if(tagvalue.toLowerCase().indexOf('flagged')!= -1)
848                    strnamestag += 'F';*/
849                if(tagvalue.toLowerCase() == 'flagged')
850                    tflagged = true;
851                if((tagvalue.toLowerCase() == 'importance_high') && tflagged)
852                        strnamestag += 'F';
853            var tplTags = strnamestag;
854          }
855          var tplSearchTags = 's:4:"flag";s:' + tplTags.length + ':"' + tplTags + '";'
856      }
857      //Something is wrong with tags: return defaults is no one tag
858      else{
859        var tplSearchTags = 's:4:"flag";s:1:" ";';
860      }
861      //window.alert('tags to search data\n' + tplSearchTags);
862      return(tplSearchTags);
863    }
864}
865
866MAPattern.prototype.toExpressoHeader = function(data){   
867    var tplHeader = 'a:40:{'
868+           's:11:"ContentType";'
869+           's:' + data.getContentType().length + ':"' + data.getContentType() + '";'
870+           expresso_mail_archive.pattern.toExpressoFlags(data.getTags())
871+           's:10:"msg_number";'
872+           's:'+data.getId().length+':"'+data.getId()+'";'
873+           's:5:"udate";'
874+           'i:' + parseInt(data.getDate()/1000) + ';'
875+           's:9:"timestamp";'
876+           'i:' + parseInt(data.getDate()/1000) + ';'
877+           's:4:"from";'
878+           expresso_mail_archive.pattern.toExpressoAddress(data.getFrom())
879//+           's:6:"sender":' xpresso_mail_archive.pattern.toExpressoSender(expresso_mail_archive.currentmessage)
880+           's:2:"to";'
881+           expresso_mail_archive.pattern.toExpressoAddress(data.getTo())
882+           expresso_mail_archive.pattern.toExpressoAddress2(data.getTo())
883+           's:2:"cc";'
884+           expresso_mail_archive.pattern.toExpressoCc(data.getCc())
885+           's:3:"bcc";'
886+           expresso_mail_archive.pattern.toExpressoCc(data.getBcc())
887+           's:7:"subject";'
888+           expresso_mail_archive.pattern.toExpressoSubject(data.getSubject())
889+           's:4:"Size";'
890+           'i:'+data.getSize()+';'
891+           's:10:"msg_sample";' + expresso_mail_archive.pattern.toExpressoPreview(data.getPreview())
892+           's:10:"attachment";'
893+           expresso_mail_archive.pattern.toExpressoAttachmentsHeader(data.getAttachments())
894+           '}';
895    return(tplHeader);
896}
897
898MAPattern.prototype.toExpressoSearchHeader = function(data){   
899    //var accid = new String(account_id);
900    var accid = new String(data.getId());
901    //var fdata = data.getFolderId();
902    var fdata = data.getFolderPath();
903    var fname = fdata;
904       
905    var tplHeader = 'a:16:{'
906+           's:11:"ContentType";'
907+           's:' + data.getContentType().length + ':"' + data.getContentType() + '";'
908+           expresso_mail_archive.pattern.toExpressoSearchFlags(data.getTags())
909+           's:10:"msg_number";'
910+           's:'+data.getId().length+':"'+data.getId()+'";'
911+           's:5:"udate";'
912+           'i:' + parseInt(data.getDate()/1000) + ';'
913+           's:9:"timestamp";'
914+           'i:' + parseInt(data.getDate()/1000) + ';'
915+           's:4:"from";'
916+           's:' + expresso_mail_archive.pattern.toExpressoSearchFrom(data.getFrom()).length + ':"' + expresso_mail_archive.pattern.toExpressoSearchFrom(data.getFrom()) + '";'
917//+           's:6:"sender":' expresso_mail_archive.pattern.toExpressoSender(expresso_mail_archive.currentmessage)
918+           's:2:"to";'
919+           expresso_mail_archive.pattern.toExpressoAddress(data.getTo())
920+           expresso_mail_archive.pattern.toExpressoAddress2(data.getTo())
921+           's:2:"cc";'
922+           expresso_mail_archive.pattern.toExpressoCc(data.getCc())
923+           's:3:"bcc";'
924+           expresso_mail_archive.pattern.toExpressoCc(data.getBcc())
925+           's:7:"subject";'
926+           expresso_mail_archive.pattern.toExpressoSubject(data.getSubject())
927+           's:4:"size";'
928+           'i:'+data.getSize()+';'
929+           's:3:"uid";'
930+           's:'+ accid.length + ':"' + accid + '";'
931+           's:7:"boxname";'
932+           's:'+(fname.length + 6)+':"local_' + fname + '";'
933+           's:10:"msg_sample";' + expresso_mail_archive.pattern.toExpressoPreview(data.getPreview())
934+           's:10:"attachment";'
935+           expresso_mail_archive.pattern.toExpressoAttachmentsHeader(data.getAttachments())
936+           '}';
937
938    //window.alert('return from TplSearchHeader:\n' + tplHeader);
939   
940    return(tplHeader);
941}
942
943/*
944MAPattern.prototype.toExpressoBody = function(mheader){
945    var tplBody = 'a:33:{'
946+                   's:4:"body";N;'
947+                   's:11:"attachments";N;'
948+                   's:6:"thumbs";N;'
949+                   's:9:"signature";N;'
950+                   's:10:"Importance";s:6:"Normal";'
951+                   's:6:"Recent";s:1:" ";'
952+                   's:6:"Unseen";s:1:"N";'
953+                   's:7:"Deleted";s:1:" ";'
954+                   's:7:"Flagged";b:0;'
955+                   's:8:"Answered";s:1:" ";'
956+                   's:5:"Draft";s:1:" ";'
957+                   's:10:"msg_number";s:4:"2241";'
958+                   's:10:"msg_folder";s:5:"INBOX";'
959+                   's:5:"udate";s:5:"10:01";'
960+                   's:7:"msg_day";s:10:"10/05/2011";'
961+                   's:8:"msg_hour";s:5:"10:02";'
962+                   's:8:"fulldate";s:36:"10/05/2011 10:01 (05:35 horas atras)";'
963+                   's:9:"smalldate";s:5:"10:04";'
964+                   's:4:"from";N;'
965+                   's:6:"sender";a:3:{'
966+                       's:4:"name";N;'
967+                       's:5:"email";s:46:"listaregional-pae-bounces@grupos.serpro.gov.br";'
968+                       's:4:"full";s:46:"listaregional-pae-bounces@grupos.serpro.gov.br";'
969+                   '}'
970+                   's:10:"toaddress2";s:32:"comunicacao.social@serpro.gov.br";'
971+                   's:2:"cc";N;'
972+                   's:3:"bcc";N;'
973+                   's:8:"reply_to";N;'
974+                   's:7:"subject";N;'
975+                   's:4:"Size";s:4:"1234";'
976+                   's:15:"reply_toaddress";s:45:"com.social <comunicacao.social@serpro.gov.br>";'
977+                   's:9:"timestamp";i:1305032476;'
978+                   's:5:"login";i:944889240;'
979+                   's:6:"header";a:16:{'
980+                      's:11:"ContentType";s:6:"normal";'
981+                      's:10:"Importance";s:6:"Normal";'
982+                      's:6:"Recent";s:1:" ";'
983+                      's:6:"Unseen";s:1:"N";'
984+                      's:8:"Answered";s:1:" ";'
985+                      's:5:"Draft";s:1:" ";'
986+                      's:7:"Deleted";s:1:" ";'
987+                      's:7:"Flagged";b:0;'
988+                      's:10:"msg_number";s:4:"2251";'
989+                      's:5:"udate";s:10:"10/05/2011";'
990+                      's:11:"offsetToGMT";i:-10800;'
991+                      's:8:"aux_date";N;'
992+                      's:4:"from";a:2:{'
993+                         's:4:"name";s:10:"com.social";'
994+                         's:5:"email";s:32:"comunicacao.social@serpro.gov.br";'
995+                      '}'
996+                      's:2:"to";a:2:{'
997+                         's:4:"name";s:32:"comunicacao.social@serpro.gov.br";'
998+                         's:5:"email";s:32:"comunicacao.social@serpro.gov.br";'
999+                      '}'
1000+                      's:7:"subject";s:28:"Primeira leitura - 10/5/2011";'
1001+                      's:4:"Size";N;'
1002+                      's:10:"attachment";a:2:{'
1003+                         's:5:"names";b:0;'
1004+                         's:18:"number_attachments";i:0;'
1005+                      '}'
1006+                  '}'
1007+                  's:12:"array_attach";N;'
1008+                  '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";'
1009+                  's:2:"to";N;'
1010+              '}';
1011    return(tplBody);
1012}
1013*/
1014
1015MAPattern.prototype.toExpressoMailDataHeader = function(msgid){
1016    var tplHMail = "";
1017    var tmpHead = expresso_mail_archive.getMessageHeaders(msgid);
1018    return tplHMail;   
1019}
1020
1021MAPattern.prototype.toExpressoMailData = function(msg){
1022    var tplBMail = "";
1023   
1024    return(tplBMail);
1025}
1026
1027MAPattern.prototype.toExpressoMailAttachment = function(att){   
1028    var objMsg = expresso_mail_archive.getMessageServiceObject(att);
1029    var attData = objMsg.getAttachments();
1030    var objAtt =  eval("(" + attData + ")");
1031    var srlData = "";
1032
1033    //There are attachments
1034    if(typeof(objAtt.attachment) != 'undefined'){
1035        if(typeof(objAtt.attachment.length) != 'undefined'){
1036            srlData = 's:11:"attachments";a:' + objAtt.attachment.length + ':{';
1037            for(var m=0; m<objAtt.attachment.length; m++){
1038                srlData += 's:1:"' + m + '";'
1039                         + 'a:4:{'
1040                         + 's:3:"pid";s:' + objAtt.attachment[m]["@id"].length + ':"' + objAtt.attachment[m]["@id"] + '";'
1041                         + 's:4:"name";s:' + objAtt.attachment[m]["@name"].length + ':"' + objAtt.attachment[m]["@name"] + '";'
1042                         + 's:8:"encoding";s:' + objAtt.attachment[m]["@encoding"].length + ':"' + objAtt.attachment[m]["@encoding"] + '";'
1043                         + 's:5:"fsize";i:' + objAtt.attachment[m]["@size"] + ';'
1044                         + '}';
1045            }
1046        }
1047        //just one att
1048        else{
1049            srlData = 's:11:"attachments";a:1:{';
1050            srlData += 's:1:"0";'
1051                     + 'a:4:{'
1052                     + 's:3:"pid";s:' + objAtt.attachment["@id"].length + ':"' + objAtt.attachment["@id"] + '";'
1053                     + 's:4:"name";s:' + objAtt.attachment["@name"].length + ':"' + objAtt.attachment["@name"] + '";'
1054                     + 's:8:"encoding";s:' + objAtt.attachment["@encoding"].length + ':"' + objAtt.attachment["@encoding"] + '";'
1055                     + 's:5:"fsize";i:' + objAtt.attachment["@size"] + ';'
1056                     + '}';
1057        }
1058        srlData += '}';           
1059    }   
1060    //No attachments data
1061    else{
1062        srlData = 's:11:"attachments";N;';
1063    }
1064    return(srlData);
1065}
1066
1067MAPattern.prototype.toExpressoMailThumbs = function(thb){
1068    var objMsg = expresso_mail_archive.getMessageServiceObject(thb);
1069    var attData = objMsg.getAttachments();
1070    var objAtt =  eval("(" + attData + ")");
1071    var srlData = "";
1072    var arrThumbs = new Array();
1073    if(typeof(objAtt.attachment) != 'undefined'){       
1074        //more than 1 att
1075        if(typeof(objAtt.attachment.length) != 'undefined'){
1076            for(var m=0; m<objAtt.attachment.length; m++){
1077                //Only images has thums
1078                if(objAtt.attachment[m]["@mediaType"].toLowerCase() == 'image')
1079                    arrThumbs.push(objAtt.attachment[m]);
1080            }
1081        }
1082        //just one att data
1083        else{
1084            if(objAtt.attachment["@mediaType"].toLowerCase() == 'image')
1085                arrThumbs.push(objAtt.attachment);
1086        }
1087        //There are thumbs
1088        if(arrThumbs.length > 0){
1089            srlData = 's:6:"thumbs";a:'+arrThumbs.length+':{'
1090            for(var n=0; n<arrThumbs.length; n++){
1091                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>';
1092                srlData += 's:1:"'+n+'";s:'+thumblink.length+':"'+thumblink+'";'
1093            }
1094            srlData += '}';   
1095        }
1096        //No thumbs
1097        else
1098            srlData = 's:6:"thumbs";N;';       
1099    }   
1100    //Something is wrong with attachments thumb behavior: return no thumbs
1101    else{
1102        srlData = 's:6:"thumbs";N;';
1103    }
1104    return(srlData);
1105}
1106
1107MAPattern.prototype.toExpressoMailSignature = function(sgn){
1108    return('s:9:"signature";N;');
1109}
1110
1111MAPattern.prototype.toExpressoMailBaseHeaders = function(hdr){
1112    var defMailHeaders = {'recent':' ','unseen': ' ','deleted': ' ','answered': ' ','draft': ' ','flagged': ' '};
1113    var objMsg = expresso_mail_archive.getMessageServiceObject(hdr);
1114    var tagData = objMsg.getTags();
1115    var objTag = eval('(' + tagData + ')');
1116    var tplHMail = "";
1117   
1118    if(objTag.tag){
1119    //More than 1 attachment - because length will be 'undefined' if just one exists
1120    if(objTag.tag.length >= 0){
1121
1122        //flaggs the tags
1123        for(var k=0; k<objTag.tag.length; k++){
1124            for(var j in defMailHeaders){
1125                var tagvalue = objTag.tag[k]["@value"].toLowerCase();
1126                if((tagvalue == j) && (defMailHeaders[j] != true))
1127                    defMailHeaders[j] = true;
1128                else
1129                    defMailHeaders[j] = false;
1130            }
1131        }
1132       
1133        //serialize all needed headers       
1134        if(defMailHeaders["recent"] == true)
1135            tplHMail += 's:6:"Recent";s:1:"N";';
1136        else
1137            tplHMail += 's:6:"Recent";s:1:" ";';
1138        if(defMailHeaders["unseen"] == true)
1139            tplHMail += 's:6:"Unseen";s:1:"U";';
1140        else
1141            tplHMail += 's:6:"Unseen";s:1:" ";';
1142        if(defMailHeaders["deleted"] == true)
1143            tplHMail += 's:7:"Deleted";s:1:"D";';
1144        else
1145            tplHMail += 's:7:"Deleted";s:1:" ";';
1146        if(defMailHeaders["answered"] == true)
1147            tplHMail += 's:8:"Answered";s:1:"A";';
1148        else
1149            tplHMail += 's:8:"Answered";s:1:" ";';
1150        if(defMailHeaders["draft"] == true)
1151            tplHMail += 's:5:"Draft";s:1:"X";';
1152        else
1153            tplHMail += 's:5:"Draft";s:1:" ";';       
1154        if(defMailHeaders["flagged"] == true)
1155            tplHMail += 's:7:"Flagged";s:1:"F";';
1156        else
1157            tplHMail += 's:7:"Flagged";s:1:" ";';                     
1158    }
1159    }
1160   
1161    //No header to tag
1162    else{
1163        tplHMail += 's:6:"Recent";s:1:" ";';
1164        tplHMail += 's:6:"Unseen";s:1:" ";';
1165        tplHMail += 's:7:"Deleted";s:1:" ";';
1166        tplHMail += 's:8:"Answered";s:1:" ";';
1167        tplHMail += 's:5:"Draft";s:1:" ";';       
1168        tplHMail += 's:7:"Flagged";s:1:" ";';             
1169    }
1170    return tplHMail;       
1171}
1172
1173MAPattern.prototype.toExpressoMailArrayAttach = function(att){
1174    var objMsg = expresso_mail_archive.getMessageServiceObject(att);
1175    var attData = objMsg.getAttachments();
1176    var objAtt =  eval("(" + attData + ")");
1177    var srlData = "";
1178
1179    //There are attacments, map all them
1180    if(typeof(objAtt.attachment) != 'undefined'){
1181        srlData = 's:12:"array_attach";a:' + objAtt.attachment.length + ':{';
1182        for(var m=0; m<objAtt.attachment.length; m++){
1183            var urllink = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/temp/download/'+objAtt.attachment[m]["@id"]+'/'+objAtt.attachment[m]["@name"];
1184            srlData += 's:1:"' + m + '";'
1185                     + 'a:3:{'
1186                     + 's:4:"name";s:' + objAtt.attachment[m]["@name"].length + ':"' + objAtt.attachment[m]["@name"] + '";'
1187                     + 's:3:"url";s:' + urllink.length + ':"' + urllink + '";'
1188                     + 's:3:"pid";s:' + objAtt.attachment[m]["@id"].length + ':"' + objAtt.attachment[m]["@id"] + '";'
1189                     + '}';
1190        }
1191        srlData += '}';
1192    }   
1193    //No one attachment
1194    else{
1195        srlData = 's:12:"array_attach";N;';
1196    }
1197    return(srlData);
1198}
1199
1200MAPattern.prototype.toExpressoMailURLExportFile = function(path, file){
1201    var srlData = 's:15:"url_export_file";';
1202    var urllink = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/'+path+'/'+file;
1203    srlData += 's:' + urllink.length + ':"' + urllink + '";'
1204    return(srlData);
1205}
1206
1207MAPattern.prototype.toExpressoMail = function(mheader, mbody){
1208    var tplMessage = null;
1209    var tplMessageData = null;
1210    var tplMessageHeaderData = null; 
1211   
1212    //Decodes message headers first
1213    var hdata = mheader;
1214    var h_date = expresso_mail_archive.pattern.toExpressoDate(mheader["udate"]*1000);
1215           
1216    //Init message template
1217    tplMessage = 'a:49{s:4:"body";N;'
1218+   expresso_mail_archive.pattern.toExpressoMailAttachment(expresso_mail_archive.currentmessage)
1219+   expresso_mail_archive.pattern.toExpressoMailThumbs(expresso_mail_archive.currentmessage)   
1220+   expresso_mail_archive.pattern.toExpressoMailSignature(expresso_mail_archive.currentmessage)
1221+   expresso_mail_archive.pattern.toExpressoMailBaseHeaders(expresso_mail_archive.currentmessage)
1222+   's:5:"udate";s:8:"' + h_date.split(" ")[1] +'";' //hours
1223+   's:7:"msg_day";s:10:"'+ h_date.split(" ")[0] +'";' //date
1224+   's:8:"msg_hour";s:8:"' + h_date.split(" ")[1] +'";' //hours
1225+   's:8:"fulldate";s:19:"' + h_date +'";' //full date + hours
1226+   's:9:"smalldate";s:8:"' + h_date.split(" ")[1] +'";' //hours
1227+   's:10:"msg_number";s:'+expresso_mail_archive.currentmessage.length+':"'+expresso_mail_archive.currentmessage+'";'
1228+   's:10:"msg_folder";s:'+(expresso_mail_archive.currentfolder.length+6)+':"local_'+expresso_mail_archive.currentfolder+'";'
1229+   's:4:"from";N;'
1230+    expresso_mail_archive.pattern.toExpressoSender(expresso_mail_archive.currentmessage)
1231+    expresso_mail_archive.pattern.toExpressoReplyTo(expresso_mail_archive.currentmessage)
1232+   's:10:"msg_sample";' + expresso_mail_archive.pattern.toExpressoPreview(expresso_mail_archive.currentmessage)
1233+    expresso_mail_archive.pattern.toExpressoAddress2(expresso_mail_archive.currentmessage)
1234+   's:9:"timestamp";i:'+ mheader["udate"]*1000 +';' //getback the lost miliseconds...
1235+   expresso_mail_archive.pattern.toExpressoDispositionNotificationTo(expresso_mail_archive.currentmessage)
1236+   's:5:"login";i:' + account_id
1237+   's:6:"header";' + expresso_mail_archive.pattern.toExpressoHeader(expresso_mail_archive.getMessageServiceObject(expresso_mail_archive.currentmessage))
1238+   expresso_mail_archive.pattern.toExpressoMailArrayAttach(expresso_mail_archive.currentmessage)
1239+   expresso_mail_archive.pattern.toExpressoMailURLExportFile(expresso_mail_archive.currentfolder, expresso_mail_archive.currentmessage)
1240+   's:2:"to";N;'
1241+   '}';
1242
1243    var strMailMessage = connector.unserializeArchiver(tplMessage);
1244//    strMessage['from'] = mheader["from"];
1245    //strMessage['from'] = expresso_mail_archive.toExpressoBody(mheader, mbody);
1246//    strMessage['subject'] = mheader["subject"];
1247    strMailMessage['body'] = mbody;
1248//    strMessage['to'] = mheader["to"];
1249//    strMessage['cc'] = mheader["cc"];
1250    strMailMessage['local_message'] = true;
1251    strMailMessage['folder'] = 'local_' + expresso_mail_archive.currentfolder;
1252    //strMessage['msg_number'] = mheader["msg_number"];
1253    //strMailMessage['msg_number'] = mheader["msg_number"];
1254    return(strMailMessage);
1255}
1256
1257MAPattern.prototype.toExpressoMessage = function(mheader, mbody){
1258    var strMessage = null;
1259    var strMessage1 = expresso_mail_archive.pattern.toExpressoBody(mheader);
1260    strMessage = connector.unserialize(strMessage1);
1261       
1262    strMessage['from'] = mheader["from"];
1263    //strMessage['from'] = expresso_mail_archive.toExpressoBody(mheader, mbody);
1264    strMessage['subject'] = mheader["subject"];
1265    strMessage['body'] = mbody;
1266    strMessage['to'] = mheader["to"];
1267    strMessage['cc'] = mheader["cc"];
1268    strMessage['local_message'] = true;
1269    strMessage['folder'] = 'local_' + expresso_mail_archive.currentfolder;
1270    strMessage['msg_number'] = mheader["msg_number"];
1271    return(strMessage);
1272
1273
1274/*
1275 *      retorno['from'] = connector.unserialize(rs.field(2));
1276        retorno['subject'] = rs.field(3);
1277        retorno['body'] = rs.field(4);
1278        //Codigo que as imagens embutidas em emails (com multipart/related ou multipart/mixed) sejam corretamente mostradas em emails arquivados. Os links do
1279        //tipo "./inc/show_embedded_attach.php?msg_folder=[folder]&msg_num=[msg_num]&msg_part=[part]"
1280        //são substituidos pelos links dos anexos capturados pelo gears.
1281
1282        var thumbs= retorno.thumbs;
1283        var anexos= retorno.array_attach;
1284        for (i in anexos)
1285        {
1286            if(anexos[i]['url'] && anexos[i]['url'].match(/((jpg)|(jpeg)|(png)|(gif)|(bmp))/gi))
1287            {
1288                var er_imagens = new RegExp("\\.\\/inc\\/show_embedded_attach.php\\?msg_folder=[\\w/]+\\&msg_num=[0-9]+\\&msg_part="+anexos[i]['pid']);
1289                var Result_imagens = er_imagens.exec(retorno['body']);
1290                retorno['body'] = retorno['body'].replace(Result_imagens,anexos[i]['url']);
1291                if(thumbs && thumbs[i]){
1292                    er_imagens = new RegExp("\\.\\/inc\\/show_thumbs.php\\?file_type=image\\/[\\w]+\\&msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']);
1293                    Result_imagens = er_imagens.exec(thumbs[i]);
1294                    thumbs[i] = thumbs[i].replace(Result_imagens,"'"+anexos[i]['url']+"'");
1295                    er_imagens = new RegExp("\\.\\/inc\\/show_img.php\\?msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']);
1296                    Result_imagens = er_imagens.exec(thumbs[i]);
1297                    thumbs[i] = thumbs[i].replace(Result_imagens,anexos[i]['url']);
1298                    thumbs[i] = thumbs[i].replace(/<IMG/i,'<img width="120"');
1299                }
1300            }
1301        }
1302
1303        retorno['to'] = connector.unserialize(rs.field(5));
1304        retorno['cc'] = connector.unserialize(rs.field(6));
1305
1306        retorno['local_message'] = true;
1307        retorno['msg_folder'] = "local_"+rs.field(7); //Now it's a local folder
1308        retorno['msg_number'] = rs.field(0)+plus_id; //the message number is the rowid
1309 **/
1310}
1311
1312MAPattern.prototype.tagConfig = function(taglist, arcidmsg, op){
1313    //window.alert('no maexpressopattern.tagconfig:\n' + print_r(taglist));
1314    if(taglist != null){
1315        var tagdata = "";
1316        //Código comentado para evitar inconsistência de flags quando mensagens passam pela pasta rascunhos
1317        //var flag_draft = false;
1318       
1319        //first message to tag data
1320        if(expresso_mail_archive.taglist == ""){
1321
1322            //Código comentado para evitar inconsistência de flags quando mensagens passam pela pasta rascunhos
1323            /*
1324            Draft folder, are "draft"
1325            if(expresso_mail_archive.folder_destination == 'drafts'){
1326                flag_draft = true;
1327                tagdata += '<add value="draft"/>';
1328                tagdata += '<remove value="answered"/>';
1329                tagdata += '<remove value="forwarded"/>';
1330                if (typeof(taglist) == 'object'){
1331                    for(var x in taglist[0]){
1332                        if (x != 'importance'){
1333                            if(( x != 'unseen') && ( x != 'answered')){
1334                                if((taglist[0][x] != '') && (taglist[0][x] != ' ') && (taglist[0][x] != null) && (x != 'msgid'))
1335                                    tagdata += '<remove value="'+x+'"/>';
1336                            }
1337                            else{
1338                                if( x == 'unseen'){
1339                                    if (taglist[0][x] == ' ')
1340                                        tagdata += '<remove value="seen"/>';
1341                                    else
1342                                        if((taglist[0][x] != '') && (taglist[0][x] != null))
1343                                            tagdata += '<remove value="unseen"/>';                               
1344                                }
1345                                if( x == 'answered'){
1346                                    if (taglist[0][x] == ' ')
1347                                        tagdata += '<remove value="unanswered"/>';
1348                                    else
1349                                        if((taglist[0][x] != '') && (taglist[0][x] != null))
1350                                            tagdata += '<remove value="answered"/>';                                                                   
1351                                }                             
1352                            }
1353                        }
1354                        else{
1355                            if((taglist[0][x] != '') && (taglist[0][x] != ' ')){
1356                                switch (taglist[0][x].toLowerCase()){
1357                                    case 'high':
1358                                        tagdata += '<remove value="importance_high"/>';
1359                                        tagdata += '<remove value="flagged"/>';
1360                                        break;
1361                                    default:
1362                                        tagdata += '<remove value="importance_normal"/>';
1363                                        tagdata += '<remove value="unflagged"/>';
1364                                        break;                                       
1365                                }
1366                            }
1367                        }
1368                    }
1369                }
1370                else{
1371                     if(!flag_draft)
1372                        tagdata += '<remove value="'+taglist+'"/>';
1373                }
1374            }
1375            else
1376               tagdata += '<remove value="draft"/>';
1377            */
1378
1379            //Trash folder, are "deleted""
1380            if(expresso_mail_archive.folder_destination == 'trash'){
1381                tagdata += '<add value="deleted"/>';
1382            }
1383            else
1384                tagdata += '<remove value="deleted"/>';
1385       
1386            //Código comentado para evitar inconsistência de flags quando mensagens passam pela pasta rascunhos
1387            //if(!flag_draft){
1388
1389            var action;
1390            if (op == 0)
1391                action = 'add';
1392            else
1393                action = 'remove';
1394   
1395            //object data -used at archieve op
1396            if (typeof(taglist) == 'object'){
1397                for(var x in taglist[0]){
1398                    if (x != 'importance'){
1399                        if(( x != 'unseen') && ( x != 'answered')){
1400                            if((taglist[0][x] != '') && (taglist[0][x] != ' ') && (taglist[0][x] != null) && (x != 'msgid')) {
1401                                tagdata += '<'+action+' value="'+x+'"/>';
1402                            } else {
1403                                if(x == 'flagged')
1404                                    tagdata += '<'+action+' value="unflagged"/>';
1405                            }
1406                        }
1407                        else{
1408                            if( x == 'unseen'){
1409                                if (taglist[0][x] == ' ')
1410                                    tagdata += '<'+action+' value="seen"/>';
1411                                else
1412                                    if((taglist[0][x] != '') && (taglist[0][x] != null))
1413                                        tagdata += '<'+action+' value="unseen"/>';                               
1414                            }
1415                            if( x == 'answered'){
1416                                if (taglist[0][x] == ' ')
1417                                    tagdata += '<'+action+' value="unanswered"/>';
1418                                else
1419                                    if((taglist[0][x] != '') && (taglist[0][x] != null))
1420                                        tagdata += '<'+action+' value="answered"/>';                                                                   
1421                            }                           
1422                        }
1423                    }
1424                    else{
1425                        if((taglist[0][x] != '') && (taglist[0][x] != ' ')){
1426                            switch (taglist[0][x].toLowerCase()){
1427                                case 'high':
1428                                    tagdata += '<'+action+' value="importance_high"/>';
1429                                    tagdata += '<'+action+' value="flagged"/>';
1430                                    break;
1431                                default:
1432                                    tagdata += '<'+action+' value="importance_normal"/>';
1433                                    tagdata += '<'+action+' value="unflagged"/>';
1434                                    break;                                       
1435                            }
1436                           
1437                       }
1438                       //if no importance data received, defaults is "Normal"
1439                       else{
1440                           tagdata += '<add value="importance_normal"/>';
1441                           tagdata += '<add value="unflagged"/>';
1442                       }
1443                    }
1444                }
1445            }
1446            //string data - used to tag a message when reading it (unseen and important, by now)
1447            else{
1448                if(taglist.indexOf(",") != -1){
1449                    var vet_tags = taglist.split(",");
1450                    for(var k=0; k<vet_tags.length; k++){
1451                        tagdata += '<'+action+' value="'+vet_tags[k]+'"/>';
1452                    }
1453                }
1454                else
1455                    tagdata += '<'+action+' value="'+taglist+'"/>';
1456            }
1457
1458            //Código comentado para evitar inconsistência de flags quando mensagens passam pela pasta rascunhos
1459            //}
1460
1461            if(tagdata != ""){   
1462                var tobject = '<tag>'
1463                +              '<message id="'+arcidmsg+'">'
1464                +              tagdata
1465                +              '</message>'
1466                +             '</tag>';
1467                //window.alert('tagdata ret1 = ' + tobject);
1468                return(tobject);
1469            }
1470        }
1471        //more messages to add at tag block
1472        else{
1473            var endpoint = expresso_mail_archive.taglist.lastIndexOf("<");
1474           
1475            //Código comentado para evitar inconsistência de flags quando mensagens passam pela pasta rascunhos
1476            /*
1477            Draft folder, are "draft"
1478            if(expresso_mail_archive.folder_destination == 'drafts'){
1479                flag_draft = true;
1480                tagdata += '<add value="draft"/>';
1481                if (typeof(taglist) == 'object'){
1482                    for(var x in taglist[0]){
1483                        if (x != 'importance'){
1484                            if(( x != 'unseen') && ( x != 'answered')){
1485                                if((taglist[0][x] != '') && (taglist[0][x] != ' ') && (taglist[0][x] != null) && (x != 'msgid'))
1486                                    tagdata += '<remove value="'+x+'"/>';
1487                            }
1488                            else{
1489                                if( x == 'unseen'){
1490                                    if (taglist[0][x] == ' ')
1491                                        tagdata += '<remove value="seen"/>';
1492                                    else
1493                                        if((taglist[0][x] != '') && (taglist[0][x] != null))
1494                                            tagdata += '<remove value="unseen"/>';                               
1495                                }
1496                                if( x == 'answered'){
1497                                    if (taglist[0][x] == ' ')
1498                                        tagdata += '<remove value="unanswered"/>';
1499                                    else
1500                                        if((taglist[0][x] != '') && (taglist[0][x] != null))
1501                                            tagdata += '<remove value="answered"/>';                                                                   
1502                                }                             
1503                            }
1504                        }
1505                        else{
1506                            if((taglist[0][x] != '') && (taglist[0][x] != ' ')){
1507                                switch (taglist[0][x].toLowerCase()){
1508                                    case 'high':
1509                                        tagdata += '<'+action+' value="importance_high"/>';
1510                                        tagdata += '<'+action+' value="flagged"/>';
1511                                        break;
1512                                    default:
1513                                        tagdata += '<'+action+' value="importance_normal"/>';
1514                                        tagdata += '<'+action+' value="unflagged"/>';
1515                                        break;                                       
1516                                }
1517                               
1518                            }
1519                           //if no importance data received, defaults is "Normal"
1520                           else{
1521                               tagdata += '<add value="importance_normal"/>';
1522                               tagdata += '<add value="unflagged"/>';
1523                           }
1524                        }
1525                    }
1526                }
1527                else{
1528                     if(!flag_draft)
1529                        tagdata += '<remove value="'+taglist+'"/>';
1530                }
1531            }
1532            else
1533                tagdata += '<remove value="draft"/>';
1534            */
1535
1536            //Trash folder, are "deleted""
1537            if(expresso_mail_archive.folder_destination == 'trash'){
1538                tagdata += '<add value="deleted"/>';
1539            }
1540            else
1541                tagdata += '<remove value="deleted"/>';
1542           
1543            //Código comentado para evitar inconsistência de flags quando mensagens passam pela pasta rascunhos
1544            //if(!flag_draft){
1545
1546            var action;
1547            if (op == 0)
1548                action = 'add';
1549            else
1550                action = 'remove';
1551   
1552            //object data -used at archieve op
1553            if (typeof(taglist) == 'object'){
1554                for(var x in taglist[0]){
1555                    if (x != 'importance'){
1556                        if(( x != 'unseen') && ( x != 'answered')){
1557                            if((taglist[0][x] != '') && (taglist[0][x] != ' ') && (taglist[0][x] != null) && (x != 'msgid'))
1558                                tagdata += '<'+action+' value="'+x+'"/>';
1559                        }
1560
1561                        else{
1562                            if( x == 'unseen'){
1563                                if (taglist[0][x] == ' ')
1564                                    tagdata += '<'+action+' value="seen"/>';
1565                                else
1566                                    if((taglist[0][x] != '') && (taglist[0][x] != null))
1567                                        tagdata += '<'+action+' value="unseen"/>';                               
1568                            }
1569                            if( x == 'answered'){
1570                                if (taglist[0][x] == ' ')
1571                                    tagdata += '<'+action+' value="unanswered"/>';
1572                                else
1573                                    if((taglist[0][x] != '') && (taglist[0][x] != null))
1574                                        tagdata += '<'+action+' value="answered"/>';                                                                   
1575                            }                             
1576                        }
1577                    }
1578                    else{
1579                        if((taglist[0][x] != '') && (taglist[0][x] != ' ')){
1580                            switch (taglist[0][x].toLowerCase()){
1581                                case 'important':
1582                                    tagdata += '<'+action+' value="importance_high"/>';
1583                                    tagdata += '<'+action+' value="flagged"/>';
1584                                    break;
1585                                default:
1586                                    tagdata += '<'+action+' value="importance_normal"/>';
1587                                    tagdata += '<'+action+' value="unflagged"/>';
1588                                    break;                                       
1589                            }
1590                           
1591                        }
1592                       //if no importance data received, defaults is "Normal"
1593                       else{
1594                           tagdata += '<add value="importance_normal"/>';
1595                           tagdata += '<add value="unflagged"/>';
1596                       }
1597                    }
1598                }
1599            }
1600            //string data - used to tag a message
1601            else{
1602                if(taglist.indexOf(",") != -1){
1603                    var vet_tags = taglist.split(",");
1604                    for(var k=0; k<vet_tags.length; k++){
1605                        tagdata += '<'+action+' value="'+vet_tags[k]+'"/>';
1606                    }
1607                }
1608                else
1609                    tagdata += '<'+action+' value="'+taglist+'"/>';
1610            }
1611
1612            //Código comentado para evitar inconsistência de flags quando mensagens passam pela pasta rascunhos
1613            //}
1614           
1615            if(tagdata != ""){       
1616                var tobject = expresso_mail_archive.taglist.substr(0, endpoint)
1617                +              '<message id="'+arcidmsg+'">'
1618                +              tagdata
1619                +              '</message>'
1620                +             '</tag>';
1621                //window.alert('tagdata ret2 = ' + tobject);
1622                return(tobject);
1623            }           
1624           
1625        }
1626        return(null);
1627    }
1628    return(null);
1629}
1630
1631MAPattern.prototype.zipConfig = function(array_messages){
1632    var tagdata ="";
1633    if(typeof(array_messages) == 'object'){
1634        if(!array_messages["format"])
1635            var def_format = 'zip';
1636        else
1637            var def_format = array_messages["format"].toLowerCase();
1638        var tobject = '<zip format="' + def_format + '">';
1639        //Export from selected messages grid
1640        if(array_messages["type"] == 'messages'){
1641            for(var k=0; k<array_messages["messages"].length;k++){
1642                tobject += '<message id="' + array_messages["messages"][k] + '"/>';
1643            }   
1644        }
1645        //Export from folder management
1646        else{
1647            var folderid = array_messages["messages"];
1648            if (!array_messages["recursive"])
1649                var rec = false;
1650            else
1651                var rec = array_messages["recursive"];
1652            tobject += '<folder id="' + array_messages["messages"] + '" recursive="' + rec + '"/>';
1653        }
1654        tobject += '</zip>';       
1655        return(tobject);
1656    }
1657    return(null);
1658}
1659
1660MAPattern.prototype.download_compressed_attachments = function(msgid,format){
1661    var urldownload = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/temp/download/parts_'+msgid+'.'+format;
1662    return(urldownload);
1663}
1664
1665MAPattern.prototype.message_source = function(msgid){
1666    var urldownload = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/'+folder+'/'+msgid+'.eml';
1667    return(urldownload);
1668}
1669-->
Note: See TracBrowser for help on using the repository browser.