source: trunk/expressoMail1_2/js/jscode/draw_api_messages.js @ 2715

Revision 2715, 68.3 KB checked in by amuller, 14 years ago (diff)

Ticket #1059 - Cria uma classe draw_message no lugar da função gigante

Line 
1// Objeto Map, talvez o ideal fosse adicionar este objeto à Api do egroupware, e carregá-lo
2// aqui no expressoMail.
3function Map()
4{
5        this.keys = new Array();
6        this.values = new Array();
7}
8
9Map.prototype.add = function(key, value)
10{
11        this.keys.push(key);
12        this.values.push(value);
13};
14
15Map.prototype.get = function(key)
16{
17        result = new Array();
18        for (i = 0; i < this.keys.length; i++)
19        {
20                if (this.keys[i] == key)
21                {
22                        result.push(this.values[i]);
23                }
24        }
25
26        if (result.length == 0)
27        {
28                return null;
29        }
30
31        return result;
32};
33
34var translatedFolders = new Map();
35
36/* Class draw_message */
37function draw_message(){
38}
39draw_message.prototype.createNxtPrevButtons = function(msg_folder,ID,folder_id){
40        var next_previous_msg_td = createAndSet("TD",[ "noWrap", "align", "width" ], [ "true", "right", "40px"]);
41        var img_next_msg = createAndSet("IMG", [ 'id', 'src', 'title' ], [
42                        'msg_opt_next_' + ID,
43                        URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/down.button.png',
44                        get_lang('Next') ]);
45        img_next_msg.style.cursor = 'pointer';
46
47        var folder = document.getElementById(folder_id);
48        if (folder){ // mensagem local criptografada nao tem ID da pasta local
49                if (folder.nextSibling){
50                        var nextMsgBox = folder.nextSibling.name?folder.nextSibling.name:msg_folder;
51
52                        if (nextMsgBox == "INBOX/decifradas")// teste para ver se a mensagem vem da pasta oculta decifradas
53                                nextMsgBox = get_current_folder();
54
55                        img_next_msg.onclick = function()
56                        {
57                                openTab.type[currentTab] = 2;
58                                if ( nextMsgBox == undefined )
59                                       nextMsgBox = current_folder;
60                                var allHeaders = folderHeaders[nextMsgBox];
61                                for (i in allHeaders)
62                                        if (allHeaders[i].msg_number == folder.nextSibling.id){
63                                                var nextHeader = allHeaders[i];
64                                                break;
65                                        }
66                                proxy_mensagens.get_msg(nextHeader,nextMsgBox,true,show_msg,currentTab);
67                        };
68                }
69                else
70                {
71                        img_next_msg.src = URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/down.gray.button.png';
72                        img_next_msg.style.cursor = 'default';
73                }
74        }
75        else
76        {
77                img_next_msg.src = URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/down.gray.button.png';
78                img_next_msg.style.cursor = 'default';
79                if (!proxy_mensagens.is_local_folder(get_current_folder()) && !(msg_folder == "INBOX/decifradas")) // testa se a mensagem e local
80                {
81                        img_next_msg.onclick = function()
82                        {
83                                delete_border(ID);
84                        };
85                }
86        }
87        var img_space = document.createElement("SPAN");
88        img_space.innerHTML = "&nbsp;";
89        var img_previous_msg = createAndSet("IMG",['id','src','title'],['msg_opt_previous_' + ID,
90                        URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/up.button.png',
91                        get_lang('Previous')]);
92        img_previous_msg.style.cursor = 'pointer';
93
94        //folder = document.getElementById(ID.substr(0, ID.indexOf('_')));
95        if (!folder){
96                delete_border(ID);
97                return;
98        }
99        if (folder){ // mensagem local criptografada nao tem ID da pasta local
100                if (folder.previousSibling)
101                {
102                        var previousMsgBox = folder.previousSibling.name?folder.previousSibling.name:msg_folder;
103
104                        if (previousMsgBox == "INBOX/decifradas") // teste para ver se a mensagem vem da pasta oculta decifradas
105                                previousMsgBox = get_current_folder();
106
107                        img_previous_msg.onclick = function()
108                        {
109                                openTab.type[currentTab] = 2;
110                                if ( previousMsgBox == undefined )
111                                       previousMsgBox = current_folder;
112                                var allHeaders = folderHeaders[previousMsgBox];
113                                for (i in allHeaders)
114                                        if (allHeaders[i].msg_number == folder.previousSibling.id){
115                                                var previousHeader = allHeaders[i];
116                                                break;
117                                        }
118                                proxy_mensagens.get_msg(previousHeader,previousMsgBox,true,show_msg,currentTab);
119                        };
120                }
121                else
122                {
123                        img_previous_msg.src = URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/up.gray.button.png';
124                        img_previous_msg.style.cursor = 'default';
125                }
126        }
127        else
128        {
129                img_previous_msg.src = URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/up.gray.button.png';
130                img_previous_msg.style.cursor = 'default';
131                if (!proxy_mensagens.is_local_folder(get_current_folder()) && !(msg_folder == "INBOX/decifradas")) // testa se a mensagem e local
132                {
133                        img_previous_msg.onclick = function()
134                        {
135                                delete_border(ID);
136                        };
137                }
138        }
139        next_previous_msg_td.appendChild(img_previous_msg);
140        next_previous_msg_td.appendChild(img_space);
141        next_previous_msg_td.appendChild(img_next_msg);
142        return next_previous_msg_td;
143
144};
145var idx_cc = 0;
146draw_message.prototype.draw_plugin_cc = function(ID, addrs)
147{
148    expresso.connector.loadScript("jscode/ccQuickAdd");
149
150    var array_addrs = '';
151    var array_name      = '';
152    var cc_data = new Array();
153    if(typeof(addrs.name) != 'undefined') {
154        array_name      = LTrim(addrs.name).split(" ");
155        array_addrs = new Array(addrs.email);
156    }
157    else {
158        array_addrs = (typeof addrs == 'object' ? addrs.toString().split("\" ") : addrs.split("\" "));
159        array_name      = LTrim(array_addrs[0]).replace('"','').split(" ");
160    }
161
162    var _split = array_name[0].split('@');
163    cc_data[0] = _split[0];
164    cc_data[1] = _split[0];
165    cc_data[2] = '';
166
167    for (i=1; i < array_name.length; i++)
168        cc_data[2] += array_name[i] + " ";
169
170
171    if(array_addrs.length > 1)
172        cc_data[3] = array_addrs[1] ? array_addrs[1].replace("&lt;",'').replace("&gt;",'') : '';
173    else
174        cc_data[3] = array_addrs[0];
175
176    var sm_envelope_img1 = '<img style="cursor:'+ (is_ie ? 'hand' : 'pointer') +'" title="' + get_lang("Add Contact") +
177    '" onclick="ccQuickAddOne.showList(\''+cc_data+'\')" src="' + URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/user_card.png">';
178    var to_addybook_add = "<SPAN id='insert_plugin_"+idx_cc+"_"+ID+"'>";
179    to_addybook_add += addrs;
180    to_addybook_add +=  sm_envelope_img1;
181    idx_cc++;
182    to_addybook_add += "</SPAN>";
183    return to_addybook_add;
184};
185
186
187draw_message.prototype.show_signature_certificate_data = function(ID){
188        var _height = Element("div_message_scroll_"+ID).style.height;
189        _height = parseInt(_height.replace("px",""));
190        var _offset = 130;
191        if (this.value == 'more_cert'){
192                //this.innerHTML += "<b><u>Mais Informaᅵᅵes</u></b>";
193                this.value = 'hide_cert';
194                Element("div_message_scroll_"+ID).style.height = (_height + _offset)+"px";
195                Element('tr_signature_'+ID).style.display = 'none';
196                Element('td_signature_'+ID).style.display = 'none';
197
198        }
199        else{
200                //this.innerHTML += "Mais Informaᅵᅵes";
201                this.value = 'more_cert';
202                Element("div_message_scroll_"+ID).style.height = (_height - _offset)+"px";
203                Element('tr_signature_'+ID).style.display = '';
204                Element('td_signature_'+ID).style.display = '';
205        }
206    };
207
208draw_message.prototype.putSignature = function(ID,info_msg,tdx){
209        var tr_signature = document.createElement("TR");
210        var td_signature = document.createElement("TD");
211        td_signature.className = 'tr_message_header';
212        tr_signature.id = 'tr_signature_'+ID;
213        td_signature.colSpan = "5";
214        tr_signature.style.display = 'none';
215
216        for (i=0; i < info_msg.signature.length; i++)
217                td_signature.innerHTML += '<span>'+info_msg.signature[i]+'</span> <br /> ';
218        td_signature.innerHTML += '<hr></hr>';
219        var signature_status_pos = info_msg.signature[0].indexOf('Message untouched');
220        td_signature.id = "td_signature_"+ID;
221        if(signature_status_pos < 0 )
222        {
223                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(\'' + ID + '\')">';
224                tr_signature.style.display = '';
225        }
226        else
227        {
228                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(\'' + ID + '\')">';
229        }
230        tr_signature.appendChild(td_signature);
231        return tr_signature;
232    };
233draw_message.prototype.make_options_message = function(info_msg, tbody_message){
234        var tr0 = document.createElement("TR");
235        tr0.className = "tr_message_header";
236        var td0 = document.createElement("TD");
237        var table_message_options = createAndSet("TABLE",['border','width','class'],["0","100%",'table_message']);
238        var tbody_message_options = document.createElement("TBODY");
239        var tr = document.createElement("TR");
240        var td = document.createElement("TD");
241        td.setAttribute("noWrap","true");
242        var _name = '';
243        var menuHidden = Element("folderscol").style.display == 'none' ? true : false;
244
245        var folder_id = 0;
246        var ID = info_msg.msg_number + "_r";
247        folder_id = info_msg.original_ID ? info_msg.original_ID: info_msg.msg_number;
248        var folder = document.getElementById(folder_id);
249        if (!folder){
250                delete_border(ID);
251                return false;
252        }
253
254        var next_previous_msg_td = this.createNxtPrevButtons(info_msg.msg_folder,ID,folder_id);
255        if (typeof(next_previous_msg_td) == 'undefined')
256                return false;
257
258
259        var _maxChar = menuHidden ? 40 : 15;
260
261        if (info_msg.from.name)
262        {
263                var spanName = document.createElement("SPAN");
264                spanName.innerHTML = info_msg.from.name;
265                _name = spanName.innerHTML.length > _maxChar ? spanName.innerHTML.substring(0,_maxChar) + "..." : spanName.innerHTML;
266        }
267        else
268                _name = info_msg.from.email.length > _maxChar ? info_msg.from.email.substring(0,_maxChar) + "..." : info_msg.from.email;
269
270        td.innerHTML = _name.bold() + ', ' + info_msg.udate;
271        if (info_msg.attachment.names.length > 0)
272                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+"'>";
273
274        if (typeof(info_msg.signature) == 'string')
275        {
276                if (info_msg.signature != "void")
277                        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">';
278                else
279                        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'>";
280        }
281
282        if (info_msg.DispositionNotificationTo)
283        {
284                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">';
285        }
286
287        // NORMAL MSG
288        if(info_msg.Draft != 'X')
289        {
290                var options = createAndSet("TD",['noWrap','width','align'],['true','30%','right']);
291                var option_hide_more = createAndSet("SPAN",['class','value','id'],['message_options','more_options','option_hide_more_'+ID],get_lang('show details'));
292                option_hide_more.onclick = function(){
293                        try{
294                                var _height = Element("div_message_scroll_"+ID).style.height;
295                        }
296                        catch(e){
297                                return;
298                        }
299                        _height = parseInt(_height.replace("px",""));
300                        var _offset = 35;
301                        if (this.value != 'hide_options'){
302                                this.innerHTML = "<b><u>"+get_lang('hide details')+"</u></b>";
303                                this.value = 'hide_options';
304                                Element("div_message_scroll_"+ID).style.height = (_height - _offset)+"px";
305                                Element('table_msg_details_'+ID).style.display = '';
306
307                        }
308                        else{
309                                this.innerHTML = get_lang('show details');
310                                this.value = 'more_options';
311                                Element("div_message_scroll_"+ID).style.height = (_height + _offset)+"px";
312                                Element('table_msg_details_'+ID).style.display = 'none';
313                        }
314                };
315                var option_mark = createAndSet("TD",['width','align'],['50%','left']);
316
317                var option_mark_as_unseen = '<span class="message_options" onclick="changeLinkState(this,\'seen\');set_messages_flag(\'unseen\','+
318                                                folder_id+');write_msg(\''+get_lang('Message marked as ')+get_lang("Unseen")+
319                                                '.\');">'+get_lang("Unseen")+'</span>, ';
320
321                if (info_msg.Flagged == "F")
322                        var option_mark_important = '<span class="message_options" onclick="changeLinkState(this,\'important\');set_messages_flag(\'unflagged\','+
323                                                        folder_id+');write_msg(\''+get_lang('Message marked as ')+get_lang("Normal")+
324                                                        '.\');">'+get_lang("Normal")+'</span>';
325                else
326                        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")+
327                                                                    '.\');">'+get_lang("Important")+'</span>';
328                option_mark.innerHTML = option_mark_as_unseen+option_mark_important;
329
330                var option_forward = createAndSet("SPAN",['id','class'],['msg_opt_forward_'+ID, 'message_options'],get_lang('Forward'));
331                option_forward.onclick = function(){new_message('forward', ID);};
332                appendChilds(options,option_hide_more,createAndSet('SPAN',false,false,'&nbsp;|&nbsp;'),option_forward);
333
334                var option_reply_options = createAndSet("IMG",['id', 'src', 'value'],['msg_opt_reply_options_'+ID,URL_SERVER+'expressoMail1_2/templates/default/images/down.png','show']);
335                option_reply_options.onmouseover = function(){
336                                option_reply_options.src= URL_SERVER+'expressoMail1_2/templates/default/images/over.png';
337                };
338                option_reply_options.onmouseout = function(){
339                        if (this.value == 'show')
340                        {
341                                option_reply_options.src= URL_SERVER+'expressoMail1_2/templates/default/images/down.png';
342                        }
343                        else
344                        {
345                                option_reply_options.src= URL_SERVER+'expressoMail1_2/templates/default/images/pressed.png';
346                        }
347                };
348                option_reply_options.onclick = function(){
349                        if (this.value != 'hide'){
350                                this.value = 'hide';
351                                option_reply_options.src= URL_SERVER+'expressoMail1_2/templates/default/images/pressed.png';
352                                Element('tr_other_options_'+ID).style.display = '';
353
354                        }
355                        else{
356                                this.value = 'show';
357                                option_reply_options.src= URL_SERVER+'expressoMail1_2/templates/default/images/down.png';
358                                Element('tr_other_options_'+ID).style.display = 'none';
359                        }
360                };
361
362                var _option_reply = createAndSet("SPAN",['id','class'],['msg_opt_reply_'+ID,'message_options'],get_lang('Reply'));
363                _option_reply.onclick = function(){new_message('reply_with_history', ID);};
364
365                appendChilds(options,createAndSet('SPAN',false,false,'&nbsp;|&nbsp;'),option_reply_options,_option_reply);
366                appendChilds(tr,td,option_mark,options,next_previous_msg_td);
367                tbody_message_options.appendChild(tr);
368
369                ////////// OTHER OPTIONS ////////////////////
370                var _tr_other_options = createAndSet("TR",['id'],['tr_other_options_' + ID]);
371                _tr_other_options.style.display = 'none';
372
373                var div_other_options = document.createElement("DIV");
374
375                var option_mark_as      = '<span>'+get_lang("Mark as")+'</span>: ';
376                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>, ';
377                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>, ';
378                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> | ';
379
380                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>';
381                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> | ';
382
383                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>';
384
385                div_other_options.innerHTML = option_reply_to_all + option_reply_to_all_without_history + option_reply_without_history;
386                if (use_spam_filter) {
387                        if(info_msg.msg_folder == 'INBOX'+cyrus_delimiter+'Spam')
388                                div_other_options.innerHTML += ' | <span class="reply_options" onclick="nospam('+info_msg.msg_number+',\'null\', \''+info_msg.msg_folder+'\')";>'+get_lang("Not Spam")+'</span>';
389                        else
390                                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>';
391                }
392
393                var td_other_options = createAndSet("TD",['colSpan','align','noWrap'],['3','right','true']);
394                td_other_options.appendChild(div_other_options);
395
396                _tr_other_options.appendChild(td_other_options);
397                tbody_message_options.appendChild(_tr_other_options);
398                ////////// END OTHER OPTIONS ////////////////
399                table_message_options.appendChild(tbody_message_options);
400                td0.appendChild(table_message_options);
401                tr0.appendChild(td0);
402                tbody_message.appendChild(tr0);
403                if (info_msg.signature && info_msg.signature.length > 0)
404                {
405                        tbody_message.appendChild(putSignature(ID,info_msg,td));
406                }
407        }
408        else    // IF DRAFT
409        {
410                var options = createAndSet('TD',['width','noWrap','align'],['1%','true','right']);
411                var option_hide_more = createAndSet("SPAN",['class','value','id'],['message_options','more_options','option_hide_more_'+ID],get_lang('Show details'));
412                option_hide_more.onclick = function(){
413                        var _height = Element("div_message_scroll_"+ID).style.height;
414                        _height = parseInt(_height.replace("px",""));
415                        var _offset = 35;
416                        if (this.value != 'hide_options'){
417                                this.innerHTML = "<b><u>"+get_lang('Hide details')+"</u></b>";
418                                this.value = 'hide_options';
419                                Element("div_message_scroll_"+ID).style.height = (_height - _offset)+"px";
420                                Element('table_msg_details_'+ID).style.display = '';
421                        }
422                        else{
423                                this.innerHTML = get_lang('show details');
424                                this.value = 'more_options';
425                                Element("div_message_scroll_"+ID).style.height = (_height + _offset)+"px";
426                                Element('table_msg_details_'+ID).style.display = 'none';
427                        }
428                };
429                var option_edit = createAndSet('SPAN',['class'],['message_options'], get_lang('Edit'));
430                option_edit.onclick= function () { new_message('edit',ID); };
431                appendChilds(options, option_hide_more, createAndSet('SPAN',false,false,"&nbsp;|&nbsp;"), option_edit);
432
433                tbody_message_options.appendChild(appendChilds(tr, td, options, next_previous_msg_td));
434                table_message_options.appendChild(tbody_message_options);
435                td0.appendChild(table_message_options);
436                tr0.appendChild(td0);
437                tbody_message.appendChild(tr0);
438        }
439        return true;
440};
441
442draw_message.prototype.draw_message_header = function(header,border_id){
443        var defaultWidth = document.body.offsetWidth - 37;
444        if(Element("folderscol").style.display != 'none')
445                defaultWidth -= Element("folderscol").offsetWidth;
446
447        var table_message = createAndSet("TABLE",['id','border','width'],['table_message_'+border_id,"0",defaultWidth]);
448        table_message.id = 'table_message_'+border_id;
449        var tbody_message = document.createElement("TBODY");
450        if (!this.make_options_message(header,tbody_message))
451                return;
452
453        table_message.appendChild(tbody_message);
454        var content = document.getElementById('content_id_' + border_id);
455        content.appendChild(table_message);
456        loading_img = content.appendChild(loading_img);
457};
458
459
460draw_message.prototype.draw_message_body = function (info_msg, ID){
461        var defaultWidth = document.body.offsetWidth - 37;
462        if(Element("folderscol").style.display != 'none')
463                defaultWidth -= Element("folderscol").offsetWidth;
464
465        var table_message = Element('table_message_'+ID);
466        var tbody_message = table_message.childNodes[0];
467
468        var tbody_message_others_options = document.createElement("TBODY");
469        var tr1 = document.createElement("TR");
470        tr1.className = "tr_message_header";
471        var td1 = createAndSet('TD',['width'],['7%'],get_lang("From: "));
472        td1.appendChild(deny_email(info_msg.from.email));
473
474        if (info_msg.sender){
475                var tr111 = document.createElement("TR");
476                tr111.className = "tr_message_header";
477                var td111 = createAndSet('TD',['noWrap'],['true'],get_lang("Sent by")+": ");
478                td111.appendChild(deny_email(info_msg.sender.email));
479                var sender = document.createElement("TD");
480                sender.className = "header_message_field";
481                sender.id = "sender_"+ID;
482                sender.innerHTML += this.draw_plugin_cc(ID, info_msg.sender.full);
483                var sender_values = createAndSet("INPUT",['id','type','value'],["sender_values_"+ID,"HIDDEN",info_msg.sender.full]);
484
485                tbody_message_others_options.appendChild(appendChilds(tr111, td111, sender, sender_values));
486        }
487
488        var from = createAndSet('TD',['id','class'],["from_"+ID,"header_message_field"],info_msg.from.full);
489
490        if (info_msg.Draft != "X"){
491                from.innerHTML += this.draw_plugin_cc(ID, info_msg.from);
492                tbody_message_others_options.appendChild(tr1);
493        }
494        var from_values = createAndSet('INPUT',['id','type','value'],["from_values_"+ID,"HIDDEN",info_msg.from.full]);
495        var local_message = createAndSet("INPUT",['id','name','type','value'],["is_local_"+ID,"is_local","HIDDEN",(info_msg.local_message)?"1":"0"]);
496        appendChilds(tr1,td1,from,from_values,local_message);
497
498        if (info_msg.reply_to){
499                var tr11 = document.createElement("TR");
500                tr11.className = "tr_message_header";
501                var _td11 = createAndSet('TD',['noWrap'],['true'],get_lang("Reply to")+": ");
502                var _reply_to = createAndSet('TD',['id', 'class'],["reply_to_"+ID, "header_message_field"],this.draw_plugin_cc(ID, info_msg.reply_to));
503                var _reply_to_values = createAndSet('INPUT',['id', 'type', 'value'],["reply_to_values_"+ID,"HIDDEN",info_msg.reply_to]);
504                tbody_message_others_options.appendChild(appendChilds(tr11,_td11,_reply_to,_reply_to_values));
505        }
506        //////////////////////////////////////////////////////////////////////////////////////////////////////
507        var tr2 = document.createElement("TR");
508        tr2.className = "tr_message_header";
509        var td2 = document.createElement("TD");
510        td2.innerHTML = get_lang("To: ");
511        var to = document.createElement("TD");
512        to.id = "to_"+ID;
513
514        var _to_values = createAndSet('INPUT',['id', 'type', 'value'],["to_values_"+ID, "HIDDEN", info_msg.toaddress2]);
515        // Salva a pasta da mensagem
516        var _input_cfolder = createAndSet('INPUT',['id', 'name', 'type', 'value'],["input_folder_"+ID, "input_folder", "hidden", info_msg.msg_folder]);
517        td2.appendChild(_input_cfolder);
518
519        toaddress_array[ID] = info_msg.toaddress2.split(",");
520        if (toaddress_array[ID].length > 1){
521                to.innerHTML += this.draw_plugin_cc(ID, toaddress_array[ID][0]);
522                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>)");
523                to.appendChild(_div_toaddrs);
524        }
525        else {
526                to.innerHTML += this.draw_plugin_cc(ID,toaddress_array[ID]);
527        }
528        to.className = "header_message_field";
529        tbody_message_others_options.appendChild(appendChilds(tr2,td2,to,_to_values));
530
531        if (info_msg.cc){
532                var tr3 = document.createElement("TR");
533                tr3.className = "tr_message_header";
534                var td3 = document.createElement("TD");
535                td3.innerHTML = "CC: ";
536                var cc = createAndSet("TD",['id', 'class'],["cc_"+ID,"header_message_field"]);
537
538                var cc_values = createAndSet("INPUT",['id', 'type', 'value'],["cc_values_"+ID, "HIDDEN", info_msg.cc]);
539                ccaddress_array[ID] = info_msg.cc.split(",");           
540                if (ccaddress_array[ID].length > 1){
541                        var div_ccaddress = document.createElement("SPAN");
542                        div_ccaddress.id = "div_ccaddress_"+ID;
543                        var div_ccaddress_full = createAndSet("SPAN",['id', 'style'],["div_ccaddress_full_"+ID, "display: inline"]);
544                        cc.innerHTML = this.draw_plugin_cc(ID, ccaddress_array[ID][0]);
545                        div_ccaddress.innerHTML += " (<a STYLE='color: RED;' onclick=javascript:show_div_address_full('"+ID+"','cc');>"+get_lang('more')+"</a>)";
546                        cc.appendChild(div_ccaddress);
547                }
548                else{
549                        cc.innerHTML = this.draw_plugin_cc(ID, info_msg.cc);
550                }
551                tbody_message_others_options.appendChild(appendChilds(tr3,td3,cc,cc_values));
552        }
553
554        if (info_msg.bcc)
555        {
556                tbody_message_others_options.appendChild(this.getBcc(info_msg.bcc));
557        }
558
559        var tr4 = document.createElement("TR");
560        tr4.className = "tr_message_header";
561        var td4 = document.createElement("TD");
562        td4.innerHTML = get_lang("Date: ");
563        var date = createAndSet('TD',['id','class'],["date_"+ID,"header_message_field"],info_msg.fulldate);
564        var date_day = createAndSet('INPUT',['id', 'type', 'value'],["date_day_"+ID, "HIDDEN", info_msg.msg_day]);
565        var date_hour = createAndSet('INPUT',['id', 'type', 'value'],["date_hour_"+ID, "HIDDEN", info_msg.msg_hour]);
566        tbody_message_others_options.appendChild(appendChilds(tr4,td4,date,date_day,date_hour));
567
568        var tr5 = document.createElement("TR");
569        tr5.className = "tr_message_header";
570        var td5 = document.createElement("TD");
571        td5.innerHTML = get_lang("Subject");
572        var subject = createAndSet('TD',['id', 'class'],["subject_"+ID, "header_message_field"],info_msg.subject);
573        tbody_message_others_options.appendChild(appendChilds(tr5,td5,subject));
574        if (info_msg.attachments.length > 0){
575                var tr6 = document.createElement("TR");
576                tr6.className = "tr_message_header";
577                var td6 = document.createElement("TD");
578                td6.innerHTML = get_lang("Attachments: ");
579
580                var attachments = document.createElement("TD");
581                attachments.align='left';
582                td6.vAlign = "top";
583
584                var zipped_attachments = '';
585                if(info_msg.attachments.length >= 1) {
586                        var zipped_attachments  = createAndSet("TABLE",['style','cellPadding','cellSpacing'],['margin-bottom: 4px','0','0']);
587                        var td = document.createElement("TD");
588                        if(info_msg.attachments.length > 1) {
589                                var link_attachment     = document.createElement("A");
590                                if(proxy_mensagens.is_local_folder(current_folder))
591                                        link_attachment.setAttribute("href", "javascript:expresso_local_messages.download_all_local_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"')");
592                                else
593                                        link_attachment.setAttribute("href", "javascript:download_all_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"')");
594                                link_attachment.innerHTML = " "+info_msg.attachments.length+' '+get_lang('files')+' :: '+get_lang('Download all atachments');
595                                link_attachment.innerHTML += '<BR>';
596                                td.appendChild(link_attachment);
597                        }
598                        var tr = document.createElement("TR");
599                        if(parseInt(preferences.remove_attachments_function))
600                        {
601                                var del_attachments = document.createElement("A");
602                                del_attachments.setAttribute("href", "javascript:remove_all_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"')");
603                                del_attachments.innerHTML = get_lang('remove all attachments');
604                                del_attachments.appendChild(document.createElement('BR'));
605                                td.appendChild(del_attachments);
606                                tr.appendChild(td);
607                        }
608                        tr.appendChild(td);
609                        zipped_attachments.appendChild(tr);
610                        attachments.appendChild(zipped_attachments);
611                }
612
613                attachments.id = "attachments_" + ID;
614                for (var i=0; i<info_msg.attachments.length; i++){
615                        var link_attachment = document.createElement("A");
616                        link_attachment.setAttribute("href", proxy_mensagens.link_anexo(info_msg,i));
617                        //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+"')");
618                        link_attachment.innerHTML = url_decode(info_msg.attachments[i].name);
619                        link_attachment.innerHTML += "&nbsp;"+borkb(info_msg.attachments[i].fsize);
620
621                        if((url_decode(info_msg.attachments[i].name).indexOf(".ics")!=-1) || (url_decode(info_msg.attachments[i].name).indexOf(".vcard")!=-1)){
622                                //Link para importar calendário
623                                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"]);
624                                var space = document.createElement("span");
625                                space.innerHTML = "&nbsp;";
626                                appendChilds(attachments,link_attachment,space,link_import_attachment);
627                        }
628                        else {
629                                link_attachment.innerHTML += '<BR>';
630                                attachments.appendChild(link_attachment);
631                        }
632                }
633                tr6.appendChild(td6);
634                tr6.appendChild(attachments);
635                tbody_message_others_options.appendChild(tr6);
636        }
637
638
639        // BEGIN MAKE THE SCROLL HEIGHT
640        var bar = document.getElementById("toolbar");
641        var offset = 0;
642        if(bar.style.visibility != 'hidden')
643                offset = bar.offsetHeight ? bar.offsetHeight :  bar.clientHeight;
644        var div = document.createElement("DIV");
645        div.id = "div_message_scroll_"+ID;
646        div.style.background = 'WHITE';
647        div.style.height = document.body.clientHeight - offset - 125;
648        div.style.overflow = "auto";
649        div.style.width = defaultWidth - (is_ie ? 5 : 0);
650        // END MAKE THE SCROLL HEIGHT
651
652        var table_msg_details = createAndSet("TABLE",['id','width','class'],['table_msg_details_' + ID,defaultWidth - 30,'table_message']);
653        table_msg_details.style.display = 'none';
654        table_msg_details.appendChild(tbody_message_others_options);
655        div.appendChild(table_msg_details);
656
657        var tr = document.createElement("TR");
658        var td = document.createElement("TD");
659        td.colSpan = '2';
660
661        var newBody = this.blockImage(info_msg,ID,td);
662
663        td.appendChild(div);
664        tr.appendChild(td);
665        tbody_message.appendChild(tr);
666
667        ////////////////////////////////////////////////////////////////////////////////////////////////////// 
668        //Make the body message.
669        ///////////////////////////////////////////////////////////////////////////////////////////////////////
670        var tr = document.createElement("TR");
671        tr.className = "tr_message_body";
672        var td = document.createElement("TD");
673        //td.setAttribute("colSpan","2");
674        newBody = newBody.replace("<body","<span");
675        newBody = newBody.replace("<BODY","<span");
676        div.innerHTML+= "<span id='body_"+ID+"' style='font-size:16px;'>"+newBody+"</span><br><br>";
677        function mailto( link )
678        {
679                var mail = link.href.substr( 7 );
680                link.onclick = function( )
681                {
682                        new_message_to( mail );
683                        return false;
684                };
685        }
686        var links = div.getElementsByTagName( 'a' );
687        for ( var i = 0; i < links.length; i++ )
688                if ( links.item( i ).href.indexOf( 'mailto:' ) === 0 )
689                        mailto( links.item( i ) );
690                else
691                {
692                        if ( links.item( i ).href.indexOf( 'javascript:' ) !== 0 )
693                                links.item( i ).setAttribute( 'target', '_blank' );
694                }
695
696        if ((info_msg.thumbs)&&(info_msg.thumbs.length > 0)){
697                ////////////////////////////////////////////////////////////////////////////////////////////////////// 
698                //Make the thumbs of the message.
699                //////////////////////////////////////////////////////////////////////////////////////////////////////
700                div.appendChild(this.getThumbs(info_msg.attachments, info_msg.thumbs, info_msg.msg_number, info_msg.msg_folder));
701        }
702
703
704        var msg_number = createAndSet("INPUT",['id','type','value'],["msg_number_" + ID, "hidden", info_msg.msg_number]);
705        var content = document.getElementById('content_id_' + ID);
706        loading_img = content.removeChild( loading_img );
707        content.style.height = document.body.clientHeight - offset - 90;
708        content.appendChild(msg_number);
709        //////////////////////////////////////////////////////////////////////////////////////////////////////
710
711        //Exibe o cabecalho da mensagem totalmente aberto caso esteja setado nas preferencias do usuario
712        if (preferences.show_head_msg_full == 1)
713        {
714                option_hide_more.onclick();
715
716                if (Element('div_toaddress_'+ID) != null)
717                {
718                        show_div_address_full(ID,'to');
719                }       
720                if (Element('div_ccaddress_'+ID) != null)
721                {
722                        show_div_address_full(ID,'cc');
723                }
724        }
725
726};
727
728draw_message.prototype.getThumbs = function(attachments, thumbs, msg_number, msg_folder){
729                var table_message_thumbs = document.createElement("TABLE");
730                table_message_thumbs.width = "80%";
731                table_message_thumbs.style.borderTop = "2px solid rgb(170, 170, 170)";
732                var tbody_message_thumbs = document.createElement("TBODY");
733                var tr = document.createElement("TR");
734                tr.className = "tr_message_body";
735                var td = document.createElement("TD");
736                td.setAttribute("colSpan","2");
737                td.id = "body_thumbs_"+msg_number;
738                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>";
739                var _link_attachments = '';
740                if(thumbs.length > 1){
741                        _link_attachments       = document.createElement("A");
742                        _link_attachments.className = "message_options";
743                        if(proxy_mensagens.is_local_folder(current_folder))
744                                _link_attachments.setAttribute("href", "javascript:expresso_local_messages.download_all_local_attachments('"+msg_folder+"','"+msg_number+"')");
745                        else
746                                _link_attachments.setAttribute("href", "javascript:download_all_attachments('"+msg_folder+"','"+msg_number+"')");
747                        _link_attachments.innerHTML = get_lang('Download all atachments');
748                }
749
750                if(_link_attachments){
751                        td.innerHTML += " :: ";
752                        td.appendChild(_link_attachments);
753                }
754
755                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>.");
756                td.innerHTML += "<BR>";
757
758                for (var i=0; i<thumbs.length; i++){
759                        if ((i % 4) == 0)
760                                td.innerHTML += "<BR>";
761                        td.innerHTML += thumbs[i];
762                        td.innerHTML += "&nbsp;&nbsp;";
763                }
764                tr.appendChild(td);
765                tbody_message_thumbs.appendChild(tr);
766                table_message_thumbs.appendChild(tbody_message_thumbs);
767                return table_message_thumbs;
768};
769
770draw_message.prototype.getBcc = function(bccField){
771        /*
772         * @AUTHOR Rodrigo Souza dos Santos
773         * @MODIFY-DATE 2008/09/11
774         * @BRIEF Adding routine to create bcc (blind carbon copy) field if there is one.
775         */
776        var tr3 = document.createElement("tr");
777        tr3.className = "tr_message_header";
778        var td3 = document.createElement("td");
779        td3.innerHTML = get_lang("BCC") + " : ";
780        var cco = document.createElement("td");
781        cco.id = "cco_"+ID;
782
783        var cco_values = createAndSet("INPUT",['id', 'type', 'value'],["cco_values_"+ID,"hidden",bccField]);
784        ccoaddress_array[ID] = bccField.split(",");             
785        if (ccoaddress_array[ID].length > 1){
786                var div_ccoaddress = document.createElement("SPAN");
787                div_ccoaddress.id = "div_ccoaddress_"+ID;
788                var div_ccoaddress_full = createAndSet("SPAN",['id', 'style'],["div_ccoaddress_full_"+ID, "display:inline"]);
789                /*
790                 * The function below is ugly, doesn't possible use this.
791                 * The problem is that the code's function was written
792                 * on a hardcode concept.
793                 */
794                //cco.innerHTML = this.draw_plugin_cc(ID, ccoaddress_array[ID][0]);
795                cco.innerHTML = ccoaddress_array[ID][0];
796                div_ccoaddress.innerHTML += " (<a STYLE='color: RED;' onclick=javascript:show_div_address_full('"+ID+"','cco');>"+get_lang('more')+"</a>)";
797                cco.appendChild(div_ccoaddress);
798        }
799        else{
800                /*
801                 * The function below is ugly, it is not possible to use this.
802                 * The problem is that the code's function was written
803                 * on a hardcode concept.
804                 */
805                //cco.innerHTML = this.draw_plugin_cc(ID, info_msg.cco);
806                cco.innerHTML = bccField;
807        }
808        cco.className = "header_message_field";
809        return appendChilds(tr3,td3,cco,cco_values);
810};
811
812draw_message.prototype.blockImage = function(info_msg,ID,td){
813        var imgTag = info_msg.body.match(/(<img[^>]*src[^>=]*=['"]?[^'">]*["']?[^>]*>)|(<[^>]*(style[^=>]*=['"][^>]*background(-image)?:[^:;>]*url\()[^>]*>)/gi);
814
815        var newBody = info_msg.body;
816        if(!info_msg.showImg && imgTag)
817        {
818                var domains = '';
819                var blocked = false;
820                var forbidden = true;
821
822                if (preferences.notification_domains != null && typeof(preferences.notification_domains) != 'undefined')
823                {
824                        domains = preferences.notification_domains.split(',');
825                        for(var j = 0; j < imgTag.length; j++)
826                        {
827                                for (var i = 0; i < domains.length; i++)
828                                {
829                                        if (imgTag[j].match(/cid:([\w\d]){5,}/) || imgTag[j].match(/src=\"\.\/inc\/show_embedded_attach\.php/g))
830                                        {
831                                                forbidden = false;
832                                                continue;
833                                        }
834                                        imgSource = imgTag[j].match(/=['"](http:\/\/)+[^'"\/]*/);
835                                        if (imgSource && imgSource.toString().substr(5).match(domains[i]))
836                                                forbidden = false;
837                                }
838                                if (forbidden)
839                                {
840                                        newBody = newBody.replace(imgTag[j],"<img src='" + URL_SERVER + "expressoMail1_2/templates/"+template+"/images/forbidden.jpg'>");
841                                        blocked=true;
842                                }
843                        }
844                        if (blocked)
845                        {
846                                var showImgLink = document.createElement('DIV');
847                                showImgLink.id="show_img_link_"+ID;
848                                showImgLink.onclick = function(){show_msg_img(info_msg.msg_number,info_msg.msg_folder)};
849                                showImgLink.className="show_img_link";
850                                showImgLink.innerHTML = get_lang("Show images from")+": "+info_msg.from.email;
851                                td.appendChild(showImgLink);
852                        }
853                }
854        }
855        return newBody;
856
857};
858
859draw_msg = new draw_message();
860
861function changeLinkState(el,state){
862        el.innerHTML = get_lang(state);
863        switch (state){
864                case 'important':
865                        {
866                                el.onclick = function(){changeLinkState(el,'normal');set_messages_flag('unflagged',currentTab.substr(0,currentTab.indexOf("_r"))); write_msg(get_lang('Message marked as ')+get_lang("Normal"))};
867                                break;
868                        }
869                case 'normal':
870                        {
871                                el.onclick = function(){  changeLinkState(el,'important');set_messages_flag('flagged',currentTab.substr(0,currentTab.indexOf("_r")));write_msg(get_lang('Message marked as ')+get_lang("Important"))};
872                                break;
873                        }
874                case 'unseen':
875                        {
876                                el.onclick = function(){  changeLinkState(el,'seen');set_messages_flag('unseen',currentTab.substr(0,currentTab.indexOf("_r")));write_msg(get_lang('Message marked as ')+get_lang("unseen"))};
877                                break;
878
879                        }
880                case 'seen':
881                        {
882                                el.onclick = function(){  changeLinkState(el,'unseen');set_messages_flag('seen',currentTab.substr(0,currentTab.indexOf("_r")));write_msg(get_lang('Message marked as ')+get_lang("seen"))};
883                                break;
884
885                        }
886                default:
887                        {
888                                break;
889                        }
890        }
891}
892function constructMenuNewMessage(ID,tbody_message,table_message,content)
893{
894        table_message.width = "100%";
895
896        var tr0 = document.createElement("TR");
897        tr0.className = "tr_message_header";
898        var td0 = document.createElement("TD");
899        td0.colSpan = '3';
900
901        var table_menu_new_message = document.createElement("TABLE");
902        table_menu_new_message.width = "100%";
903        table_menu_new_message.border = '0';
904        table_menu_new_message.className = 'table_message';
905        var tbody_menu_new_message = document.createElement("TBODY");
906        var tr_menu_new_message = document.createElement("TR");
907        var td_menu_new_message = document.createElement("TD");
908        td_menu_new_message.setAttribute("noWrap","true");
909
910        if ((preferences.save_in_folder == '-1') || (preferences.save_in_folder == '')){
911                //var option_send = '<span class="message_options" onclick=send_message("'+ID+'","null","null");>'+get_lang("Send")+'</span> | ';
912                var option_send   = '<input type="button" id="send_button_'+ID+'" class="em_button_like_span" tabindex="1" value="'+get_lang("Send")+'" onclick=send_message("'+ID+'","null","null");>' + ' | ';
913                if(!expresso_offline)
914                        var option_send_and_file= '<span class="message_options" onclick=wfolders.makeWindow("'+ID+'","send_and_file");>'+get_lang("Send and file")+'</span> | ';
915                else
916                        var option_send_and_file='';
917        }
918        else{
919                //var option_send = '<span class="message_options" onclick="send_message(\''+ID+'\',\''+preferences.save_in_folder+'\',\'null\');">'+get_lang("Send")+'</span> | ';
920                var option_send   = '<input type="button" id="send_button_'+ID+'" class="em_button_like_span" tabindex="1" value="'+get_lang("Send")+'" onclick="send_message(\''+ID+'\',\''+preferences.save_in_folder+'\',\'null\');">' + ' | ';
921                var option_send_and_file='';
922                wfolders.alert = true;
923        }
924        //      var option_save_as              = '<span class="message_options" onclick=wfolders.makeWindow("'+ID+'","save");>'+get_lang("Save as")+'</span> | ';
925        if (!expresso_offline) {
926                var option_save = '<span id="save_message_options_'+ID+'" class="message_options" onclick="openTab.toPreserve['+ID+'] = true; save_msg('+ID+');">'+get_lang("Save")+'</span> | ';
927                var option_search = '<span class="message_options" onclick=openListUsers("'+ID+'");>'+get_lang("Search")+'</span>';
928        }
929        else {
930                var option_save = '<input type="hidden" id="save_message_options_'+ID+'">';
931                var option_search = '';
932        }
933        td_menu_new_message.innerHTML = option_send + option_send_and_file + option_save + option_search;
934
935        tr_menu_new_message.appendChild(td_menu_new_message);
936        tbody_menu_new_message.appendChild(tr_menu_new_message);
937        table_menu_new_message.appendChild(tbody_menu_new_message);
938
939        content.appendChild(table_menu_new_message);
940        tr0.appendChild(td0);
941        tbody_message.appendChild(tr0);
942        ////////////////////////////////////////////////////////////////////////////////////////////////////////
943}
944function constructFromField(tbody_message,ID)
945{
946        var tr1_1 = document.createElement("TR");
947        tr1_1.style.display = 'none';
948        var td1_1 = document.createElement("TD");
949        td1_1.innerHTML = get_lang("From")+":";
950        td1_1.setAttribute("noWrap","true");
951        td1_1.style.width = "1%";
952
953        var td_from = document.createElement("TD");
954        td_from.setAttribute("noWrap","true");
955        td_from.style.width = "100%";
956
957        var sel_from = document.createElement('SELECT');       
958        sel_from.id = "from_"+ID;
959        sel_from.name = "input_from";
960        sel_from.style.width = "70%";
961        sel_from.setAttribute("wrap","soft");
962        td_from.appendChild(sel_from); 
963        tr1_1.appendChild(td1_1);
964        tr1_1.appendChild(td_from);
965        tbody_message.appendChild(tr1_1);       
966        if(!expresso_offline)
967                draw_from_field(sel_from,tr1_1);
968        var tr1 = document.createElement("TR");
969        var td1 = document.createElement("TD");
970        td1.innerHTML = get_lang("To")+":";
971        td1.setAttribute("noWrap","true");
972        td1.style.width = "1%";
973
974        var td_to = document.createElement("TD");
975        td_to.setAttribute("noWrap","true");
976        td_to.style.width = "100%";
977
978        var input_to = document.createElement('TEXTAREA');
979        input_to.id = "to_"+ID;
980        input_to.name = "input_to";
981        input_to.setAttribute("tabIndex","1"); 
982        input_to.style.width = "100%";
983        input_to.setAttribute("wrap","soft");
984        input_to.onfocus = function(){clearTimeout(parseInt(setTimeOutLayer)); search_contacts('onfocus', this.id);};
985        input_to.onblur = function(){setTimeOutLayer=setTimeout('search_contacts("lostfocus","'+this.id+'")',100);};
986        if (!is_ie)
987        {
988                input_to.rows = 2;
989                input_to.onkeypress = function (e)
990                {
991                        if ((e.keyCode) == 120) //F9
992                        {
993                                emQuickSearch(input_to.value, 'to', ID);
994                        }
995                        else
996                        {
997                                if (((e.keyCode == 13) || ((e.keyCode == 38)||(e.keyCode == 40))) && (document.getElementById('tipDiv').style.visibility!='hidden'))
998                                {
999                                        e.preventDefault();
1000                                        search_contacts(e.keyCode,this.id);
1001                                }
1002                        }
1003                };
1004                input_to.onkeyup = function (e)
1005                {
1006                        if ((e.keyCode != 13) && (e.keyCode != 38) && (e.keyCode != 40))
1007                        {
1008                                search_contacts(e.keyCode,this.id);
1009                        }
1010                };
1011        }
1012        else
1013        {
1014                input_to.rows = 3;
1015                input_to.onkeyup = function (e)
1016                {
1017                        if ((window.event.keyCode) == 120) //F9
1018                        {
1019                                emQuickSearch(input_to.value, 'to', ID);
1020                        }
1021                        else
1022                        {
1023                                search_contacts(window.event.keyCode,this.id);
1024                        }   
1025                };
1026        }
1027        td_to.appendChild(input_to);
1028
1029        var forwarded_local_message = document.createElement("INPUT"); //Hidden para indicar se é um forward de uma mensagem local
1030        forwarded_local_message.id = "is_local_forward"+ID;
1031        forwarded_local_message.name = "is_local_forward";
1032        forwarded_local_message.type = "HIDDEN";
1033        forwarded_local_message.value = "0";
1034        td_to.appendChild(forwarded_local_message);
1035        ////////////////////////////////////////////////////////////////////////////////////////////////////////
1036
1037
1038        if (!expresso_offline) {
1039                var img_search = document.createElement("IMG");
1040                img_search.src = URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/search.gif';
1041                img_search.title = get_lang('Search') + " | " + get_lang('Use F9 Key as shortcut.');
1042                img_search.onclick = function () {emQuickSearch(document.getElementById('to_'+ID).value, 'to', ID);};
1043        }
1044        else {
1045                var img_search = document.createElement("SPAN");
1046        }
1047
1048        var span_search = document.createElement("SPAN");
1049        span_search.innerHTML = get_lang('Search');
1050
1051        var td1_img_search = document.createElement("TD");
1052        td1_img_search.setAttribute("noWrap","true");
1053        var td1_span_search = document.createElement("TD");
1054        td1_span_search.setAttribute("noWrap","true"); 
1055
1056        td1_img_search.appendChild(img_search);
1057        td1_span_search.appendChild(span_search);
1058
1059        tr1.appendChild(td1);
1060        tr1.appendChild(td_to);
1061        tr1.appendChild(td1_img_search);
1062
1063        tbody_message.appendChild(tr1);
1064}
1065
1066function draw_new_message(border_ID)
1067{
1068        Tooltip.init();
1069
1070        var ID = create_border("",border_ID);
1071        if (ID === false){
1072                return false;
1073        }
1074        expresso.connector.hold_session = true;
1075
1076        var footer_menu = Element("footer_menu");       
1077        if (footer_menu) {
1078                footer_menu.style.display = 'none';
1079        }
1080
1081        /////////////////////////////////////////////////////////////////////////////////////////////////////////
1082        var form = document.createElement("FORM");
1083        form.name = "form_message_"+ID;
1084        form.method = "POST";
1085        form.onsubmit = function(){return false;};
1086        if(!is_ie)
1087                form.enctype="multipart/form-data";
1088        else
1089                form.encoding="multipart/form-data";
1090
1091        var content = Element('content_id_' + ID);
1092        var table_message = document.createElement("TABLE");
1093        var tbody_message = document.createElement("TBODY");
1094       
1095        constructMenuNewMessage(ID,tbody_message,table_message,content);
1096       
1097        constructFromField(tbody_message,ID);
1098
1099
1100        //////////////////////////////////////////////////////////////////////////////////////////////////////
1101        var tr2 = document.createElement("TR");
1102        tr2.id = "tr_cc_"+ID;
1103        tr2.style.display = 'none';
1104        var td2 = document.createElement("TD");
1105        td2.innerHTML = "Cc:";
1106        td2.setAttribute("noWrap","true");     
1107        td2.style.width = "1%";
1108
1109        var td_cc = document.createElement("TD");
1110        td_cc.setAttribute("noWrap","true");
1111        td_cc.style.width = "100%";
1112
1113        var input_cc = document.createElement('TEXTAREA');
1114        input_cc.id = "cc_"+ID;
1115        input_cc.name = "input_cc";
1116        input_cc.setAttribute("tabIndex","1");
1117        input_cc.style.width = "100%";
1118        input_cc.onfocus = function(){clearTimeout(parseInt(setTimeOutLayer)); search_contacts('onfocus',this.id);};
1119        input_cc.onblur = function(){setTimeOutLayer=setTimeout('search_contacts("lostfocus","'+this.id+'")',100);};
1120        if (!is_ie)
1121        {
1122                input_cc.rows = 2;
1123                input_cc.onkeypress = function (e)
1124                {
1125                        if ((e.keyCode) == 120) //F9
1126                        {
1127                                emQuickSearch(input_cc.value, 'cc', ID);
1128                        }
1129                        else
1130                        {
1131                                if (((e.keyCode == 13) || ((e.keyCode == 38)||(e.keyCode == 40))) && (document.getElementById('tipDiv').style.visibility!='hidden'))
1132                                {
1133                                        e.preventDefault();
1134                                        search_contacts(e.keyCode,this.id);
1135                                }
1136                        }
1137                };
1138                input_cc.onkeyup = function (e)
1139                {
1140                        if ((e.keyCode != 13) && (e.keyCode != 38) && (e.keyCode != 40))
1141                        {
1142                                search_contacts(e.keyCode,this.id);
1143                        }
1144                };
1145        }
1146        else if (is_ie)
1147        {
1148                input_cc.rows = 3;
1149                input_cc.onkeyup = function (e)
1150                {
1151                        if ((window.event.keyCode) == 120) //F9
1152                        {
1153                                emQuickSearch(input_cc.value, 'cc', ID);
1154                        }
1155                        else
1156                        {
1157                                search_contacts(window.event.keyCode,this.id);
1158                        }
1159                };
1160        }
1161
1162        td_cc.appendChild(input_cc);
1163        var img_search = document.createElement("IMG");
1164        img_search.src = URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/search.gif';
1165        img_search.onclick = function () {emQuickSearch(document.getElementById('cc_'+ID).value, 'cc', ID)};
1166        img_search.title = get_lang('Search') + " | " + get_lang('Use F9 Key as shortcut.');
1167        var span_search = document.createElement("SPAN");
1168        span_search.innerHTML = get_lang('Search');
1169
1170        var td2_img_search = document.createElement("TD");
1171        td2_img_search.setAttribute("noWrap","true");
1172        var td2_span_search = document.createElement("TD");
1173        td2_span_search.setAttribute("noWrap","true"); 
1174
1175        td2_img_search.appendChild(img_search);
1176        td2_span_search.appendChild(span_search);
1177
1178        tr2.appendChild(td2);
1179        tr2.appendChild(td_cc);
1180        tr2.appendChild(td2_img_search);
1181        tbody_message.appendChild(tr2);
1182        //////////////////////////////////////////////////////////////////////////////////////////////////////
1183        var tr3 = document.createElement("TR");
1184        tr3.id = "tr_cco_"+ID;
1185        tr3.style.display = 'none';
1186        var td3 = document.createElement("TD");
1187        td3.setAttribute("noWrap","true");
1188        td3.innerHTML = get_lang("CCo")+":";
1189        td3.style.width = "1%";
1190
1191        var td_cco = document.createElement("TD");
1192        td_cco.setAttribute("noWrap","true");
1193        td_cco.style.width = "100%";
1194
1195        var input_cco = document.createElement('TEXTAREA');
1196        input_cco.id = "cco_"+ID;
1197        input_cco.name = "input_cco";
1198        input_cco.setAttribute("tabIndex","1");
1199        input_cco.style.width = "100%";
1200        input_cco.onfocus = function(){clearTimeout(parseInt(setTimeOutLayer)); search_contacts('onfocus',this.id);};
1201        input_cco.onblur = function(){setTimeOutLayer=setTimeout('search_contacts("lostfocus","'+this.id+'")',100);};
1202
1203        if (!is_ie)
1204        {
1205                input_cco.rows = 2;
1206                input_cco.onkeypress = function (e)
1207                {
1208                        if ((e.keyCode) == 120) //F9
1209                        {
1210                                emQuickSearch(input_cco.value, 'cco', ID);
1211                        }
1212                        else
1213                        {
1214                                if (((e.keyCode == 13) || ((e.keyCode == 38)||(e.keyCode == 40))) && (document.getElementById('tipDiv').style.visibility!='hidden'))
1215                                {
1216                                        e.preventDefault();
1217                                        search_contacts(e.keyCode,this.id);
1218                                }
1219                        }
1220                };
1221                input_cco.onkeyup = function (e)
1222                {
1223                        if ((e.keyCode != 13) && (e.keyCode != 38) && (e.keyCode != 40))
1224                        {
1225                                search_contacts(e.keyCode,this.id);
1226                        }
1227                };
1228        }
1229        else if (is_ie)
1230        {
1231                input_cco.rows = 3;
1232                input_cco.onkeyup = function (e)
1233                {
1234                        if ((window.event.keyCode) == 120) //F9
1235                        {
1236                                emQuickSearch(input_cco.value, 'cco', ID);
1237                        }
1238                        else
1239                        {
1240                                search_contacts(window.event.keyCode,this.id);
1241                        }   
1242                };
1243        }
1244
1245        td_cco.appendChild(input_cco);
1246        var img_search = document.createElement("IMG");
1247        img_search.src = URL_SERVER + 'expressoMail1_2/templates/'+template+'/images/search.gif';
1248        img_search.title = get_lang('Search') + " | " + get_lang('Use F9 Key as shortcut.');   
1249        img_search.onclick = function () {emQuickSearch(document.getElementById('cco_'+ID).value, 'cco', ID);};
1250        var span_search = document.createElement("SPAN");
1251        span_search.innerHTML = get_lang('Search');
1252
1253        var td3_img_search = document.createElement("TD");
1254        td3_img_search.setAttribute("noWrap","true");
1255        var td3_span_search = document.createElement("TD");
1256        td3_span_search.setAttribute("noWrap","true"); 
1257
1258        td3_img_search.appendChild(img_search);
1259        td3_span_search.appendChild(span_search);
1260
1261        tr3.appendChild(td3);
1262        tr3.appendChild(td_cco);
1263        tr3.appendChild(td3_img_search);       
1264        tbody_message.appendChild(tr3);
1265        //////////////////////////////////////////////////////////////////////////////////////////////////////
1266        var tr_link = document.createElement("TR");
1267        tr_link.id = "tr_link_"+ID;             
1268        var td1_link = document.createElement("TD");
1269        var td2_link = document.createElement("TD");
1270        td1_link.innerHTML = "&nbsp;";
1271        var a_cc_link = document.createElement('A');
1272        a_cc_link.innerHTML = get_lang('Add CC');
1273        a_cc_link.id = "a_cc_link_"+ID;
1274        a_cc_link.setAttribute("href","javascript:void(0)");
1275        a_cc_link.setAttribute("tabIndex","-1");
1276        a_cc_link.onclick = function () {
1277                                        this.style.display='none';
1278                                        document.getElementById('tr_cc_'+ID).style.display='';document.getElementById('space_link_'+ID).style.display='none';
1279                                        input_cc.focus();
1280                                        return false;
1281                                };
1282        td2_link.appendChild(a_cc_link);       
1283        var space = document.createElement("span");
1284        space.id ="space_link_"+ID;
1285        space.innerHTML="&nbsp;|&nbsp;";
1286        td2_link.appendChild(space);
1287        var a_cco_link = document.createElement('A');
1288        a_cco_link.innerHTML = get_lang('Add BCC');
1289        a_cco_link.id = "a_cco_link_"+ID;
1290        a_cco_link.setAttribute("href","javascript:void(0)");
1291        a_cco_link.setAttribute("tabIndex","-1");
1292        a_cco_link.onclick = function () {
1293                                        this.style.display='none';
1294                                        document.getElementById('tr_cco_'+ID).style.display='';
1295                                        document.getElementById('space_link_'+ID).style.display='none';
1296                                        input_cco.focus();
1297                                        return false;
1298                                };
1299        td2_link.appendChild(a_cco_link);       
1300        tr_link.appendChild(td1_link);
1301        tr_link.appendChild(td2_link);
1302        tbody_message.appendChild(tr_link);
1303        //////////////////////////////////////////////////////////////////////////////////////////////////////
1304        var tr4 = document.createElement("TR");
1305        var td4 = document.createElement("TD");
1306        //td4.setAttribute("noWrap","true");   
1307        td4.innerHTML = get_lang("Subject")+":";
1308        var td_subject = document.createElement("TD");
1309        var input_subject = document.createElement('input');
1310        input_subject.id = "subject_"+ID;
1311        input_subject.name = "input_subject";
1312        input_subject.setAttribute("tabIndex","1");
1313        input_subject.style.width = "90%";
1314        input_subject.setAttribute("autocomplete","off");
1315        td_subject.appendChild(input_subject);
1316        tr4.appendChild(td4);
1317        tr4.appendChild(td_subject);
1318        tbody_message.appendChild(tr4);
1319        ////////////////////////////////////////////////////////////////////////////////////////////////////// 
1320        var tr5 = document.createElement("TR");
1321        var td5 = document.createElement("TD");
1322        td5.innerHTML = "&nbsp;";
1323        var td_return_receipt = document.createElement("TD");
1324        td_return_receipt.setAttribute("noWrap","true");
1325        td_return_receipt.innerHTML = get_lang("Return receipt")+":";
1326        if (is_ie)
1327        {
1328                var input_return_receipt = document.createElement('input name=input_return_receipt');
1329        }
1330        else
1331        {
1332                var input_return_receipt = document.createElement('input');
1333                input_return_receipt.name = "input_return_receipt";
1334        }
1335        input_return_receipt.type = "checkbox";
1336        input_return_receipt.className = "checkbox";
1337        input_return_receipt.id = "return_receipt_"+ID;
1338        input_return_receipt.setAttribute("tabIndex","-1");
1339        td_return_receipt.appendChild(input_return_receipt);
1340
1341        // Workaround para resolver problema ao enviar e-mails
1342        if((preferences.use_assinar_criptografar != '0'))
1343        {
1344                if(parseInt(preferences.use_signature_digital_cripto)==1)
1345                {
1346                        td_return_receipt.innerHTML +=  "&nbsp;&nbsp;" + get_lang("Digitally sign message?")+"";
1347
1348                        if (is_ie)
1349                        {
1350                                var input_return_digital = document.createElement('input name=input_return_digital');
1351                        }
1352                        else
1353                        {
1354                                var input_return_digital = document.createElement('input');
1355                                input_return_digital.name = "input_return_digital";
1356                        }
1357
1358                        input_return_digital.type = "checkbox";
1359                        input_return_digital.className = "checkbox";
1360                        input_return_digital.id = "return_digital_"+ID;
1361                        input_return_digital.setAttribute("tabIndex","-1");
1362                        if(parseInt(preferences.use_signature_digital)==1)
1363                        {
1364                                input_return_digital.defaultChecked=true;
1365                        }
1366                        td_return_receipt.appendChild(input_return_digital);
1367                        td_return_receipt.innerHTML +=  "&nbsp;&nbsp;" + get_lang("Digitally crypt message?")+"";
1368
1369                        if (is_ie)
1370                        {
1371                                var input_return_cripto = document.createElement('input name=input_return_cripto');
1372                        }
1373                        else
1374                        {
1375                                var input_return_cripto = document.createElement('input');
1376                                input_return_cripto.name = "input_return_cripto";
1377                        }
1378
1379                        input_return_cripto.type = "checkbox";
1380                        input_return_cripto.className = "checkbox";
1381                        input_return_cripto.id = "return_cripto_"+ID;
1382                        input_return_cripto.setAttribute("tabIndex","-1");
1383                        input_return_cripto.defaultChecked=false;
1384
1385                        if(parseInt(preferences.use_signature_cripto)==1)
1386                        {
1387                                input_return_cripto.defaultChecked=true;
1388                        }
1389
1390                        td_return_receipt.appendChild(input_return_cripto);
1391                }
1392               
1393        }
1394        td_return_receipt.innerHTML += "";
1395       
1396        tr5.appendChild(td5);
1397        tr5.appendChild(td_return_receipt);
1398        tbody_message.appendChild(tr5);
1399        if (parseInt(preferences.use_important_flag))
1400        {
1401                var trn = document.createElement("TR");
1402                var tdn = document.createElement("TD");
1403                tdn.innerHTML = "&nbsp;";
1404                var td_important_msg = document.createElement("TD");
1405                td_important_msg.setAttribute("noWrap","true");
1406                td_important_msg.innerHTML = get_lang("Important message")+":";
1407                var input_important_message = document.createElement('input');
1408                input_important_message.type = "checkbox";
1409                input_important_message.className = "checkbox";
1410                input_important_message.id = "important_message_"+ID;
1411                input_important_message.name = "input_important_message";
1412                input_important_message.setAttribute("tabIndex","-1");
1413                td_important_msg.appendChild(input_important_message); 
1414                trn.appendChild(tdn);
1415                trn.appendChild(td_important_msg);
1416                tbody_message.appendChild(trn);
1417        }
1418
1419        var add_files = document.createElement("A");
1420        add_files.setAttribute("href", "javascript:void(0)");
1421        add_files.onclick = function () { addFile(ID); return false;};
1422        add_files.innerHTML =  get_lang("Attachments: add+");
1423        add_files.setAttribute("tabIndex","-1");
1424        var divfiles = document.createElement("DIV");
1425        divfiles.id = "divFiles_"+ID;
1426        var tr5 = document.createElement("TR");
1427        var td5_link = document.createElement("TD");
1428        var td5_input = document.createElement("TD");   
1429        td5_input.innerHTML = "&nbsp;";
1430        td5_link.setAttribute("valign","top");
1431        td5_link.setAttribute("colSpan","2");
1432        td5_link.appendChild(add_files);
1433        tr5.appendChild(td5_input);
1434        tr5.appendChild(td5_link);
1435        tbody_message.appendChild(tr5);
1436        var tr6 = document.createElement("TR");
1437        var td6_link  = document.createElement("TD");
1438        var td6_input = document.createElement("TD");
1439        tr6.appendChild(td6_link);
1440        td6_input.appendChild(divfiles);
1441        tr6.appendChild(td6_input);     
1442        tbody_message.appendChild(tr6);
1443        //////////////////////////////////////////////////////////////////////////////////////////////////////
1444        var tr5 = document.createElement("TR");
1445        var td5 = document.createElement("TD");
1446        td5.innerHTML = "&nbsp;";
1447        var td_body = document.createElement("TD");
1448        td_body.setAttribute("colSpan","2");
1449        var div_body_position = document.createElement("DIV");
1450        div_body_position.id = "body_position_" + ID;
1451        td_body.appendChild(div_body_position);
1452        tr5.appendChild(td5);
1453        tr5.appendChild(td_body);
1454        tbody_message.appendChild(tr5);
1455        // BEGIN MAKE THE SCROLL HEIGHT
1456        var defaultWidth = document.body.clientWidth - (is_ie ? 200 : 195);
1457        var _bar = document.getElementById("toolbar");
1458        var _offset = 0;
1459        if(_bar.style.visibility != 'hidden')
1460                _offset = _bar.offsetHeight ? _bar.offsetHeight :  _bar.clientHeight;           
1461        var _div = document.createElement("DIV");
1462        _div.id = "div_message_scroll_"+ID;
1463        _div.style.height = document.body.clientHeight - _offset - 105;
1464        content.style.height = document.body.clientHeight - _offset - 80;
1465        _div.style.overflow = "auto";
1466        _div.style.width = defaultWidth;
1467        // END MAKE THE SCROLL HEIGHT
1468
1469        // Hide the contac tips and re-position the pallete color.
1470        _div.onscroll = function() {
1471                var intElemScrollTop = Element("div_message_scroll_"+ID).scrollTop;
1472                if (!is_ie)
1473                        ColorPalette.repos(intElemScrollTop);
1474                Tooltip.scrollChanged();
1475        };
1476        //////////////////////////////////////////////////////////////////////////////////////////////////////
1477        _div.appendChild(form);
1478        content.appendChild(_div);
1479        table_message.appendChild(tbody_message);
1480        form.appendChild(table_message);
1481        expresso.connector.loadScript("jscode/rich_text_editor");
1482        RichTextEditor.loadEditor(ID);
1483        //////////////////////////////////////////////////////////////////////////////////////////////////////
1484        return ID;
1485}
1486
1487//      Verify if any user is sharing his name/email address
1488//      for use in the new messages's "From " field.
1489function draw_from_field(sel_from,tr1_1){
1490
1491        var el_shared_users = Element("el_shared_users");
1492        // The element was loaded and populated...so return.
1493        if(el_shared_users){   
1494                // Nothing to work...so return.
1495                if(el_shared_users.options.length == 0)
1496                        return;
1497                tr1_1.style.display = '';
1498                for (var x = 0; x < el_shared_users.options.length; x++) {
1499                        var _option = document.createElement("OPTION");
1500                        _option.text = el_shared_users.options[x].text;
1501                        _option.value = el_shared_users.options[x].value;
1502                        sel_from.options[sel_from.options.length] = _option;
1503                }
1504                return;
1505        }
1506        // Get the shared folders.....
1507        var sharedFolders = new Array();
1508        for(var i = 0; i < folders.length; i++) {
1509                var x = folders[i].folder_id;
1510                if (folders[i].folder_parent == 'user'){
1511                        sharedFolders[sharedFolders.length] = x;
1512                }
1513        }
1514
1515        var matchUser = '#';
1516        var sharedUsers = new Array();
1517        // Filter the shared folders (only root folders) .....
1518        for(var i = 0; i < sharedFolders.length; i++) {
1519                if(!sharedFolders[i].match(matchUser)) {
1520                        matchUser = sharedFolders[i];
1521                        sharedUsers[sharedUsers.length] = matchUser.substring(("user"+cyrus_delimiter).length,matchUser.length);
1522                }
1523        }
1524
1525        // Handler function for cExecute
1526        var h_user = function(data) {
1527                if(data.length > 0) {
1528                        tr1_1.style.display = '';
1529                        var _option = document.createElement("OPTION");
1530                        _option.text =  '"'+data.myname+'" <'+Element("user_email").value+'>';
1531                        _option.value  = data.myname+";"+Element("user_email").value;
1532                        sel_from.options[sel_from.options.length] = _option;
1533
1534                        var options = '';
1535                        for (var x = 0; x < data.length; x++)   {
1536                                var _option = document.createElement("OPTION");
1537                                _option.text = '"'+data[x].cn[0] + '" <'+data[x].mail[0]+'>';
1538                                _option.value = data[x].cn[0] + ';'+data[x].mail[0]+';'+data[x].save_shared[0]+';'+data[x].uid[0];
1539                                sel_from.options[sel_from.options.length] = _option;
1540                        }
1541                }
1542                var shared_users_from = Element("el_shared_users");
1543                if(!shared_users_from) {
1544                        shared_users_from = sel_from.cloneNode(true);
1545                        shared_users_from.id = "el_shared_users";
1546                        shared_users_from.style.display = 'none';
1547                        document.body.appendChild(shared_users_from);
1548                }
1549        };
1550        // First time, so execute.....
1551        cExecute ("expressoMail1_2.ldap_functions.getSharedUsersFrom&uids="+sharedUsers.join(';'), h_user);
1552}
1553
1554function changeBgColorToON(all_messages, begin, end){
1555        for (begin; begin<=end; begin++)
1556        {
1557                add_className(all_messages[begin], 'selected_msg');
1558                Element("check_box_message_" + all_messages[begin].id).checked = true;
1559        }
1560}
1561function updateBoxBgColor(box){
1562        // Set first TR Class
1563        var _className = 'tr_msg_read2';
1564        for(var i = 0; i < box.length;i++){     
1565                if(exist_className(box[i],_className))
1566                        remove_className(box[i], _className);
1567                _className = (_className == 'tr_msg_read2' ? 'tr_msg_read' : 'tr_msg_read2');
1568                if(!exist_className(box[i],_className))
1569                        add_className( box[i], _className);
1570        }
1571}
1572
1573function changeBgColor(event, msg_number){
1574        actual_tr = Element(msg_number);
1575
1576        if (event.shiftKey)
1577        {
1578                last_tr = Element(last_message_selected);
1579                if(!last_tr)
1580                        last_tr = actual_tr;
1581
1582                all_messages = actual_tr.parentNode.childNodes;
1583
1584                for (var i=0; i < all_messages.length; i++)
1585                {
1586                        if (actual_tr.id == all_messages[i].id)
1587                                first_order = i;
1588                        if (last_tr.id == all_messages[i].id)
1589                                last_order = i;
1590                }
1591
1592                if (parseInt(first_order) > parseInt(last_order))
1593                        changeBgColorToON(all_messages, last_order, first_order);
1594                else
1595                        changeBgColorToON(all_messages, first_order, last_order);
1596        }
1597        else{
1598                //if ( exist_className(actual_tr, 'selected_msg') )
1599                if ( Element('check_box_message_' + msg_number).checked )
1600                        add_className(actual_tr, 'selected_msg');
1601                else
1602                        remove_className(actual_tr, 'selected_msg');
1603        }
1604        last_message_selected = msg_number;
1605}
1606
1607function deny_email(email){
1608        expresso.connector.loadScript("jscode/filter");
1609        expresso.connector.loadScript("jscode/filters");
1610        var dn_em       = document.createElement("SPAN");
1611        dn_em.id = "tt_d";
1612        dn_em.onclick = function(){filter_rules.new_rule(url_encode(email));};
1613        dn_em.setAttribute("title",get_lang("Block Sender"));
1614        dn_em.style.cursor = "pointer";         
1615        dn_em.innerHTML = "<img align='top' onclick=filter.new_rule('"+url_encode(email)+"') src='" + URL_SERVER + "expressoMail1_2/templates/"+template+"/images/deny.gif'>";
1616        return dn_em;
1617
1618}
1619
1620
1621function show_div_address_full(id, type) {
1622        var div_address_full = Element("div_"+type+"address_full_"+id);
1623        if(!div_address_full) {
1624                div_address_full = document.createElement("SPAN");
1625                div_address_full.id = "div_"+type+"address_full_"+id;   
1626                div_address_full.style.display="none"; 
1627                var _address = eval(type+"address_array['"+id+"']");
1628                var isOverLimit = (_address.length > 100);
1629
1630                if(isOverLimit) {
1631                        alert("Esse campo possui muitos endereços ("+_address.length+" destinatários).\r\n"+
1632                                        "Para evitar o travamento do navegador, o botão 'Adicionar Contato' foi desabilitado!");
1633                }
1634
1635                for(var idx = 1 ; idx  < _address.length;idx++) {
1636                        div_address_full.innerHTML += isOverLimit ?  '<br>'+_address[idx] : ','+this.draw_plugin_cc(id,_address[idx]);
1637                }               
1638                div_address_full.innerHTML += " (<a STYLE='color: RED;' onclick=document.getElementById('div_"+type+"address_full_"+id+"').style.display='none';document.getElementById('div_"+type+"address_"+id+"').style.display='';>"+get_lang('less')+"</a>)";
1639                Element(type+"_"+id).appendChild(div_address_full);
1640        }
1641        Element('div_'+type+'address_'+id).style.display='none';
1642        div_address_full.style.display='';
1643}
1644function draw_footer_box(num_msgs){
1645        folder = get_current_folder();
1646        var span_R = Element("table_message"); 
1647        var span_options = Element("span_options");     
1648        if(!span_options) {
1649                span_options = document.createElement("TD");   
1650                span_options.style.fontSize = "12";
1651                span_options.id = "span_options";
1652                span_R.appendChild(span_options);
1653        }
1654
1655        var change_font_color = 'onmouseover="var last_class = this.className;'+
1656                'if (this.className != \'message_options_over\')'+
1657                                'this.className=\'message_options_active\'; '+
1658                                'this.onmouseout=function(){this.className=last_class;}"';
1659
1660                                span_options.innerHTML =
1661                                '<span class="message_options_trash"><span ' + change_font_color + ' title="'+get_lang("Delete")+'" class="message_options" onclick=proxy_mensagens.delete_msgs(\'null\',\'selected\',\'null\')>'+get_lang("Delete")+'</span></span>'+
1662                                '<span class="message_options_move"><span ' + change_font_color + ' title="'+get_lang("Move")+'" class="message_options" onclick=wfolders.makeWindow(\"\",\"move_to\")>'+get_lang("Move")+'</span></span>'+
1663                                ((expresso_offline)?" ":'<span class="message_options_print"><span ' + change_font_color + ' title="'+get_lang("Print")+'" class="message_options" onclick=print_all()>'+get_lang("Print")+'</span></span>')+
1664                                //              '<span class="message_options_print"><span ' + change_font_color + ' title="'+get_lang("Print")+'" class="message_options" onclick=print_all()>'+get_lang("Print")+'</span></span>'+
1665                                ((expresso_offline)?" ":'<span class="message_options_export"><span ' + change_font_color + ' title="'+get_lang("Export")+'" class="message_options" onclick="proxy_mensagens.export_all_messages()">'+get_lang("Export")+'</span></span>') +
1666                                ((expresso_offline)?" ":'<span class="message_options_import"><span ' + change_font_color + ' title="'+get_lang("Import")+'" class="message_options" onclick="import_window()">'+get_lang("Import")+'</span></span>');
1667                                if(preferences.use_local_messages==1 && !expresso_offline)
1668                                if(proxy_mensagens.is_local_folder(current_folder))
1669                                span_options.innerHTML += '&nbsp; <span title="'+get_lang("Unarchive")+'" class="message_options" onclick="expresso_local_messages.unarchive_msgs(\''+folder+'\',null)">'+get_lang("Unarchive")+'</span>';
1670                                else
1671                                span_options.innerHTML += '&nbsp; <span title="'+get_lang("Archive")+'" class="message_options" onclick="archive_msgs(\''+folder+'\',null)">'+get_lang("Archive")+'</span>';
1672                                if (use_spam_filter) {
1673                                if ( current_folder == 'INBOX'+cyrus_delimiter+'Spam' ) {
1674                                span_options.innerHTML += ' | <span ' + change_font_color + ' title="'+get_lang("Not Spam")+'" class="message_options" onclick="nospam(\'selected\',\'null\',\'null\')">'+get_lang("Not Spam")+'</span>';
1675                                }
1676                                else {
1677                                        span_options.innerHTML += ' | <span ' + change_font_color + ' title="'+get_lang("Mark as Spam")+'" class="message_options" onclick="spam(\'null\', \'selected\',\'null\')">'+get_lang("Mark as Spam")+'</span>';
1678                                }
1679                                }
1680                                var span_D = Element("span_D");
1681                                if(!span_D){
1682                                        span_D = document.createElement("TD"); 
1683                                        span_D.align = "right";
1684                                        span_D.style.fontSize = "12";
1685                                        span_D.id = "span_D";
1686                                        span_R.appendChild(span_D);
1687                                }
1688                                span_D.innerHTML =
1689                                        get_lang("List")+': '+
1690                                        '<span ' + change_font_color + ' id="span_flag_SORTARRIVAL" class="'+(search_box_type == 'ALL' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("All")+'" onclick="if(\'ALL\' == \''+search_box_type+'\') return false;sort_box(\'ALL\',\''+sort_box_type+'\')">'+get_lang("All")+'</span>, '+
1691                                        '<span ' + change_font_color + ' id="span_flag_UNSEEN" class="'+(search_box_type == 'UNSEEN' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("l_unseen")+'" onclick="if(\'UNSEEN\' == \''+search_box_type+'\') return false;sort_box(\'UNSEEN\',\''+sort_box_type+'\')">'+get_lang("l_unseen")+'</span>, '+
1692                                        '<span ' + change_font_color + ' id="span_flag_SEEN" class="'+(search_box_type == 'SEEN' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("l_seen")+'" onclick="if(\'SEEN\' == \''+search_box_type+'\') return false;sort_box(\'SEEN\',\''+sort_box_type+'\')">'+get_lang("l_seen")+'</span>, '+
1693                                        '<span ' + change_font_color + ' id="span_flag_ANSWERED" class="'+(search_box_type == 'ANSWERED' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("l_answered")+'" onclick="if(\'ANSWERED\' == \''+search_box_type+'\') return false;sort_box(\'ANSWERED\',\''+sort_box_type+'\')">'+get_lang("l_answered")+'</span>, '+
1694                                        '<span ' + change_font_color + ' id="span_flag_FLAGGED" class="'+(search_box_type == 'FLAGGED' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("l_important")+'" onclick="if(\'FLAGGED\' == \''+search_box_type+'\') return false;sort_box(\'FLAGGED\',\''+sort_box_type+'\')">'+get_lang("l_important")+'</span>&nbsp;&nbsp;';
1695                                draw_paging(num_msgs);
1696                                Element("tot_m").innerHTML = num_msgs; 
1697};
Note: See TracBrowser for help on using the repository browser.