source: trunk/expressoMail1_2/js/jscode/messages.js @ 2753

Revision 2753, 36.0 KB checked in by amuller, 14 years ago (diff)

Ticket #1059 - Correção do bloqueio de imagens depois de mecher no draw_message

Line 
1draw_message.prototype.draw_message_header = function(header,border_id){
2        this.id = border_id;
3        var defaultWidth = document.body.offsetWidth - 37;
4        if(Element("folderscol").style.display != 'none')
5                defaultWidth -= Element("folderscol").offsetWidth;
6
7        var table_message = createAndSet("TABLE",['id','border','width'],['table_message_'+border_id,"0",defaultWidth]);
8        table_message.id = 'table_message_'+border_id;
9        var tbody_message = document.createElement("TBODY");
10        if (!this.make_options_message(header,tbody_message))
11                return;
12
13        table_message.appendChild(tbody_message);
14        var content = document.getElementById('content_id_' + border_id);
15        content.appendChild(table_message);
16        loading_img = content.appendChild(loading_img);
17};
18
19
20draw_message.prototype.draw_message_body = function (info_msg){
21        var defaultWidth = document.body.offsetWidth - 37;
22        if(Element("folderscol").style.display != 'none')
23                defaultWidth -= Element("folderscol").offsetWidth;
24
25        var table_message = Element('table_message_'+this.id);
26        var tbody_message = table_message.childNodes[0];
27        if(tbody_message.childNodes.length >1)
28                tbody_message.removeChild(tbody_message.lastChild);
29
30        var tbody_message_others_options = document.createElement("TBODY");
31        var tr1 = document.createElement("TR");
32        tr1.className = "tr_message_header";
33        var td1 = createAndSet('TD',['width'],['7%'],get_lang("From: "));
34        td1.appendChild(deny_email(info_msg.from.email));
35        var id=this.id;
36
37        if (info_msg.sender){
38                var tr111 = document.createElement("TR");
39                tr111.className = "tr_message_header";
40                var td111 = createAndSet('TD',['noWrap'],['true'],get_lang("Sent by")+": ");
41                td111.appendChild(deny_email(info_msg.sender.email));
42                var sender = document.createElement("TD");
43                sender.className = "header_message_field";
44                sender.id = "sender_"+id;
45                sender.innerHTML += this.draw_plugin_cc(info_msg.sender.full);
46                var sender_values = createAndSet("INPUT",['id','type','value'],["sender_values_"+id,"HIDDEN",info_msg.sender.full]);
47
48                tbody_message_others_options.appendChild(appendChilds(tr111, td111, sender, sender_values));
49        }
50
51        var from = createAndSet('TD',['id','class'],["from_"+this.id,"header_message_field"],info_msg.from.full);
52
53        if (info_msg.Draft != "X"){
54                from.innerHTML += this.draw_plugin_cc(info_msg.from);
55                tbody_message_others_options.appendChild(tr1);
56        }
57        var from_values = createAndSet('INPUT',['id','type','value'],["from_values_"+id,"HIDDEN",info_msg.from.full]);
58        var local_message = createAndSet("INPUT",['id','name','type','value'],["is_local_"+this.id,"is_local","HIDDEN",(info_msg.local_message)?"1":"0"]);
59        appendChilds(tr1,td1,from,from_values,local_message);
60
61        if (info_msg.reply_to){
62                var tr11 = document.createElement("TR");
63                tr11.className = "tr_message_header";
64                var _td11 = createAndSet('TD',['noWrap'],['true'],get_lang("Reply to")+": ");
65                var _reply_to = createAndSet('TD',['id', 'class'],["reply_to_"+id, "header_message_field"],this.draw_plugin_cc(info_msg.reply_to));
66                var _reply_to_values = createAndSet('INPUT',['id', 'type', 'value'],["reply_to_values_"+id,"HIDDEN",info_msg.reply_to]);
67                tbody_message_others_options.appendChild(appendChilds(tr11,_td11,_reply_to,_reply_to_values));
68        }
69        //////////////////////////////////////////////////////////////////////////////////////////////////////
70        var tr2 = document.createElement("TR");
71        tr2.className = "tr_message_header";
72        var td2 = document.createElement("TD");
73        td2.innerHTML = get_lang("To: ");
74        var to = document.createElement("TD");
75        to.id = "to_"+id;
76
77        var _to_values = createAndSet('INPUT',['id', 'type', 'value'],["to_values_"+id, "HIDDEN", info_msg.toaddress2]);
78        // Salva a pasta da mensagem
79        var _input_cfolder = createAndSet('INPUT',['id', 'name', 'type', 'value'],["input_folder_"+id, "input_folder", "hidden", info_msg.msg_folder]);
80        td2.appendChild(_input_cfolder);
81
82        toaddress_array[id] = info_msg.toaddress2.split(",");
83        if (toaddress_array[id].length > 1){
84                to.innerHTML += this.draw_plugin_cc(toaddress_array[id][0]);
85                var _div_toaddrs = createAndSet('SPAN',['id','style'],["div_toaddress_"+id,'display: inline']," (<a STYLE='color: RED;' onclick=javascript:show_div_address_full('"+id+"','to');>"+get_lang('more')+"</a>)");
86                to.appendChild(_div_toaddrs);
87        }
88        else {
89                to.innerHTML += this.draw_plugin_cc(toaddress_array[id]);
90        }
91        to.className = "header_message_field";
92        tbody_message_others_options.appendChild(appendChilds(tr2,td2,to,_to_values));
93
94        if (info_msg.cc){
95                var tr3 = document.createElement("TR");
96                tr3.className = "tr_message_header";
97                var td3 = document.createElement("TD");
98                td3.innerHTML = "CC: ";
99                var cc = createAndSet("TD",['id', 'class'],["cc_"+this.id,"header_message_field"]);
100
101                var cc_values = createAndSet("INPUT",['id', 'type', 'value'],["cc_values_"+this.id, "HIDDEN", info_msg.cc]);
102                ccaddress_array[this.id] = info_msg.cc.split(",");             
103                if (ccaddress_array[this.id].length > 1){
104                        var div_ccaddress = document.createElement("SPAN");
105                        div_ccaddress.id = "div_ccaddress_"+this.id;
106                        var div_ccaddress_full = createAndSet("SPAN",['id', 'style'],["div_ccaddress_full_"+this.id, "display: inline"]);
107                        cc.innerHTML = this.draw_plugin_cc(ccaddress_array[this.id][0]);
108                        div_ccaddress.innerHTML += " (<a STYLE='color: RED;' onclick=javascript:show_div_address_full('"+this.id+"','cc');>"+get_lang('more')+"</a>)";
109                        cc.appendChild(div_ccaddress);
110                }
111                else{
112                        cc.innerHTML = this.draw_plugin_cc(info_msg.cc);
113                }
114                tbody_message_others_options.appendChild(appendChilds(tr3,td3,cc,cc_values));
115        }
116
117        if (info_msg.bcc)
118        {
119                tbody_message_others_options.appendChild(this.getBcc(info_msg.bcc));
120        }
121
122        var tr4 = document.createElement("TR");
123        tr4.className = "tr_message_header";
124        var td4 = document.createElement("TD");
125        td4.innerHTML = get_lang("Date: ");
126        var msgFull = info_msg.fulldate.split(' ');
127
128        var date = createAndSet('TD',['id','class'],["date_"+id,"header_message_field"],info_msg.fulldate);
129        var date_day = createAndSet('INPUT',['id', 'type', 'value'],["date_day_"+id, "HIDDEN", msgFull[0]]);
130        var date_hour = createAndSet('INPUT',['id', 'type', 'value'],["date_hour_"+id, "HIDDEN", msgFull[1]]);
131        tbody_message_others_options.appendChild(appendChilds(tr4,td4,date,date_day,date_hour));
132
133        var tr5 = document.createElement("TR");
134        tr5.className = "tr_message_header";
135        var td5 = document.createElement("TD");
136        td5.innerHTML = get_lang("Subject");
137        var subject = createAndSet('TD',['id', 'class'],["subject_"+this.id, "header_message_field"],info_msg.subject);
138        tbody_message_others_options.appendChild(appendChilds(tr5,td5,subject));
139        if (info_msg.attachments.length > 0){
140                var tr6 = document.createElement("TR");
141                tr6.className = "tr_message_header";
142                var td6 = document.createElement("TD");
143                td6.innerHTML = get_lang("Attachments: ");
144
145                var attachments = document.createElement("TD");
146                attachments.align='left';
147                td6.vAlign = "top";
148
149                var zipped_attachments = '';
150                if(info_msg.attachments.length >= 1) {
151                        var zipped_attachments  = createAndSet("TABLE",['style','cellPadding','cellSpacing'],['margin-bottom: 4px','0','0']);
152                        var td = document.createElement("TD");
153                        if(info_msg.attachments.length > 1) {
154                                var link_attachment     = document.createElement("A");
155                                if(proxy_mensagens.is_local_folder(current_folder))
156                                        link_attachment.setAttribute("href", "javascript:expresso_local_messages.download_all_local_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"')");
157                                else
158                                        link_attachment.setAttribute("href", "javascript:download_all_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"')");
159                                link_attachment.innerHTML = " "+info_msg.attachments.length+' '+get_lang('files')+' :: '+get_lang('Download all atachments');
160                                link_attachment.innerHTML += '<BR>';
161                                td.appendChild(link_attachment);
162                        }
163                        var tr = document.createElement("TR");
164                        if(parseInt(preferences.remove_attachments_function))
165                        {
166                                var del_attachments = document.createElement("A");
167                                del_attachments.setAttribute("href", "javascript:remove_all_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"')");
168                                del_attachments.innerHTML = get_lang('remove all attachments');
169                                del_attachments.appendChild(document.createElement('BR'));
170                                td.appendChild(del_attachments);
171                                tr.appendChild(td);
172                        }
173                        tr.appendChild(td);
174                        zipped_attachments.appendChild(tr);
175                        attachments.appendChild(zipped_attachments);
176                }
177
178                attachments.id = "attachments_" + this.id;
179                for (var i=0; i<info_msg.attachments.length; i++){
180                        var link_attachment = document.createElement("A");
181                        link_attachment.setAttribute("href", proxy_mensagens.link_anexo(info_msg,i));
182                        //link_attachment.setAttribute("href", "javascript:download_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"',"+i+",'"+info_msg.attachments[i].pid+"','"+info_msg.attachments[i].encoding+"')");
183                        link_attachment.innerHTML = url_decode(info_msg.attachments[i].name);
184                        link_attachment.innerHTML += "&nbsp;"+borkb(info_msg.attachments[i].fsize);
185
186                        if((url_decode(info_msg.attachments[i].name).indexOf(".ics")!=-1) || (url_decode(info_msg.attachments[i].name).indexOf(".vcard")!=-1)){
187                                //Link para importar calendário
188                                var link_import_attachment = createAndSet("IMG",['src','onclick','title','align','style'],["templates/"+template+"/images/new.png","javascript:import_calendar('"+info_msg.msg_folder+"&msg_number="+info_msg.msg_number+"&msg_part="+info_msg.attachments[i].pid+"&idx_file="+i+"&encoding="+info_msg.attachments[i].encoding+"');",get_lang("Import to calendar"),"top","cursor: pointer"]);
189                                var space = document.createElement("span");
190                                space.innerHTML = "&nbsp;";
191                                appendChilds(attachments,link_attachment,space,link_import_attachment);
192                        }
193                        else {
194                                link_attachment.innerHTML += '<BR>';
195                                attachments.appendChild(link_attachment);
196                        }
197                }
198                tr6.appendChild(td6);
199                tr6.appendChild(attachments);
200                tbody_message_others_options.appendChild(tr6);
201        }
202
203
204        // BEGIN MAKE THE SCROLL HEIGHT
205        var bar = document.getElementById("toolbar");
206        var offset = 0;
207        if(bar.style.visibility != 'hidden')
208                offset = bar.offsetHeight ? bar.offsetHeight :  bar.clientHeight;
209        var div = document.createElement("DIV");
210        div.id = "div_message_scroll_"+this.id;
211        div.style.background = 'WHITE';
212        div.style.height = document.body.clientHeight - offset - 125;
213        div.style.overflow = "auto";
214        div.style.width = defaultWidth - (is_ie ? 5 : 0);
215        // END MAKE THE SCROLL HEIGHT
216
217        var table_msg_details = createAndSet("TABLE",['id','width','class'],['table_msg_details_' + this.id,defaultWidth - 30,'table_message']);
218        table_msg_details.style.display = 'none';
219        table_msg_details.appendChild(tbody_message_others_options);
220        div.appendChild(table_msg_details);
221
222        var tr = document.createElement("TR");
223        var td = document.createElement("TD");
224        td.colSpan = '2';
225
226        var newBody = this.blockImage(info_msg,this.id,td);
227
228        td.appendChild(div);
229        tr.appendChild(td);
230        tbody_message.appendChild(tr);
231
232        ////////////////////////////////////////////////////////////////////////////////////////////////////// 
233        //Make the body message.
234        ///////////////////////////////////////////////////////////////////////////////////////////////////////
235        var tr = document.createElement("TR");
236        tr.className = "tr_message_body";
237        var td = document.createElement("TD");
238        //td.setAttribute("colSpan","2");
239        newBody = newBody.replace("<body","<span");
240        newBody = newBody.replace("<BODY","<span");
241        div.innerHTML+= "<span id='body_"+this.id+"' style='font-size:16px;'>"+newBody+"</span><br><br>";
242        function mailto( link )
243        {
244                var mail = link.href.substr( 7 );
245                link.onclick = function( )
246                {
247                        new_message_to( mail );
248                        return false;
249                };
250        }
251        var links = div.getElementsByTagName( 'a' );
252        for ( var i = 0; i < links.length; i++ )
253                if ( links.item( i ).href.indexOf( 'mailto:' ) === 0 )
254                        mailto( links.item( i ) );
255                else
256                {
257                        if ( links.item( i ).href.indexOf( 'javascript:' ) !== 0 )
258                                links.item( i ).setAttribute( 'target', '_blank' );
259                }
260
261        if ((info_msg.thumbs)&&(info_msg.thumbs.length > 0)){
262                ////////////////////////////////////////////////////////////////////////////////////////////////////// 
263                //Make the thumbs of the message.
264                //////////////////////////////////////////////////////////////////////////////////////////////////////
265                div.appendChild(this.getThumbs(info_msg.attachments, info_msg.thumbs, info_msg.msg_number, info_msg.msg_folder));
266        }
267
268
269        var msg_number = createAndSet("INPUT",['id','type','value'],["msg_number_" + this.id, "hidden", info_msg.msg_number]);
270        var content = document.getElementById('content_id_' + this.id);
271        try{
272                loading_img = content.removeChild( loading_img );
273        }catch(e){};
274        content.style.height = document.body.clientHeight - offset - 90;
275        content.appendChild(msg_number);
276        //////////////////////////////////////////////////////////////////////////////////////////////////////
277
278        //Exibe o cabecalho da mensagem totalmente aberto caso esteja setado nas preferencias do usuario
279        if (preferences.show_head_msg_full == 1)
280        {
281                option_hide_more.onclick();
282
283                if (Element('div_toaddress_'+this.id) != null)
284                {
285                        show_div_address_full(this.id,'to');
286                }       
287                if (Element('div_ccaddress_'+this.id) != null)
288                {
289                        show_div_address_full(this.id,'cc');
290                }
291        }
292
293};
294
295draw_message.prototype.make_options_message = function(info_msg, tbody_message){
296        var tr0 = document.createElement("TR");
297        tr0.className = "tr_message_header";
298        var td0 = document.createElement("TD");
299        var table_message_options = createAndSet("TABLE",['border','width','class'],["0","100%",'table_message']);
300        var tbody_message_options = document.createElement("TBODY");
301        var tr = document.createElement("TR");
302        var td = document.createElement("TD");
303        td.setAttribute("noWrap","true");
304        var _name = '';
305        var menuHidden = Element("folderscol").style.display == 'none' ? true : false;
306
307        var folder_id = info_msg.msg_number;
308        var folder = document.getElementById(folder_id);
309        if (!folder){
310                delete_border(this.id);
311                return false;
312        }
313
314        var next_previous_msg_td = this.createNxtPrevButtons(info_msg.msg_folder,folder_id);
315        if (typeof(next_previous_msg_td) == 'undefined')
316                return false;
317
318
319        var _maxChar = menuHidden ? 40 : 15;
320
321        if (info_msg.from.name)
322        {
323                var spanName = document.createElement("SPAN");
324                spanName.innerHTML = info_msg.from.name;
325                _name = spanName.innerHTML.length > _maxChar ? spanName.innerHTML.substring(0,_maxChar) + "..." : spanName.innerHTML;
326        }
327        else
328                _name = info_msg.from.email.length > _maxChar ? info_msg.from.email.substring(0,_maxChar) + "..." : info_msg.from.email;
329        var id = this.id;
330        td.innerHTML = _name.bold() + ', ' + info_msg.udate;
331        if (info_msg.attachment.names.length > 0)
332                td.innerHTML += "&nbsp<img style='cursor:pointer' onclick='javascript:Element(\"option_hide_more_"+id+"\").onclick()' src ='" + URL_SERVER + "expressoMail1_2/templates/"+template+"/images/clip.gif' title='"+info_msg.attachment.names+"'>";
333
334        if (typeof(info_msg.signature) == 'string')
335        {
336                if (info_msg.signature != "void")
337                        td.innerHTML += '&nbsp;<img style="cursor:pointer" onclick="alert(\''+ get_lang("This message is signed, and you can trust.") + info_msg.signature +'\');" src="' + URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/signed.gif">';
338                else
339                        td.innerHTML += "&nbsp;<img style='cursor:pointer' onclick='alert(\""+get_lang("This message is signed, but it is invalid. You should not trust on it.")+"\");' title='"+get_lang("Voided message")+"' src='" + URL_SERVER + "expressoMail1_2/templates/"+template+"/images/invalid.gif'>";
340        }
341
342        if (info_msg.DispositionNotificationTo)
343        {
344                td.innerHTML += '&nbsp;<img style="cursor:pointer" alt="'+ get_lang('Message with read notification') + '" title="'+ get_lang('Message with read notification') + '" src="' + URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/notification.gif">';
345        }
346
347        // NORMAL MSG
348        if(info_msg.Draft != 'X')
349        {
350                var options = createAndSet("TD",['noWrap','width','align'],['true','30%','right']);
351                var option_hide_more = createAndSet("SPAN",['class','value','id'],['message_options','more_options','option_hide_more_'+id],get_lang('show details'));
352                option_hide_more.onclick = function(){
353                        try{
354                                var _height = Element("div_message_scroll_"+id).style.height;
355                        }
356                        catch(e){
357                                return;
358                        }
359                        _height = parseInt(_height.replace("px",""));
360                        var _offset = 35;
361                        if (this.value != 'hide_options'){
362                                this.innerHTML = "<b><u>"+get_lang('hide details')+"</u></b>";
363                                this.value = 'hide_options';
364                                Element("div_message_scroll_"+id).style.height = (_height - _offset)+"px";
365                                Element('table_msg_details_'+id).style.display = '';
366
367                        }
368                        else{
369                                this.innerHTML = get_lang('show details');
370                                this.value = 'more_options';
371                                Element("div_message_scroll_"+id).style.height = (_height + _offset)+"px";
372                                Element('table_msg_details_'+id).style.display = 'none';
373                        }
374                };
375                var option_mark = createAndSet("TD",['width','align'],['50%','left']);
376
377                var option_mark_as_unseen = '<span class="message_options" onclick="changeLinkState(this,\'seen\');set_messages_flag(\'unseen\','+
378                                                folder_id+');write_msg(\''+get_lang('Message marked as ')+get_lang("Unseen")+
379                                                '.\');">'+get_lang("Unseen")+'</span>, ';
380
381                if (info_msg.Flagged == "F")
382                        var option_mark_important = '<span class="message_options" onclick="changeLinkState(this,\'important\');set_messages_flag(\'unflagged\','+
383                                                        folder_id+');write_msg(\''+get_lang('Message marked as ')+get_lang("Normal")+
384                                                        '.\');">'+get_lang("Normal")+'</span>';
385                else
386                        var option_mark_important = '<span class="message_options" onclick="changeLinkState(this,\'normal\');set_messages_flag(\'flagged\','+folder_id+');write_msg(\''+get_lang('Message marked as ')+get_lang("Important")+
387                                                                    '.\');">'+get_lang("Important")+'</span>';
388                option_mark.innerHTML = option_mark_as_unseen+option_mark_important;
389
390                var option_forward = createAndSet("SPAN",['id','class'],['msg_opt_forward_'+this.id, 'message_options'],get_lang('Forward'));
391                option_forward.onclick = function(){new_message('forward', this.id);};
392                appendChilds(options,option_hide_more,createAndSet('SPAN',false,false,'&nbsp;|&nbsp;'),option_forward);
393
394                var option_reply_options = createAndSet("IMG",['id', 'src', 'value'],['msg_opt_reply_options_'+id,URL_SERVER+'expressoMail1_2/templates/default/images/down.png','show']);
395                option_reply_options.onmouseover = function(){
396                                option_reply_options.src= URL_SERVER+'expressoMail1_2/templates/default/images/over.png';
397                };
398                option_reply_options.onmouseout = function(){
399                        if (this.value == 'show')
400                        {
401                                option_reply_options.src= URL_SERVER+'expressoMail1_2/templates/default/images/down.png';
402                        }
403                        else
404                        {
405                                option_reply_options.src= URL_SERVER+'expressoMail1_2/templates/default/images/pressed.png';
406                        }
407                };
408                option_reply_options.onclick = function(){
409                        if (this.value != 'hide'){
410                                this.value = 'hide';
411                                option_reply_options.src= URL_SERVER+'expressoMail1_2/templates/default/images/pressed.png';
412                                Element('tr_other_options_'+id).style.display = '';
413
414                        }
415                        else{
416                                this.value = 'show';
417                                option_reply_options.src= URL_SERVER+'expressoMail1_2/templates/default/images/down.png';
418                                Element('tr_other_options_'+id).style.display = 'none';
419                        }
420                };
421
422                var _option_reply = createAndSet("SPAN",['id','class'],['msg_opt_reply_'+id,'message_options'],get_lang('Reply'));
423                _option_reply.onclick = function(){new_message('reply_with_history', id);};
424
425                appendChilds(options,createAndSet('SPAN',false,false,'&nbsp;|&nbsp;'),option_reply_options,_option_reply);
426                appendChilds(tr,td,option_mark,options,next_previous_msg_td);
427                tbody_message_options.appendChild(tr);
428
429                ////////// OTHER OPTIONS ////////////////////
430                var _tr_other_options = createAndSet("TR",['id'],['tr_other_options_' + id]);
431                _tr_other_options.style.display = 'none';
432
433                var div_other_options = document.createElement("DIV");
434
435                var option_mark_as      = '<span>'+get_lang("Mark as")+'</span>: ';
436                var option_mark_as_unseen       = '<span class="message_options" onclick="proxy_mensagens.proxy_set_messages_flag(\'unseen\','+info_msg.msg_number+');write_msg(\''+get_lang('Message marked as ')+get_lang("Unseen")+'.\');">'+get_lang("Unseen")+'</span>, ';
437                var option_mark_as_important                    = '<span class="message_options" onclick="proxy_mensagens.proxy_set_messages_flag(\'flagged\','+info_msg.msg_number+');write_msg(\''+get_lang('Message marked as ')+get_lang("Important")+'.\');">'+get_lang("Important")+'</span>, ';
438                var option_mark_as_normal                               = '<span class="message_options" onclick="proxy_mensagens.proxy_set_messages_flag(\'unflagged\','+info_msg.msg_number+');write_msg(\''+get_lang('Message marked as ')+get_lang("Normal")+'.\');">'+get_lang("Normal")+'</span> | ';
439
440                var option_reply_without_history                = '<span onmouseover="this.className=\'reply_options_active\'" onmouseout="this.className=\'reply_options\'" class="reply_options" onclick=new_message("reply_without_history","'+id+'");>'+get_lang("Reply without history")+'</span>';
441                var option_reply_to_all                                 = '<span onmouseover="this.className=\'reply_options_active\'" onmouseout="this.className=\'reply_options\'" class="reply_options" onclick=new_message("reply_to_all_with_history","'+id+'");>'+get_lang("Reply to all")+'</span> | ';
442
443                var option_reply_to_all_without_history = '<span onmouseover="this.className=\'reply_options_active\'" onmouseout="this.className=\'reply_options\'" class="reply_options" onclick=new_message("reply_to_all_without_history","'+id+'");>'+get_lang("Reply to all without history")+'</span> | </div>';
444
445                div_other_options.innerHTML = option_reply_to_all + option_reply_to_all_without_history + option_reply_without_history;
446                if (use_spam_filter) {
447                        if(info_msg.msg_folder == 'INBOX'+cyrus_delimiter+'Spam')
448                                div_other_options.innerHTML += ' | <span class="reply_options" onclick="nospam('+info_msg.msg_number+',\'null\', \''+info_msg.msg_folder+'\')";>'+get_lang("Not Spam")+'</span>';
449                        else
450                                div_other_options.innerHTML += ' | <span class="reply_options" onclick="spam(\''+info_msg.msg_folder+'\', '+info_msg.msg_number+',\'null\')";>'+get_lang("Mark as Spam")+'</span>';
451                }
452
453                var td_other_options = createAndSet("TD",['colSpan','align','noWrap'],['3','right','true']);
454                td_other_options.appendChild(div_other_options);
455
456                _tr_other_options.appendChild(td_other_options);
457                tbody_message_options.appendChild(_tr_other_options);
458                ////////// END OTHER OPTIONS ////////////////
459                table_message_options.appendChild(tbody_message_options);
460                td0.appendChild(table_message_options);
461                tr0.appendChild(td0);
462                tbody_message.appendChild(tr0);
463                if (info_msg.signature && info_msg.signature.length > 0)
464                {
465                        tbody_message.appendChild(putSignature(this.id,info_msg,td));
466                }
467        }
468        else    // IF DRAFT
469        {
470                var options = createAndSet('TD',['width','noWrap','align'],['1%','true','right']);
471                var option_hide_more = createAndSet("SPAN",['class','value','id'],['message_options','more_options','option_hide_more_'+this.id],get_lang('Show details'));
472                option_hide_more.onclick = function(){
473                        var _height = Element("div_message_scroll_"+id).style.height;
474                        _height = parseInt(_height.replace("px",""));
475                        var _offset = 35;
476                        if (this.value != 'hide_options'){
477                                this.innerHTML = "<b><u>"+get_lang('Hide details')+"</u></b>";
478                                this.value = 'hide_options';
479                                Element("div_message_scroll_"+id).style.height = (_height - _offset)+"px";
480                                Element('table_msg_details_'+id).style.display = '';
481                        }
482                        else{
483                                this.innerHTML = get_lang('show details');
484                                this.value = 'more_options';
485                                Element("div_message_scroll_"+id).style.height = (_height + _offset)+"px";
486                                Element('table_msg_details_'+id).style.display = 'none';
487                        }
488                };
489                var option_edit = createAndSet('SPAN',['class'],['message_options'], get_lang('Edit'));
490                option_edit.onclick= function () { new_message('edit',this.id); };
491                appendChilds(options, option_hide_more, createAndSet('SPAN',false,false,"&nbsp;|&nbsp;"), option_edit);
492
493                tbody_message_options.appendChild(appendChilds(tr, td, options, next_previous_msg_td));
494                table_message_options.appendChild(tbody_message_options);
495                td0.appendChild(table_message_options);
496                tr0.appendChild(td0);
497                tbody_message.appendChild(tr0);
498        }
499        return true;
500};
501
502
503/* Class draw_message */
504function draw_message(){
505        this.id=0;
506}
507draw_message.prototype.createNxtPrevButtons = function(msg_folder,folder_id){
508        var next_previous_msg_td = createAndSet("TD",[ "noWrap", "align", "width" ], [ "true", "right", "40px"]);
509        var img_next_msg = createAndSet("IMG", [ 'id', 'src', 'title' ], [
510                        'msg_opt_next_' + this.id,
511                        URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/down.button.png',
512                        get_lang('Next') ]);
513        img_next_msg.style.cursor = 'pointer';
514
515        var folder = document.getElementById(folder_id);
516        if (folder){ // mensagem local criptografada nao tem ID da pasta local
517                if (folder.nextSibling){
518                        var nextMsgBox = folder.nextSibling.name?folder.nextSibling.name:msg_folder;
519
520                        if (nextMsgBox == "INBOX/decifradas")// teste para ver se a mensagem vem da pasta oculta decifradas
521                                nextMsgBox = get_current_folder();
522
523                        img_next_msg.onclick = function()
524                        {
525                                openTab.type[currentTab] = 2;
526                                if ( nextMsgBox == undefined )
527                                       nextMsgBox = current_folder;
528                                for (var i=0; i < draw_box.headers_msgs.length; i++)
529                                        if (draw_box.headers_msgs[i].msg_number == folder.nextSibling.id){
530                                                var nextHeader = draw_box.headers_msgs[i];
531                                                break;
532                                        }
533                                proxy_mensagens.get_msg(nextHeader,nextMsgBox,true,show_msg,currentTab);
534                        };
535                }
536                else
537                {
538                        img_next_msg.src = URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/down.gray.button.png';
539                        img_next_msg.style.cursor = 'default';
540                }
541        }
542        else
543        {
544                img_next_msg.src = URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/down.gray.button.png';
545                img_next_msg.style.cursor = 'default';
546                if (!proxy_mensagens.is_local_folder(get_current_folder()) && !(msg_folder == "INBOX/decifradas")) // testa se a mensagem e local
547                {
548                        img_next_msg.onclick = function()
549                        {
550                                delete_border(this.id);
551                        };
552                }
553        }
554        var img_space = document.createElement("SPAN");
555        img_space.innerHTML = "&nbsp;";
556        var img_previous_msg = createAndSet("IMG",['id','src','title'],['msg_opt_previous_' + this.id,
557                        URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/up.button.png',
558                        get_lang('Previous')]);
559        img_previous_msg.style.cursor = 'pointer';
560
561        if (!folder){
562                delete_border(this.id);
563                return;
564        }
565        if (folder){ // mensagem local criptografada nao tem this.id da pasta local
566                if (folder.previousSibling)
567                {
568                        var previousMsgBox = folder.previousSibling.name?folder.previousSibling.name:msg_folder;
569
570                        if (previousMsgBox == "INBOX/decifradas") // teste para ver se a mensagem vem da pasta oculta decifradas
571                                previousMsgBox = get_current_folder();
572
573                        img_previous_msg.onclick = function()
574                        {
575                                openTab.type[currentTab] = 2;
576                                if ( previousMsgBox == undefined )
577                                       previousMsgBox = current_folder;
578                                 for (var i=0; i < draw_box.headers_msgs.length; i++)
579                                        if (draw_box.headers_msgs[i].msg_number == folder.previousSibling.id){
580                                                var previousHeader = draw_box.headers_msgs[i];
581                                                break;
582                                        }
583                                proxy_mensagens.get_msg(previousHeader,previousMsgBox,true,show_msg,currentTab);
584                        };
585                }
586                else
587                {
588                        img_previous_msg.src = URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/up.gray.button.png';
589                        img_previous_msg.style.cursor = 'default';
590                }
591        }
592        else
593        {
594                img_previous_msg.src = URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/up.gray.button.png';
595                img_previous_msg.style.cursor = 'default';
596                if (!proxy_mensagens.is_local_folder(get_current_folder()) && !(msg_folder == "INBOX/decifradas")) // testa se a mensagem e local
597                {
598                        img_previous_msg.onclick = function()
599                        {
600                                delete_border(this.id);
601                        };
602                }
603        }
604        next_previous_msg_td.appendChild(img_previous_msg);
605        next_previous_msg_td.appendChild(img_space);
606        next_previous_msg_td.appendChild(img_next_msg);
607        return next_previous_msg_td;
608
609};
610var idx_cc = 0;
611draw_message.prototype.draw_plugin_cc = function(addrs)
612{
613    expresso.connector.loadScript("jscode/ccQuickAdd");
614    var id=this.id;
615
616    var array_addrs = '';
617    var array_name      = '';
618    var cc_data = new Array();
619    if(typeof(addrs.name) != 'undefined') {
620        array_name      = LTrim(addrs.name).split(" ");
621        array_addrs = new Array(addrs.email);
622    }
623    else {
624        array_addrs = (typeof addrs == 'object' ? addrs.toString().split("\" ") : addrs.split("\" "));
625        array_name      = LTrim(array_addrs[0]).replace('"','').split(" ");
626    }
627
628    var _split = array_name[0].split('@');
629    cc_data[0] = _split[0];
630    cc_data[1] = _split[0];
631    cc_data[2] = '';
632
633    for (i=1; i < array_name.length; i++)
634        cc_data[2] += array_name[i] + " ";
635
636
637    if(array_addrs.length > 1)
638        cc_data[3] = array_addrs[1] ? array_addrs[1].replace("&lt;",'').replace("&gt;",'') : '';
639    else
640        cc_data[3] = array_addrs[0];
641
642    var sm_envelope_img1 = '<img style="cursor:'+ (is_ie ? 'hand' : 'pointer') +'" title="' + get_lang("Add Contact") +
643    '" onclick="ccQuickAddOne.showList(\''+cc_data+'\')" src="' + URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/user_card.png">';
644    var to_addybook_add = "<SPAN id='insert_plugin_"+idx_cc+"_"+id+"'>";
645    to_addybook_add += addrs;
646    to_addybook_add +=  sm_envelope_img1;
647    idx_cc++;
648    to_addybook_add += "</SPAN>";
649    return to_addybook_add;
650};
651
652
653draw_message.prototype.show_signature_certificate_data = function(){
654        var _height = Element("div_message_scroll_"+this.id).style.height;
655        _height = parseInt(_height.replace("px",""));
656        var _offset = 130;
657        if (this.value == 'more_cert'){
658                //this.innerHTML += "<b><u>Mais Informaᅵᅵes</u></b>";
659                this.value = 'hide_cert';
660                Element("div_message_scroll_"+this.id).style.height = (_height + _offset)+"px";
661                Element('tr_signature_'+this.id).style.display = 'none';
662                Element('td_signature_'+this.id).style.display = 'none';
663
664        }
665        else{
666                //this.innerHTML += "Mais Informaᅵᅵes";
667                this.value = 'more_cert';
668                Element("div_message_scroll_"+this.id).style.height = (_height - _offset)+"px";
669                Element('tr_signature_'+this.id).style.display = '';
670                Element('td_signature_'+this.id).style.display = '';
671        }
672};
673
674draw_message.prototype.putSignature = function(info_msg,tdx){
675        var tr_signature = document.createElement("TR");
676        var td_signature = document.createElement("TD");
677        td_signature.className = 'tr_message_header';
678        tr_signature.id = 'tr_signature_'+this.id;
679        td_signature.colSpan = "5";
680        tr_signature.style.display = 'none';
681
682        for (i=0; i < info_msg.signature.length; i++)
683                td_signature.innerHTML += '<span>'+info_msg.signature[i]+'</span> <br /> ';
684        td_signature.innerHTML += '<hr></hr>';
685        var signature_status_pos = info_msg.signature[0].indexOf('Message untouched');
686        td_signature.id = "td_signature_"+this.id;
687        if(signature_status_pos < 0 )
688        {
689                tdx.innerHTML += '&nbsp;<img style="cursor:pointer" src="' + URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/signed_error.gif" title="'+get_lang("Details")+'" onclick="show_signature_certificate_data(\'' + this.id + '\')">';
690                tr_signature.style.display = '';
691        }
692        else
693        {
694                tdx.innerHTML += '&nbsp;<img style="cursor:pointer" src="' + URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/signed_table.gif" title="'+get_lang("Details")+'" onclick="show_signature_certificate_data(\'' + this.id + '\')">';
695        }
696        tr_signature.appendChild(td_signature);
697        return tr_signature;
698    };
699
700
701draw_message.prototype.getThumbs = function(attachments, thumbs, msg_number, msg_folder){
702                var table_message_thumbs = document.createElement("TABLE");
703                table_message_thumbs.width = "80%";
704                table_message_thumbs.style.borderTop = "2px solid rgb(170, 170, 170)";
705                var tbody_message_thumbs = document.createElement("TBODY");
706                var tr = document.createElement("TR");
707                tr.className = "tr_message_body";
708                var td = document.createElement("TD");
709                td.setAttribute("colSpan","2");
710                td.id = "body_thumbs_"+msg_number;
711                td.innerHTML += "&nbsp;<font color='DARKBLUE' size='2'><b>"+attachments.length+" "+get_lang("attachment")+(attachments.length > 1 ? "s" : "")+" "+get_lang("in this message")+"</font></b>";
712                var _link_attachments = '';
713                if(thumbs.length > 1){
714                        _link_attachments       = document.createElement("A");
715                        _link_attachments.className = "message_options";
716                        if(proxy_mensagens.is_local_folder(current_folder))
717                                _link_attachments.setAttribute("href", "javascript:expresso_local_messages.download_all_local_attachments('"+msg_folder+"','"+msg_number+"')");
718                        else
719                                _link_attachments.setAttribute("href", "javascript:download_all_attachments('"+msg_folder+"','"+msg_number+"')");
720                        _link_attachments.innerHTML = get_lang('Download all atachments');
721                }
722
723                if(_link_attachments){
724                        td.innerHTML += " :: ";
725                        td.appendChild(_link_attachments);
726                }
727
728                td.innerHTML += "<BR><img src='" + URL_SERVER + "expressoMail1_2/templates/"+template+"/images/menu/ktip.png'>"+get_lang("<b>Tip:</b> For faster save, click over the image with <u>right button</u>.");
729                td.innerHTML += "<BR>";
730
731                for (var i=0; i<thumbs.length; i++){
732                        if ((i % 4) == 0)
733                                td.innerHTML += "<BR>";
734                        td.innerHTML += thumbs[i];
735                        td.innerHTML += "&nbsp;&nbsp;";
736                }
737                tr.appendChild(td);
738                tbody_message_thumbs.appendChild(tr);
739                table_message_thumbs.appendChild(tbody_message_thumbs);
740                return table_message_thumbs;
741};
742
743draw_message.prototype.getBcc = function(bccField){
744        /*
745         * @AUTHOR Rodrigo Souza dos Santos
746         * @MODIFY-DATE 2008/09/11
747         * @BRIEF Adding routine to create bcc (blind carbon copy) field if there is one.
748         */
749        var tr3 = document.createElement("tr");
750        tr3.className = "tr_message_header";
751        var td3 = document.createElement("td");
752        td3.innerHTML = get_lang("BCC") + " : ";
753        var cco = document.createElement("td");
754        cco.id = "cco_"+this.id;
755
756        var cco_values = createAndSet("INPUT",['id', 'type', 'value'],["cco_values_"+this.id,"hidden",bccField]);
757        ccoaddress_array[this.id] = bccField.split(",");               
758        if (ccoaddress_array[this.id].length > 1){
759                var div_ccoaddress = document.createElement("SPAN");
760                div_ccoaddress.id = "div_ccoaddress_"+this.id;
761                var div_ccoaddress_full = createAndSet("SPAN",['id', 'style'],["div_ccoaddress_full_"+this.id, "display:inline"]);
762                /*
763                 * The function below is ugly, doesn't possible use this.
764                 * The problem is that the code's function was written
765                 * on a hardcode concept.
766                 */
767                //cco.innerHTML = this.draw_plugin_cc(ccoaddress_array[this.id][0]);
768                cco.innerHTML = ccoaddress_array[this.id][0];
769                div_ccoaddress.innerHTML += " (<a STYLE='color: RED;' onclick=javascript:show_div_address_full('"+this.id+"','cco');>"+get_lang('more')+"</a>)";
770                cco.appendChild(div_ccoaddress);
771        }
772        else{
773                /*
774                 * The function below is ugly, it is not possible to use this.
775                 * The problem is that the code's function was written
776                 * on a hardcode concept.
777                 */
778                //cco.innerHTML = this.draw_plugin_cc(info_msg.cco);
779                cco.innerHTML = bccField;
780        }
781        cco.className = "header_message_field";
782        return appendChilds(tr3,td3,cco,cco_values);
783};
784
785draw_message.prototype.blockImage = function(info_msg,ID,td){
786        var imgTag = info_msg.body.match(/(<img[^>]*src[^>=]*=['"]?[^'">]*["']?[^>]*>)|(<[^>]*(style[^=>]*=['"][^>]*background(-image)?:[^:;>]*url\()[^>]*>)/gi);
787
788        var newBody = info_msg.body;
789        if(!info_msg.showImg && imgTag)
790        {
791                var domains = '';
792                var blocked = false;
793                var forbidden = true;
794
795                if (preferences.notification_domains != null && typeof(preferences.notification_domains) != 'undefined')
796                {
797                        domains = preferences.notification_domains.split(',');
798                        for(var j = 0; j < imgTag.length; j++)
799                        {
800                                for (var i = 0; i < domains.length; i++)
801                                {
802                                        if (imgTag[j].match(/cid:([\w\d]){5,}/) || imgTag[j].match(/src=\"\.\/inc\/show_embedded_attach\.php/g))
803                                        {
804                                                forbidden = false;
805                                                continue;
806                                        }
807                                        imgSource = imgTag[j].match(/=['"](http:\/\/)+[^'"\/]*/);
808                                        if (imgSource && imgSource.toString().substr(5).match(domains[i]))
809                                                forbidden = false;
810                                }
811                                if (forbidden)
812                                {
813                                        newBody = newBody.replace(imgTag[j],"<img src='" + URL_SERVER + "expressoMail1_2/templates/"+template+"/images/forbidden.jpg'>");
814                                        blocked=true;
815                                }
816                        }
817                        if (blocked)
818                        {
819                                var showImgLink = document.createElement('DIV');
820                                showImgLink.id="show_img_link_"+ID;
821                                showImgLink.onclick = function(){show_msg_img(info_msg.msg_number,info_msg.msg_folder)};
822                                showImgLink.className="show_img_link";
823                                showImgLink.innerHTML = get_lang("Show images from")+": "+info_msg.from.email;
824                                td.appendChild(showImgLink);
825                        }
826                }
827        }
828        return newBody;
829
830};
831
832draw_msg = new draw_message();
833
Note: See TracBrowser for help on using the repository browser.