source: branches/2.2/expressoMail1_2/js/search.js @ 3722

Revision 3722, 39.4 KB checked in by eduardoalex, 13 years ago (diff)

Ticket #1392 - Corrigindo a busca por mensagens com ## e -- no assunto

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1/**************************************************************************\
2 Início
3\**************************************************************************/
4        function searchE()
5        {
6                this.searchW   = new Array;
7                this.name_box_search = "";
8                this.all_boxes = new Array;
9                this.type = "";
10                this.txtfields = new Array("txt_ass","txt_de","txt_body","txt_para","txt_cc","txt_cco",
11                                        "since_date", "before_date", "on_date");
12                this.selectFields = new Array("flagged", "seen", "answered", "recent");
13        }
14
15        //Monta os forms dentro da janela;
16        searchE.prototype.showForms = function(value){
17                // Principal
18                if(!Element("window_search")) {
19                        var form_search = document.createElement("DIV");
20                        form_search.style.visibility = 'hidden';
21                        form_search.style.top = '0px';
22                        form_search.style.left = '0px';
23                        form_search.id = "window_search";
24                        document.body.appendChild(form_search);
25                }
26
27                // Pesquisa
28                if(!Element("div_form_search")){
29                        var div_form_search = document.createElement("DIV");
30                        div_form_search.id = "div_form_search";
31                        div_form_search.style.position = "absolute";
32                        div_form_search.style.left = "10px";
33                        div_form_search.style.top  = "10px";
34                        div_form_search.style.borderStyle = "outset";
35                        div_form_search.style.borderColor = "black";
36                        div_form_search.style.borderWidth = "1px";
37                        div_form_search.style.width = "784px";
38                        div_form_search.style.height = "418px";
39                        div_form_search.style.overflow = "hidden";
40                        div_form_search.innerHTML = "";
41                        var call_form_search = EsearchE.mount_form();
42                        div_form_search.appendChild(call_form_search);
43                        form_search.appendChild(div_form_search);
44
45                        Calendar._TT['WEEKEND'] = '0,6'; // hack
46                        Calendar._TT['DAY_FIRST'] = 'Mostrar %s primeiro';
47                        Calendar.setup({
48                            inputField  : 'since_date',
49                            button      : 'since_date-trigger',
50                            ifFormat    : '%d/%m/%Y',
51                            daFormat    : '%d/%m/%Y'
52                        });
53
54                        Calendar.setup({
55                            inputField  : 'before_date',
56                            button      : 'before_date-trigger',
57                            ifFormat    : '%d/%m/%Y',
58                            daFormat    : '%d/%m/%Y'
59                        });
60
61                        Calendar.setup({
62                            inputField  : 'on_date',
63                            button      : 'on_date-trigger',
64                            ifFormat    : '%d/%m/%Y',
65                            daFormat    : '%d/%m/%Y'
66                        });
67
68                }
69
70                if(!Element("div_button_search")){
71                        var div_button_search    = document.createElement("DIV");
72                                div_button_search.id = "div_button_search";
73                                div_button_search.style.position = "absolute";
74                                div_button_search.style.marginLeft = "430px";
75                                div_button_search.style.top = "223px";
76                                div_button_search.style.width = "350px";
77                                div_button_search.style.height = "25px";
78                                div_button_search.innerHTML = "<table style='width: 100%;' border='0' cellpadding='0' cellspacing='0' align='center'>"+
79                                                                                          "<tr>"+
80                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Search') + " onclick='EsearchE.func_search()'></td>"+
81                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Clean') + " onclick='EsearchE.func_clean()'></td>"+
82                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Close') + " onclick='EsearchE.func_close(\"hidden\")'></td>"+
83                                                                                          "</tr>"+
84                                                                                          "</table>";
85                                form_search.appendChild(div_button_search);
86                }
87
88                if(!Element("table_layer")){
89                        var table_layer    = "";
90                }
91
92                if(value == "")
93                        EsearchE.showWindow(Element("window_search"));
94
95                // Cria as caixas postais;
96                EsearchE.mount_folders();
97
98                if(value){
99                        Element("check_all_msg").checked = true;
100                        EsearchE.all_mailboxes();
101                        EsearchE.func_search(value);
102                }
103
104        }
105
106        searchE.validate_date_field = function(date)
107        {
108
109        }
110
111        //Form
112        searchE.prototype.mount_form = function(value){
113                var form_sch = document.createElement("FORM");
114                form_sch.id  = "form_sch";
115
116                form_sch.innerHTML =  '<fieldset style="width:400px; text-align:right; padding: 5px; position:absolute;">'
117                                                        + '     <legend>'+get_lang('Inform your search in the text fields')+'</legend>'
118                                                        + '     <label>'+get_lang("From")+':</label>'
119                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_de" size="39">'
120                                                        + '     <br style="margin-bottom:15px"/>'
121                                                        + '     <label>'+get_lang('To')+':</label>'
122                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_para" size="39">'
123                                                        + '     <br style="margin-bottom:15px"/>'
124                                                        + '     <label>'+get_lang('Cc')+':</label>'
125                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_cc" size="39">'
126                                                        + '     <br style="margin-bottom:15px"/>'
127                                                        + '     <label>'+get_lang('Subject')+':</label>'
128                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_ass" size="39">'
129                                                        + '     <br style="margin-bottom:15px"/>'
130                                                        + '     <label>'+get_lang('Message body')+':</label>'
131                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_body" size="39">'
132
133                                                        + '     <br style="margin-bottom:30px"/>'
134                                                        + '     <label>'+get_lang("Since Date")+':</label>'
135                                                        + '     <input style="margin-left: 6px;" type="text" id="since_date" size="8">'
136                                                        + '     <img id="since_date-trigger" src="/phpgwapi/templates/default/images/datepopup.gif" title="'+get_lang("Select Date")+'" style="cursor:pointer; cursor:hand;"/>'
137                                                        + '     <label style="margin-left: 20px;">'+get_lang('Before Date')+':</label>'
138                                                        + '     <input style="margin-left: 6px;" type="text" id="before_date" size="8">'
139                                                        + '     <img id="before_date-trigger" src="/phpgwapi/templates/default/images/datepopup.gif" title="'+get_lang("Select Date")+'" style="cursor:pointer; cursor:hand;"/>'
140                                                        + '     <br style="margin-bottom:15px"/>'
141
142                                                        + '     <label>'+get_lang('On Date')+':</label>'
143                                                        + '     <input style="margin-left: 6px;" type="text" id="on_date" size="8">'
144                                                        + '     <img style="margin-right: -8px" id="on_date-trigger" src="/phpgwapi/templates/default/images/datepopup.gif" title="'+get_lang("Select Date")+'" style="cursor:pointer; cursor:hand;"/>&nbsp;&nbsp;</spam>'
145                                                        + '     <br style="margin-bottom:30px"/>'
146
147                                                        + '     <label>'+get_lang('Flags')+':</label>'
148                                                        + '     <select style="width:15em; margin-left: 6px" name="flagged" id="flagged">'
149                                                        + '     <option value=""/>'
150                                                        + '     <option value="FLAGGED">'+ get_lang("Flagged") +'</option>'
151                                                        + '     <option value="UNFLAGGED">'+ get_lang("Unflagged") +'</option>'
152                                                        + '     </select>'
153                                                        + '     <br style="margin-bottom:15px"/>'
154                                                        + '     <select style="width:15em;" name="seen" id="seen">'
155                                                        + '     <option value=""/>'
156                                                        + '     <option value="SEEN">'+ get_lang("Seen") +'</option>'
157                                                        + '     <option value="UNSEEN">'+ get_lang("Unseen") +'</option>'
158                                                        + '     </select>'
159                                                        + '     <br style="margin-bottom:15px"/>'
160                                                        + '     <select style="width:15em;" name="answered" id="answered">'
161                                                        + '     <option value=""/>'
162                                                        + '     <option value="ANSWERED">'+ get_lang('Answered/Forwarded') +'</option>'
163                                                        + '     <option value="UNANSWERED">'+ get_lang('Unanswered/Unforwarded') +'</option>'
164                                                        + '     </select>'
165                                                        + '     <br style="margin-bottom:15px"/>'
166                                                        + '     <select style="width:15em;" name="recent" id="recent">'
167                                                        + '     <option value=""/>'
168                                                        + '     <option value="RECENT">'+ get_lang('Recent') +'</option>'
169                                                        + '     <option value="OLD">'+ get_lang('Old') +'</option>'
170                                                        + '     </select>'
171
172                                                        + '     <br style="margin-bottom:60px"/>'
173                                                        + '</fieldset>'
174                                                        + '<fieldset style="width:350px; padding: 5px; position:absolute; margin-left: 414px">'
175                                                        + '     <legend>'+get_lang('Search the messages in these folders')+'</legend>'
176                                                        + '     <div id="folders" style="width:160px; height:150px;float:left;margin-bottom:10px;"></div>'
177                                                        + '     <div style="float:left;height:100px;padding-top:50px;margin: 0 3px;">'
178                                                        + '             <input type="button" id="incluir" name="incluir" value=">>" onclick="EsearchE.add_mailboxes()">'
179                                                        + '             <br style="margin-bottom:15px">'
180                                                        + '             <input type="button" id="excluir" name="excluir" value="<<" onclick="EsearchE.del_mailboxes()">'
181                                                        + '     </div>'
182                                                        + ' <div style="float:left;">'
183                                                        + '      <select multiple id="sel_search_nm_box1" name="sel_search_nm_box1" style="width:140px;height:150px;"></select>'
184                                                        + ' </div>'
185                                                        + '     <br clear="both">'
186                                                        + '     <input type="checkBox" id="check_all_msg" name="check_all_msg" onclick="EsearchE.all_mailboxes()">'
187                                                        + '     <b>'+get_lang('In all the folders')+'</b>'
188                                                        + '</fieldset>';
189
190                return form_sch;
191        }
192
193        // Pastas;
194        searchE.prototype.mount_folders = function(){
195                connector.loadScript("TreeS");
196
197                if( Element("div_folders_search") == null){
198                        var div_folders = document.createElement("DIV");
199                                div_folders.id = "div_folders_search";
200                                div_folders.style.width = "155px";
201                                div_folders.style.height = "152px";
202                                div_folders.style.borderStyle = "outset";
203                                div_folders.style.borderColor = "black";
204                                div_folders.style.borderWidth = "1px";
205                                div_folders.style.background  = "#F7F7F7";
206                                div_folders.style.overflow = "auto";
207                                div_folders.innerHTML = "";
208                                var dest_div = Element("folders");
209                                dest_div.appendChild(div_folders);
210                }
211                ttree.make_tree(folders,"div_folders_search","_folders_tree_search","","","","");
212        }
213
214        //This func returns the most recent date
215        function date_comp(a,b)
216        {
217                var data1 = a.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
218                data1 = data1[0].substr(0, data1[0].indexOf('--'))
219                with ( data1 )
220                        data1 = Date.UTC(substr(6), substr(3, 2), substr(0, 2));
221                var data2 = b.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
222                data2 = data2[0].substr(0, data2[0].indexOf('--'))
223                with ( data2 )
224                        data2 = Date.UTC(substr(6), substr(3, 2), substr(0, 2));
225                return data2 - data1;
226        }
227       
228        function date_comp_reverse(a,b)
229        {
230                return date_comp(b,a);
231        }
232
233        function box_comp(a,b)
234        {
235                var compare = [];
236                        compare[0] = a.substr(0, a.indexOf('--'));
237                        compare[0] = compare[0].toLowerCase();
238               
239                var temp=compare[0];
240                        compare[1] = b.substr(0, b.indexOf('--'))
241                        compare[1] = compare[1].toLowerCase();
242               
243                compare.sort();
244               
245                if (temp != compare[0])
246                        return +1;
247                else
248                        return -1;
249        }
250       
251        function box_comp_reverse(a,b)
252        {
253                return box_comp(b,a);
254        }
255
256        function who_comp(a,b)
257        {
258                var compare = [];
259                        compare[0] = a.substr(a.indexOf('--')+2);
260                        compare[0] = compare[0].substr(compare[0].indexOf('--')+2);
261                        compare[0] = compare[0].toLowerCase();
262               
263                var temp = compare[0];
264                        compare[1] = b.substr(b.indexOf('--')+2);
265                        compare[1] = compare[1].substr(compare[1].indexOf('--')+2);
266                        compare[1] = compare[1].toLowerCase();
267               
268                compare.sort();
269               
270                if (temp != compare[0])
271                        return +1;
272                else
273                        return -1;
274        }
275       
276        function who_comp_reverse(a,b)
277        {
278                return who_comp(b,a);
279        }
280
281        function subject_comp(a,b)
282        {
283                var compare = [];
284                        compare[0] = a.substr(a.indexOf('--')+2);
285                        compare[0] = compare[0].substr(compare[0].indexOf('--')+2);
286                        compare[0] = compare[0].substr(compare[0].indexOf('--')+2);
287                        compare[0] = compare[0].toLowerCase();
288                var temp=compare[0];
289                        compare[1] = b.substr(b.indexOf('--')+2);
290                        compare[1] = compare[1].substr(compare[1].indexOf('--')+2);
291                        compare[1] = compare[1].substr(compare[1].indexOf('--')+2);
292                        compare[1] = compare[1].toLowerCase();
293               
294                compare.sort();
295               
296                if (temp != compare[0])
297                        return +1;
298                else
299                        return -1;
300        }
301       
302        function subject_comp_reverse(a,b)
303        {
304                return subject_comp(b,a);
305        }
306
307        function size_comp(a,b)
308        {
309                var data1 = a.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
310                        data1 = data1[0].substr(data1[0].indexOf('--')+2)
311                        data1 = data1.substr(0,data1.indexOf('--'))
312                var size_a = parseInt(data1.substr(0,data1.indexOf(' ')));
313               
314                if (data1.match("k"))
315                        size_a = size_a * 1024;
316                else
317                        if (data1.match("m"))
318                                size_a = size_a * 1048576;
319               
320                var data2 = b.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
321                        data2 = data2[0].substr(data2[0].indexOf('--')+2)
322                        data2 = data2.substr(0,data2.indexOf('--'))
323                var size_b = parseInt(data2.substr(0,data2.indexOf(' ')));
324               
325                if (data2.match("k"))
326                        size_b = size_b * 1024;
327                else
328                        if (data2.match("m"))
329                                size_b = size_b * 1048576;
330                return size_b - size_a;
331        }
332       
333        function size_comp_reverse(a,b)
334        {
335                return size_comp(b,a);
336        }
337
338        // Form resultado
339        searchE.prototype.mount_result = function( data, sort_type)
340        {
341                var nw_array = new Array;
342                var var_tmp = data.substr(2, data.length - 4);
343                        var_tmp  = var_tmp.split("####");
344                               
345                var cont = parseInt(0);
346               
347                switch (sort_type)
348                {
349                        case 'SORTDATE':
350                                var_tmp.sort(date_comp);
351                                break;
352                        case 'SORTDATE_REVERSE':
353                                var_tmp.sort(date_comp_reverse);
354                                break;
355                        case 'SORTBOX':
356                                var_tmp.sort(box_comp);
357                                break;
358                        case 'SORTBOX_REVERSE':
359                                var_tmp.sort(box_comp_reverse);
360                break;
361                        case 'SORTSUBJECT':
362                                var_tmp.sort(subject_comp);
363                                break;
364                        case 'SORTSUBJECT_REVERSE':
365                                var_tmp.sort(subject_comp_reverse);
366                                break;
367                        case 'SORTWHO':
368                                var_tmp.sort(who_comp);
369                                break;
370                        case 'SORTWHO_REVERSE':
371                                var_tmp.sort(who_comp_reverse);
372                                break;
373                        case 'SORTSIZE':
374                                var_tmp.sort(size_comp);
375                                break;
376                        case 'SORTSIZE_REVERSE':
377                                var_tmp.sort(size_comp_reverse);
378                                break;
379                        default:
380                                var showMsg = 1;
381                }
382
383                for(var i=0; i < var_tmp.length; i++)
384                {
385                        if(var_tmp[i] != "")
386                        {
387                                nw_array[cont] = var_tmp[i];
388                                cont++;
389                        }
390                }
391
392        if( ( preferences.search_result_number != '65536') && (nw_array.length > 0) && (nw_array.length >= preferences.search_result_number) )
393        {
394            nw_array.length = preferences.search_result_number;
395            write_msg(get_lang("More than %1 results. Please, try to refine your search.",preferences.search_result_number));
396        }
397        else
398        {
399                write_msg(nw_array.length + " "+ get_lang('results found'));
400        }
401
402                numBox++;
403               
404                var border_id = create_border(get_lang("Search Results"), "search_" + numBox);
405       
406                if (!border_id)
407        {
408            return;
409        }
410
411        currentTab = border_id;
412        openTab.content_id[currentTab] = Element('content_id_search_' + numBox);
413        openTab.type[currentTab] = 1;
414                var table = document.createElement("TABLE");
415                table.id    = "table_resultsearch_" + numBox;
416                table.frame = "void";
417                table.rules = "rows";
418                table.cellPadding = "0";
419                table.cellSpacing = "0";
420                table.className = "table_box";
421
422                var tbody               = document.createElement("TBODY");
423                        tbody.id        = "tbody_box_" + numBox;
424
425                for( var i = 0; i < nw_array.length; i++)
426                {
427                        var tr = document.createElement("TR");
428                                tr.style.height = preferences.line_height;
429                        nw_array[i] = url_decode(unescape(nw_array[i]));
430                       
431                        var aux1;
432                        aux1 = nw_array[i].match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
433                        /*
434                         * E-mails do dia estão vindo com o horário em mensagens locais.
435                         * Caso isso seja "corrigido" essa condicional não será mais necessária
436                         */
437                        if(aux1==null)
438                                aux1 = nw_array[i].match(/\d{2}:\d{2}--\d+? \w*b--.*--\d*$/g);
439                        aux1 = aux1[0].split("--");
440                        nw_array[i] = nw_array[i].substr(0, nw_array[i].indexOf(aux1[0])-2);
441                       
442                        var aux         = [];
443                        var mailbox = "";
444                        aux[0] = mailbox = nw_array[i].substr(0, nw_array[i].indexOf('--'));
445                        nw_array[i] = nw_array[i].substr(nw_array[i].indexOf('--')+2);
446                        aux[3] = nw_array[i].substr(0, nw_array[i].indexOf('--'));
447                        nw_array[i] = nw_array[i].substr(nw_array[i].indexOf('--')+2);
448                        aux[1] = nw_array[i].substr(0, nw_array[i].indexOf('--'));
449                        aux[2] = nw_array[i].substr(nw_array[i].indexOf('--')+2);
450                        aux = aux.concat(aux1);
451
452                       
453                        var mailbox_name = aux[0];
454                        var mailbox_id = aux[3];
455                        var uid_msg = aux[7];
456                        var subject = aux[2];
457                        tr.id = uid_msg+"_s"+global_search;
458
459                        // Keep the two lines together please
460                        tr.setAttribute('name',mailbox);
461                        tr.name = mailbox;
462
463                        if (aux[5].match("U"))
464                                add_className(tr,'tr_msg_unread');
465                        add_className(tr, i%2 != 0 ? 'tr_msg_read2' : 'tr_msg_read');
466            var _onclick = function () { proxy_mensagens.get_msg(this.parentNode.id,url_encode(this.parentNode.getAttribute('name')),false,show_msg);};
467            for(var j=0 ; j <= 10 ; j++)
468                        {
469                                var td = document.createElement("TD");
470                                if (j == 0)
471                                {
472                                        td.style.width = "1%";
473                                        var td1 = '<input type="checkbox" id="'+ border_id +'_check_box_message_'+uid_msg+'"></input>';
474
475                                }
476                                if (j == 1)
477                                {
478                                        td.style.width = "2%";
479                                        if (aux[6].match('T'))
480                                        {
481                                                attachNum = parseInt(aux[6].substr(aux[6].indexOf('T')+1));
482                                                td1 = "<img src='templates/"+template+"/images/clip.gif' title='"+attachNum +' '+ get_lang('attachment(s)')+"'>";
483                                        }
484                                        else
485                                                td1 = '';
486                                }
487                                if (j == 2)
488                                {
489                                        td.style.width = "1%";
490                                        td.id = "td_message_answered_"+uid_msg;
491                                        if (aux[6].match('X'))
492                                                td1 = '<img src=templates/'+template+'/images/forwarded.gif title=Forwarded>';
493                                        else
494                                                if (aux[6].match('A'))
495                                                        td1 = '<img src=templates/'+template+'/images/answered.gif>';
496                                                else
497                                                        td1 = '';
498                                }
499                                if (j == 3)
500                                {
501                                        td.style.width = "1%";
502                                        td.id = "td_message_important_"+uid_msg;
503                                        if (aux[6].match("F"))
504                                        {
505                                                add_className(tr, 'flagged_msg');
506                                                td.style.background = "url(templates/"+template+"/images/important.gif) no-repeat center";
507                                        }
508                                        else
509                                                td1 = '';
510                                }
511                                if (j == 4)
512                                {
513                                        td.style.width = "1%";
514                                        td.id = "td_message_sent_"+uid_msg;
515                                        td1 = '';
516                                }
517                                if (j == 5)
518                                {
519                                        td.style.width = "20%";
520                                        td.onclick = _onclick;
521                                        var nm_box = aux[0].split(cyrus_delimiter);
522                                        var td1 = nm_box.pop();
523                                        td.setAttribute("NoWrap","true");
524                                        td.style.overflow = "hidden";
525                                        td.style.color = "#42795b";
526                                        td.style.fontWeight = "bold";
527                                        if(proxy_mensagens.is_local_folder(td1))
528                                        {
529                                                var td1 = this.aux_local_folder_display(td1);
530                                                tr.name = aux[0]; // precisa trocar pelo nome real no banco do gears.
531                                        }
532                                        else
533                                        {
534                                                if(td1 == "INBOX")
535                                                {
536                                                        var td1  = get_lang("Inbox");
537                                                }
538                                                else if (nm_box[0] == 'user')
539                                                {
540                                                        if (nm_box.length > 1)
541                                                                var td1 = nm_box[1] + '/' + lang_folder(td1);
542                                                        else
543                                                                var td1 = td1;
544                                                }
545                                                else
546                                                        var td1 = lang_folder(td1);
547                                        }
548
549                                        if( proxy_mensagens.is_local_folder(td1))
550                                        {
551                                                var td1 = this.aux_local_folder_display(td1);
552                                        }
553                                }
554                                if( j == 6)
555                                {
556                                        if (aux[1].length > 20)
557                                                aux[1] = aux[1].substr(0,20) + "...";
558                                        td.style.width = "20%";
559                                        td.onclick = _onclick;
560                                        td.setAttribute("NoWrap","true");
561                                        td.style.overflow = "hidden";
562                                        var td1  =  '<div style="width:100%;overflow:hidden">'+aux[1]+"</div>";
563                                }
564                                if( j == 7)
565                                {
566                                        var subject_encode = url_encode(subject);
567                                        if (! subject_encode)
568                                                aux[2] = get_lang("no subject") + "...";
569                                        if ( subject.length > 45)
570                                                aux[2] = subject.substr(0,45) + "...";
571                                        td.style.width = "35%";
572                                        td.onclick = _onclick;
573                                        td.setAttribute("NoWrap","true");
574                                        td.style.overflow = "hidden";
575                                        var td1  = aux[2];
576                                }
577                                if( j == 8)
578                                {
579                                        td.style.width = "13%";
580                                        td.align = "center";
581                                        td.onclick = _onclick;
582                                        var td1  = aux[4];
583                                }
584                                if( j == 9)
585                                {
586                                        td.style.width = "10%";
587                                        td.align = "center";
588                                        td.onclick = _onclick;
589                                        td.setAttribute("NoWrap","true");
590                                        var td1  = aux[5];
591                                }
592                                if (j == 10)
593                                {
594                                        if (aux[6].match("U"))
595                                                add_className(tr, 'tr_msg_unread');
596                                        if (aux[7].match("F"))
597                                                add_className(tr, 'flagged_msg');
598                                        var td1 = '';
599                                }
600                                td.innerHTML = td1;
601                                tr.appendChild(td);
602                        }
603                        aux.splice(0,(aux.length));
604
605                _dragArea.makeDragged(tr, uid_msg, subject, true, mailbox_id);
606                tbody.appendChild(tr);
607                }
608                table.appendChild(tbody);
609
610        var content_search =  Element('content_id_search_' + numBox);
611        var div_scroll_result = document.createElement("DIV");
612        div_scroll_result.id = "divScrollMain_"+numBox;
613        div_scroll_result.style.overflow = "auto";
614
615                if(is_ie)
616                        Element("border_table").width = "99.5%";
617
618                // Put header
619                var table_element = document.createElement("TABLE");
620                var tbody_element = document.createElement("TBODY");
621                table_element.setAttribute("id", "table_message_header_box");
622                table_element.className = "table_message_header_box";
623                tr_element = document.createElement("TR");
624                tr_element.className = "message_header";
625                td_element0 = document.createElement("TD");
626                td_element0.setAttribute("width", "7%");
627                chk_box_element = document.createElement("INPUT");
628                chk_box_element.id  = "chk_box_select_all_messages";
629                chk_box_element.setAttribute("type", "checkbox");
630                chk_box_element.className = "checkbox";
631                chk_box_element.onclick = function(){select_all_search_messages(this.checked,content_search.id);};
632                chk_box_element.onmouseover = function () {this.title=get_lang('Select all messages.')};
633                chk_box_element.onkeydown = function (e){
634                        if (is_ie)
635                        {
636                                if ((window.event.keyCode) == 46)
637                                        delete_msgs(current_folder,'selected','null');
638                        }
639                        else
640                        {
641                                if ((e.keyCode) == 46)
642                                        delete_msgs(current_folder,'selected','null');
643                        }
644                };
645
646                td_element0.appendChild(chk_box_element);
647                td_element1 = document.createElement("TD");
648                td_element1.setAttribute("width", "20%");
649                td_element1.align = "left";
650                if (sort_type == 'SORTBOX')
651                {
652                        td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX_REVERSE'); delete_border(border_id,false);};
653                        td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
654                }
655                else
656                {
657                        td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX'); delete_border(border_id,false);};
658                        if  (sort_type == 'SORTBOX_REVERSE')
659                                td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
660                        else
661                                td_element1.innerHTML = get_lang("Folder");
662                }
663                td_element2 = document.createElement("TD");
664                td_element2.setAttribute("width", "20%");
665                td_element2.align = "left";
666                if (sort_type == 'SORTWHO')
667                {
668                        td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO_REVERSE'); delete_border(border_id,false);};
669                        td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
670                }
671                else
672                {
673                        td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO'); delete_border(border_id,false);};
674                        if  (sort_type == 'SORTWHO_REVERSE')
675                                td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
676                        else
677                                td_element2.innerHTML = get_lang("who");
678                }
679                td_element3 = document.createElement("TD");
680                td_element3.setAttribute("width", "35%");
681                td_element3.align = "left";
682                if (sort_type == 'SORTSUBJECT')
683                {
684                        td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT_REVERSE'); delete_border(border_id,false);};
685                        td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
686                }
687                else
688                {
689                        td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT'); delete_border(border_id,false);};
690                        if  (sort_type == 'SORTSUBJECT_REVERSE')
691                                td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
692                        else
693                                td_element3.innerHTML = get_lang("subject");
694                }
695                td_element4 = document.createElement("TD");
696                td_element4.setAttribute("width", "12%");
697                td_element4.align = "center";
698                if (sort_type == 'SORTDATE')
699                {
700                        td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE_REVERSE'); delete_border(border_id,false);};
701                        td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
702                }
703                else
704                {
705                        td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE'); delete_border(border_id,false);};
706                        if  (sort_type == 'SORTDATE_REVERSE')
707                                td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
708                        else
709                                td_element4.innerHTML = get_lang("Date");
710                }
711                td_element5 = document.createElement("TD");
712                td_element5.setAttribute("width", "8%");
713                td_element5.align = "center";
714                if (sort_type == 'SORTSIZE')
715                {
716                        td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE_REVERSE'); delete_border(border_id,false);};
717                        td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
718                }
719                else
720                {
721                        td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE'); delete_border(border_id,false);};
722                        if  (sort_type == 'SORTSIZE_REVERSE')
723                                td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
724                        else
725                                td_element5.innerHTML = get_lang("Size");
726                }
727                tr_element.appendChild(td_element0);
728                tr_element.appendChild(td_element1);
729                tr_element.appendChild(td_element2);
730                tr_element.appendChild(td_element3);
731                tr_element.appendChild(td_element4);
732                tr_element.appendChild(td_element5);
733                tbody_element.appendChild(tr_element);
734                table_element.appendChild(tbody_element);
735                content_search.appendChild(table_element);
736                /*end of "put header"*/
737
738                if (!expresso_offline) {
739/*                      var span_options = document.createElement("SPAN");
740                        if (span_options)
741                                span_options.innerHTML = '<span title="' + get_lang("Delete") + '" style="margin-top:3px;margin-left:8px" class="message_options" onclick="javascript:move_search_msgs(\'' + content_search.id + '\');">' + get_lang("Delete") + '</span> | ' +
742                                '<span title="' +
743                                get_lang("Move") +
744                                '" class="message_options" onclick=wfolders.makeWindowNew(\"' +
745                                content_search.id +
746                                '\",\"move_to\",true)>' +
747                                get_lang("Move") +
748                                '</span>';*/
749                        div_scroll_result.appendChild(table);
750                        content_search.appendChild(div_scroll_result);
751                        /*if (span_options)
752                                content_search.appendChild(span_options);*/
753                }
754                else {
755                        div_scroll_result.appendChild(table);
756                        content_search.appendChild(div_scroll_result);
757                }
758                resizeWindow();
759        }
760
761        searchE.prototype.open_msg = function(mailbox_id, uid_msg, subject){
762                var handler_get_msg = function(data){
763                        if(Element("border_id_" + uid_msg + "_r")){alert(get_lang("This message is already opened!"));}
764                        else{draw_message(data,create_border(url_decode(subject), uid_msg + "_r"));}
765                        //set_msg_as_read(msgs_to_set[i], false);
766                }
767                proxy_mensagens.get_msg(uid_msg,mailbox_id,false,handler_get_msg);
768                /*var args   = "$this.imap_functions.get_info_msg";
769                var params = "msg_number=" + uid_msg + "&msg_folder=" + mailbox;
770                cExecute(args,handler_get_msg,params);*/
771
772        }
773
774        // Adiciona caixas postais na busca;
775        searchE.prototype.add_mailboxes = function(){
776                var sel = Element("sel_search_nm_box1");
777                if (!proxy_mensagens.is_local_folder(this.name_box_search)) {
778                        var name_box     = this.name_box_search.split(cyrus_delimiter);
779                        if(this.name_box_search == "")
780                                return false;
781                        var name_box_def = "";
782                        if(name_box.length != 1){
783                                name_box_def = name_box[(name_box.length-1)];
784                        }else{
785                                name_box_def = get_lang("Inbox");
786                        }
787                }
788                else {
789                        if(this.name_box_search=='local_root')
790                                return;
791                        if(this.name_box_search=='local_Inbox')
792                                name_box_def = get_lang("Inbox");
793                        else
794                                name_box_def = this.name_box_search.substr(6);//Retira o 'local_'
795                }
796                if( sel.length > 0){
797                        for(var i=0; i < sel.options.length; i++){
798                                if(sel.options[i].value == this.name_box_search){
799                                        alert(get_lang('This message is already selected!'));
800                                        return false;
801                                }
802                        }
803                }
804                var opt = new Option(lang_folder(name_box_def),this.name_box_search,false,true);
805                sel[sel.length] = opt;
806        }
807        // Remove as caixas postais na busca;
808        searchE.prototype.del_mailboxes = function(){
809                var sel = Element("sel_search_nm_box1");
810                if(sel.length > 0){
811                        for(var i=0; i < sel.options.length; i++){
812                                if(sel.options[i].selected == true){
813                                        sel.options[i] = null;
814                                        i--;
815                                }
816                        }
817                }
818
819        }
820        // todas as caixas
821        searchE.prototype.all_mailboxes = function(){
822                var value = Element("check_all_msg").checked;
823                var cont = parseInt(0);
824                if(value){
825                        if(EsearchE.all_boxes.length > 0){
826                                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
827                        }
828                        for(var i=0; i < folders.length; i++){
829                                EsearchE.all_boxes[cont] = folders[i].folder_id;
830                                cont++;
831                        }
832                }else{
833                        EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
834                }
835        }
836
837        // Search;
838        searchE.prototype.func_search = function(value){
839                var fields = "##";
840                        // Verifica se os campos estão preenchidos;
841                        if(trim(Element("txt_ass").value) != ""){
842                                fields += "SUBJECT " +  "<=>" +encodeURIComponent(Element("txt_ass").value) + "##";
843                        }
844                        if(trim(Element("txt_body").value) != ""){
845                                fields += "BODY " + "<=>" + encodeURIComponent(Element("txt_body").value) + "##";
846                        }
847                        if(trim(Element("txt_de").value) != ""){
848                                fields += "FROM " + "<=>" + encodeURIComponent(Element("txt_de").value) + "##";
849                        }
850                        if(trim(Element("txt_para").value) != ""){
851                                fields += "TO " + "<=>" + encodeURIComponent(Element("txt_para").value) + "##";
852                        }
853                        if(trim(Element("txt_cc").value) != ""){
854                                fields += "CC " + "<=>" + encodeURIComponent(Element("txt_cc").value) + "##";
855                        }
856                        if (trim(Element("since_date").value) != ""){
857                            if (validate_date(Element("since_date").value))
858                            {
859                                fields += "SINCE " + "<=>" + encodeURIComponent(Element("since_date").value) + "##";
860                            }
861                            else
862                                {
863                                    alert(get_lang('Invalid date on field %1'), get_lang('Since Date'));
864                                    return false;
865                                }
866                        }
867                        if (trim(Element("before_date").value) != ""){
868                            if (validate_date(Element("before_date").value))
869                            {
870                                fields += "BEFORE " + "<=>" + encodeURIComponent(Element("before_date").value) + "##";
871                            }
872                            else
873                                {
874                                    alert(get_lang('Invalid date on field %1'), get_lang('Before Date'));
875                                    return false;
876                                }
877                        }
878                        if(trim(Element("on_date").value) != ""){
879                            if (validate_date(Element("on_date").value))
880                            {
881                                fields += "ON " + "<=>" + encodeURIComponent(Element("on_date").value) + "##";
882                            }
883                            else
884                                {
885                                    alert(get_lang('Invalid date on field %1'), get_lang('On Date'));
886                                    return false;
887                                }
888
889                        }
890                        if(trim(Element("flagged").options[Element("flagged").selectedIndex].value) != ""){
891                            if (Element("flagged").options[Element("flagged").selectedIndex].value == "FLAGGED"){
892                                fields += "FLAGGED##";
893                            }
894                            else {
895                                fields += "UNFLAGGED##";
896                            }
897                        }
898                        if(trim(Element("seen").options[Element("seen").selectedIndex].value) != ""){
899                            if (Element("seen").options[Element("seen").selectedIndex].value == "SEEN"){
900                                fields += "SEEN##";
901                            }
902                            else {
903                                fields += "UNSEEN##";
904                            }
905                        }
906                        if(trim(Element("answered").options[Element("answered").selectedIndex].value) != ""){
907                            //switch (Element("answered").options[Element("answered").selectedIndex].value){
908                            //    case "FORWARDED":
909                            //        fields += "ANSWERED##DRAFT##";
910                            //        break;
911                            //    case "ANSWERED":
912                            //        fields += "ANSWERED##UNDRAFT";
913                            //        break;
914                            //    case "UNFORWARDED":
915                            //        fields += "UNDRAFT##";
916                            //    case "UNANSWERED":
917                            //        fields += "UNANSWERED##";
918                            //}
919                            if (Element("answered").options[Element("answered").selectedIndex].value == "ANSWERED"){
920                                fields += "ANSWERED##";
921                            }
922                            else {
923                                fields += "UNANSWERED##";
924                            }
925                        }
926                        if(trim(Element("recent").options[Element("recent").selectedIndex].value) != ""){
927                            if (Element("answered").options[Element("answered").selectedIndex].value == "RECENT"){
928                                fields += "RECENT##";
929                            }
930                            else {
931                                fields += "OLD##";
932                            }
933                        }
934                        if(value) {
935                                fields = "##ALL " +  "<=>" +encodeURIComponent(value) + "##";
936                        }
937
938                if(fields == "##"){
939                        alert(get_lang("Define some search parameters!"));
940                        return false;
941                }
942                var local_folders = new Array();
943                var temp;
944
945                if(Element("check_all_msg").checked){
946                        this.all_mailboxes();
947                        var nm_box = new Array;
948                        for(var i=0; i < EsearchE.all_boxes.length; i++){
949                                nm_box[i] = EsearchE.all_boxes[i] + fields;
950                        }
951                        if (preferences.use_local_messages == 1) {
952                                temp = expresso_local_messages.list_local_folders();
953                                for (var x in temp) {
954                                        local_folders.push(temp[x][0]);
955                                }
956                        }
957                }else{
958                        var nm_box = new Array;
959                        var sel_combo = Element("sel_search_nm_box1");
960                        if( sel_combo.options.length <= 0){
961                                alert(get_lang("Define the boxes to search!"));
962                                return false;
963                        }
964
965                        for(var i=0; i < sel_combo.options.length; i++){
966                                sel_combo.options[i].selected = true;
967                        }
968                        for(var i=0; i < sel_combo.options.length; i++){
969                                if(sel_combo.options[i].selected == true){
970                                        if(!proxy_mensagens.is_local_folder(sel_combo.options[i].value))
971                                                nm_box[nm_box.length] = sel_combo.options[i].value + fields;
972                                        else
973                                                local_folders.push(sel_combo.options[i].value.substr(6));
974                                }
975                        }
976                }
977                var handler = function(data){
978                        var tmp;
979                        var countTmp= new Array();
980
981                        var dataTemp = data.split('=sumResults=');
982                        var sumResults = dataTemp[0];
983
984                        var data = dataTemp[1] ? dataTemp[1] : dataTemp[0];
985
986                        if (local_folders.length > 0) {
987                                tmp = expresso_local_messages.search(local_folders, fields);
988                                if (tmp!=false) {
989                                        var tmp2 = tmp.substr(2, data.length - 4);
990                                        countTmp = tmp.split('####');
991                                }
992                        }
993                        if ((sumResults == "none") && (countTmp.length==0)){
994                            alert(get_lang("None result was found."));
995                        }
996                        else
997                        {
998                            EsearchE.mount_result((sumResults=='none')?tmp:(countTmp.length==0)?data:data+tmp);
999                        }
1000
1001                }
1002                var args   = "$this.imap_functions.search_msg";
1003                var params = "condition=" + nm_box;
1004                if(expresso_offline)
1005                        handler('none');
1006                else
1007                        cExecute(args,handler,params);
1008        }
1009        // clean;
1010        searchE.prototype.func_clean = function(){
1011                // Limpa os campos;
1012                for(var i=0; i < this.txtfields.length; i++){
1013                        if(Element(this.txtfields[i]) != null){Element(this.txtfields[i]).value = "";}
1014                }
1015
1016                for(i = 0; i < this.selectFields.length; i++)
1017                {
1018                    if (Element(this.selectFields[i]))
1019                    {
1020                        Element(this.selectFields[i]).selectedIndex = 0;
1021                    }
1022                }
1023            if(Element("check_all_msg") != null){Element("check_all_msg").checked = false;}
1024
1025            EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
1026                EsearchE.del_mailboxes();
1027        }
1028
1029        // close
1030        searchE.prototype.func_close = function(type){
1031                var _this = this;
1032                _this.name_box_search = "";
1033                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
1034                _this.type = type;
1035                _this.searchW['window_search'].close();
1036        }
1037        // Monta a janela em tela;
1038        searchE.prototype.showWindow = function(div){
1039                if(!this.searchW[div.id]) {
1040                        div.style.width = "804px";
1041                        div.style.height = "440px";
1042                        div.style.visibility = "hidden";
1043                        div.style.position = "absolute";
1044                        div.style.zIndex = "10003";
1045                        var title = ":: "+ get_lang("Search")+" ::";
1046                        var wHeight = div.offsetHeight + "px";
1047                        var wWidth =  div.offsetWidth   + "px";
1048
1049                        win = new dJSWin({
1050                                id: 'ccList'+div.id,
1051                                content_id: div.id,
1052                                width: wWidth,
1053                                height: wHeight,
1054                                title_color: '#3978d6',
1055                                bg_color: '#eee',
1056                                title: title,
1057                                title_text_color: 'white',
1058                                button_y_img: '../phpgwapi/images/win_min.gif',
1059                                button_x_img: '../phpgwapi/images/winclose.gif',
1060                                border: true});
1061                        this.searchW[div.id] = win;
1062                        win.draw();
1063                }else{
1064                        var _this = this;
1065                        win = this.searchW[div.id];
1066                        if((_this.type == "close" && win.state == 0) || win.state == 2){EsearchE.func_clean();}
1067                        win.draw();
1068                }
1069                win.open();     
1070        }
1071
1072        searchE.prototype.aux_local_folder_display = function(folder) {
1073                if(!expresso_offline)
1074                        return "(Local) " + lang_folder(folder.substr(6));
1075                else
1076                        return lang_folder(folder.substr(6));
1077        }
1078
1079// Cria o objeto
1080        var EsearchE;
1081        EsearchE = new searchE();
Note: See TracBrowser for help on using the repository browser.