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

Revision 3682, 39.3 KB checked in by alexandrecorreia, 13 years ago (diff)

Ticket #1493 - Corrigida falha no resultado da ordenacao da busca de mensagens no IE.

  • 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
430                        if (false && nw_array[i].match(/.*--.*--\w*--\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g) != null) //subject with "--"
431                        {
432                                var aux1 = nw_array[i].match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
433                                        aux1 = aux1[0].split("--");
434                                nw_array[i] = nw_array[i].substr(0, nw_array[i].indexOf(aux1[0])-2);
435                               
436                                var aux         = [];
437                               
438                                aux[0]  = nw_array[i].substr(0, nw_array[i].indexOf('--'));
439                                nw_array[i] = nw_array[i].substr(nw_array[i].indexOf('--')+2);
440                                aux[3] = nw_array[i].substr(0, nw_array[i].indexOf('--'));
441                                nw_array[i] = nw_array[i].substr(nw_array[i].indexOf('--')+2);
442                                aux[1] = nw_array[i].substr(0, nw_array[i].indexOf('--'));
443                                aux[2] = nw_array[i].substr(nw_array[i].indexOf('--')+2);
444                                aux = aux.concat(aux1);
445                        }
446                        else
447                        {
448                                var aux = nw_array[i].split("--");
449                                aux.splice(4,0,aux[1]);
450                                var mailbox = aux.shift();
451                                aux.splice(0,1,mailbox);
452                        }
453
454                        var mailbox_name = aux[0];
455                        var mailbox_id = aux[3];
456                        var uid_msg = aux[7];
457                        var subject = aux[2];
458                        tr.id = uid_msg+"_s"+global_search;
459
460                        // Keep the two lines together please
461                        tr.setAttribute('name',mailbox);
462                        tr.name = mailbox;
463
464                        if (aux[5].match("U"))
465                                add_className(tr,'tr_msg_unread');
466                        add_className(tr, i%2 != 0 ? 'tr_msg_read2' : 'tr_msg_read');
467            var _onclick = function () { proxy_mensagens.get_msg(this.parentNode.id,url_encode(this.parentNode.getAttribute('name')),false,show_msg);};
468            for(var j=0 ; j <= 10 ; j++)
469                        {
470                                var td = document.createElement("TD");
471                                if (j == 0)
472                                {
473                                        td.style.width = "1%";
474                                        var td1 = '<input type="checkbox" id="'+ border_id +'_check_box_message_'+uid_msg+'"></input>';
475
476                                }
477                                if (j == 1)
478                                {
479                                        td.style.width = "2%";
480                                        if (aux[6].match('T'))
481                                        {
482                                                attachNum = parseInt(aux[6].substr(aux[6].indexOf('T')+1));
483                                                td1 = "<img src='templates/"+template+"/images/clip.gif' title='"+attachNum +' '+ get_lang('attachment(s)')+"'>";
484                                        }
485                                        else
486                                                td1 = '';
487                                }
488                                if (j == 2)
489                                {
490                                        td.style.width = "1%";
491                                        td.id = "td_message_answered_"+uid_msg;
492                                        if (aux[6].match('X'))
493                                                td1 = '<img src=templates/'+template+'/images/forwarded.gif title=Forwarded>';
494                                        else
495                                                if (aux[6].match('A'))
496                                                        td1 = '<img src=templates/'+template+'/images/answered.gif>';
497                                                else
498                                                        td1 = '';
499                                }
500                                if (j == 3)
501                                {
502                                        td.style.width = "1%";
503                                        td.id = "td_message_important_"+uid_msg;
504                                        if (aux[6].match("F"))
505                                        {
506                                                add_className(tr, 'flagged_msg');
507                                                td.style.background = "url(templates/"+template+"/images/important.gif) no-repeat center";
508                                        }
509                                        else
510                                                td1 = '';
511                                }
512                                if (j == 4)
513                                {
514                                        td.style.width = "1%";
515                                        td.id = "td_message_sent_"+uid_msg;
516                                        td1 = '';
517                                }
518                                if (j == 5)
519                                {
520                                        td.style.width = "20%";
521                                        td.onclick = _onclick;
522                                        var nm_box = aux[0].split(cyrus_delimiter);
523                                        var td1 = nm_box.pop();
524                                        td.setAttribute("NoWrap","true");
525                                        td.style.overflow = "hidden";
526                                        td.style.color = "#42795b";
527                                        td.style.fontWeight = "bold";
528                                        if(proxy_mensagens.is_local_folder(td1))
529                                        {
530                                                var td1 = this.aux_local_folder_display(td1);
531                                                aux[2] = tr.name = aux[0]; // precisa trocar pelo nome real no banco do gears.
532                                        }
533                                        else
534                                        {
535                                                if(td1 == "INBOX")
536                                                {
537                                                        var td1  = get_lang("Inbox");
538                                                }
539                                                else if (nm_box[0] == 'user')
540                                                {
541                                                        if (nm_box.length > 1)
542                                                                var td1 = nm_box[1] + '/' + lang_folder(td1);
543                                                        else
544                                                                var td1 = td1;
545                                                }
546                                                else
547                                                        var td1 = lang_folder(td1);
548                                        }
549
550                                        if( proxy_mensagens.is_local_folder(td1))
551                                        {
552                                                var td1 = this.aux_local_folder_display(td1);
553                                        }
554                                }
555                                if( j == 6)
556                                {
557                                        if (aux[1].length > 20)
558                                                aux[1] = aux[1].substr(0,20) + "...";
559                                        td.style.width = "20%";
560                                        td.onclick = _onclick;
561                                        td.setAttribute("NoWrap","true");
562                                        td.style.overflow = "hidden";
563                                        var td1  =  '<div style="width:100%;overflow:hidden">'+aux[1]+"</div>";
564                                }
565                                if( j == 7)
566                                {
567                                        var subject_encode = url_encode(subject);
568                                        if (! subject_encode)
569                                                aux[2] = get_lang("no subject") + "...";
570                                        if ( subject.length > 45)
571                                                aux[2] = subject.substr(0,45) + "...";
572                                        td.style.width = "35%";
573                                        td.onclick = _onclick;
574                                        td.setAttribute("NoWrap","true");
575                                        td.style.overflow = "hidden";
576                                        var td1  = aux[2];
577                                }
578                                if( j == 8)
579                                {
580                                        td.style.width = "13%";
581                                        td.align = "center";
582                                        td.onclick = _onclick;
583                                        var td1  = aux[4];
584                                }
585                                if( j == 9)
586                                {
587                                        td.style.width = "10%";
588                                        td.align = "center";
589                                        td.onclick = _onclick;
590                                        td.setAttribute("NoWrap","true");
591                                        var td1  = aux[5];
592                                }
593                                if (j == 10)
594                                {
595                                        if (aux[6].match("U"))
596                                                add_className(tr, 'tr_msg_unread');
597                                        if (aux[7].match("F"))
598                                                add_className(tr, 'flagged_msg');
599                                        var td1 = '';
600                                }
601                                td.innerHTML = td1;
602                                tr.appendChild(td);
603                        }
604                        aux.splice(0,(aux.length));
605
606                _dragArea.makeDragged(tr, uid_msg, subject, true, mailbox_id);
607                tbody.appendChild(tr);
608                }
609                table.appendChild(tbody);
610
611        var content_search =  Element('content_id_search_' + numBox);
612        var div_scroll_result = document.createElement("DIV");
613        div_scroll_result.id = "divScrollMain_"+numBox;
614        div_scroll_result.style.overflow = "auto";
615
616                if(is_ie)
617                        Element("border_table").width = "99.5%";
618
619                // Put header
620                var table_element = document.createElement("TABLE");
621                var tbody_element = document.createElement("TBODY");
622                table_element.setAttribute("id", "table_message_header_box");
623                table_element.className = "table_message_header_box";
624                tr_element = document.createElement("TR");
625                tr_element.className = "message_header";
626                td_element0 = document.createElement("TD");
627                td_element0.setAttribute("width", "7%");
628                chk_box_element = document.createElement("INPUT");
629                chk_box_element.id  = "chk_box_select_all_messages";
630                chk_box_element.setAttribute("type", "checkbox");
631                chk_box_element.className = "checkbox";
632                chk_box_element.onclick = function(){select_all_search_messages(this.checked,content_search.id);};
633                chk_box_element.onmouseover = function () {this.title=get_lang('Select all messages.')};
634                chk_box_element.onkeydown = function (e){
635                        if (is_ie)
636                        {
637                                if ((window.event.keyCode) == 46)
638                                        delete_msgs(current_folder,'selected','null');
639                        }
640                        else
641                        {
642                                if ((e.keyCode) == 46)
643                                        delete_msgs(current_folder,'selected','null');
644                        }
645                };
646
647                td_element0.appendChild(chk_box_element);
648                td_element1 = document.createElement("TD");
649                td_element1.setAttribute("width", "20%");
650                td_element1.align = "left";
651                if (sort_type == 'SORTBOX')
652                {
653                        td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX_REVERSE'); delete_border(border_id,false);};
654                        td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
655                }
656                else
657                {
658                        td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX'); delete_border(border_id,false);};
659                        if  (sort_type == 'SORTBOX_REVERSE')
660                                td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
661                        else
662                                td_element1.innerHTML = get_lang("Folder");
663                }
664                td_element2 = document.createElement("TD");
665                td_element2.setAttribute("width", "20%");
666                td_element2.align = "left";
667                if (sort_type == 'SORTWHO')
668                {
669                        td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO_REVERSE'); delete_border(border_id,false);};
670                        td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
671                }
672                else
673                {
674                        td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO'); delete_border(border_id,false);};
675                        if  (sort_type == 'SORTWHO_REVERSE')
676                                td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
677                        else
678                                td_element2.innerHTML = get_lang("who");
679                }
680                td_element3 = document.createElement("TD");
681                td_element3.setAttribute("width", "35%");
682                td_element3.align = "left";
683                if (sort_type == 'SORTSUBJECT')
684                {
685                        td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT_REVERSE'); delete_border(border_id,false);};
686                        td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
687                }
688                else
689                {
690                        td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT'); delete_border(border_id,false);};
691                        if  (sort_type == 'SORTSUBJECT_REVERSE')
692                                td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
693                        else
694                                td_element3.innerHTML = get_lang("subject");
695                }
696                td_element4 = document.createElement("TD");
697                td_element4.setAttribute("width", "12%");
698                td_element4.align = "center";
699                if (sort_type == 'SORTDATE')
700                {
701                        td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE_REVERSE'); delete_border(border_id,false);};
702                        td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
703                }
704                else
705                {
706                        td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE'); delete_border(border_id,false);};
707                        if  (sort_type == 'SORTDATE_REVERSE')
708                                td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
709                        else
710                                td_element4.innerHTML = get_lang("Date");
711                }
712                td_element5 = document.createElement("TD");
713                td_element5.setAttribute("width", "8%");
714                td_element5.align = "center";
715                if (sort_type == 'SORTSIZE')
716                {
717                        td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE_REVERSE'); delete_border(border_id,false);};
718                        td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
719                }
720                else
721                {
722                        td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE'); delete_border(border_id,false);};
723                        if  (sort_type == 'SORTSIZE_REVERSE')
724                                td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
725                        else
726                                td_element5.innerHTML = get_lang("Size");
727                }
728                tr_element.appendChild(td_element0);
729                tr_element.appendChild(td_element1);
730                tr_element.appendChild(td_element2);
731                tr_element.appendChild(td_element3);
732                tr_element.appendChild(td_element4);
733                tr_element.appendChild(td_element5);
734                tbody_element.appendChild(tr_element);
735                table_element.appendChild(tbody_element);
736                content_search.appendChild(table_element);
737                /*end of "put header"*/
738
739                if (!expresso_offline) {
740/*                      var span_options = document.createElement("SPAN");
741                        if (span_options)
742                                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> | ' +
743                                '<span title="' +
744                                get_lang("Move") +
745                                '" class="message_options" onclick=wfolders.makeWindowNew(\"' +
746                                content_search.id +
747                                '\",\"move_to\",true)>' +
748                                get_lang("Move") +
749                                '</span>';*/
750                        div_scroll_result.appendChild(table);
751                        content_search.appendChild(div_scroll_result);
752                        /*if (span_options)
753                                content_search.appendChild(span_options);*/
754                }
755                else {
756                        div_scroll_result.appendChild(table);
757                        content_search.appendChild(div_scroll_result);
758                }
759                resizeWindow();
760        }
761
762        searchE.prototype.open_msg = function(mailbox_id, uid_msg, subject){
763                var handler_get_msg = function(data){
764                        if(Element("border_id_" + uid_msg + "_r")){alert(get_lang("This message is already opened!"));}
765                        else{draw_message(data,create_border(url_decode(subject), uid_msg + "_r"));}
766                        //set_msg_as_read(msgs_to_set[i], false);
767                }
768                proxy_mensagens.get_msg(uid_msg,mailbox_id,false,handler_get_msg);
769                /*var args   = "$this.imap_functions.get_info_msg";
770                var params = "msg_number=" + uid_msg + "&msg_folder=" + mailbox;
771                cExecute(args,handler_get_msg,params);*/
772
773        }
774
775        // Adiciona caixas postais na busca;
776        searchE.prototype.add_mailboxes = function(){
777                var sel = Element("sel_search_nm_box1");
778                if (!proxy_mensagens.is_local_folder(this.name_box_search)) {
779                        var name_box     = this.name_box_search.split(cyrus_delimiter);
780                        if(this.name_box_search == "")
781                                return false;
782                        var name_box_def = "";
783                        if(name_box.length != 1){
784                                name_box_def = name_box[(name_box.length-1)];
785                        }else{
786                                name_box_def = get_lang("Inbox");
787                        }
788                }
789                else {
790                        if(this.name_box_search=='local_root')
791                                return;
792                        if(this.name_box_search=='local_Inbox')
793                                name_box_def = get_lang("Inbox");
794                        else
795                                name_box_def = this.name_box_search.substr(6);//Retira o 'local_'
796                }
797                if( sel.length > 0){
798                        for(var i=0; i < sel.options.length; i++){
799                                if(sel.options[i].value == this.name_box_search){
800                                        alert(get_lang('This message is already selected!'));
801                                        return false;
802                                }
803                        }
804                }
805                var opt = new Option(lang_folder(name_box_def),this.name_box_search,false,true);
806                sel[sel.length] = opt;
807        }
808        // Remove as caixas postais na busca;
809        searchE.prototype.del_mailboxes = function(){
810                var sel = Element("sel_search_nm_box1");
811                if(sel.length > 0){
812                        for(var i=0; i < sel.options.length; i++){
813                                if(sel.options[i].selected == true){
814                                        sel.options[i] = null;
815                                        i--;
816                                }
817                        }
818                }
819
820        }
821        // todas as caixas
822        searchE.prototype.all_mailboxes = function(){
823                var value = Element("check_all_msg").checked;
824                var cont = parseInt(0);
825                if(value){
826                        if(EsearchE.all_boxes.length > 0){
827                                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
828                        }
829                        for(var i=0; i < folders.length; i++){
830                                EsearchE.all_boxes[cont] = folders[i].folder_id;
831                                cont++;
832                        }
833                }else{
834                        EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
835                }
836        }
837
838        // Search;
839        searchE.prototype.func_search = function(value){
840                var fields = "##";
841                        // Verifica se os campos estão preenchidos;
842                        if(trim(Element("txt_ass").value) != ""){
843                                fields += "SUBJECT " +  "<=>" +encodeURIComponent(Element("txt_ass").value) + "##";
844                        }
845                        if(trim(Element("txt_body").value) != ""){
846                                fields += "BODY " + "<=>" + encodeURIComponent(Element("txt_body").value) + "##";
847                        }
848                        if(trim(Element("txt_de").value) != ""){
849                                fields += "FROM " + "<=>" + encodeURIComponent(Element("txt_de").value) + "##";
850                        }
851                        if(trim(Element("txt_para").value) != ""){
852                                fields += "TO " + "<=>" + encodeURIComponent(Element("txt_para").value) + "##";
853                        }
854                        if(trim(Element("txt_cc").value) != ""){
855                                fields += "CC " + "<=>" + encodeURIComponent(Element("txt_cc").value) + "##";
856                        }
857                        if (trim(Element("since_date").value) != ""){
858                            if (validate_date(Element("since_date").value))
859                            {
860                                fields += "SINCE " + "<=>" + encodeURIComponent(Element("since_date").value) + "##";
861                            }
862                            else
863                                {
864                                    alert(get_lang('Invalid date on field %1'), get_lang('Since Date'));
865                                    return false;
866                                }
867                        }
868                        if (trim(Element("before_date").value) != ""){
869                            if (validate_date(Element("before_date").value))
870                            {
871                                fields += "BEFORE " + "<=>" + encodeURIComponent(Element("before_date").value) + "##";
872                            }
873                            else
874                                {
875                                    alert(get_lang('Invalid date on field %1'), get_lang('Before Date'));
876                                    return false;
877                                }
878                        }
879                        if(trim(Element("on_date").value) != ""){
880                            if (validate_date(Element("on_date").value))
881                            {
882                                fields += "ON " + "<=>" + encodeURIComponent(Element("on_date").value) + "##";
883                            }
884                            else
885                                {
886                                    alert(get_lang('Invalid date on field %1'), get_lang('On Date'));
887                                    return false;
888                                }
889
890                        }
891                        if(trim(Element("flagged").options[Element("flagged").selectedIndex].value) != ""){
892                            if (Element("flagged").options[Element("flagged").selectedIndex].value == "FLAGGED"){
893                                fields += "FLAGGED##";
894                            }
895                            else {
896                                fields += "UNFLAGGED##";
897                            }
898                        }
899                        if(trim(Element("seen").options[Element("seen").selectedIndex].value) != ""){
900                            if (Element("seen").options[Element("seen").selectedIndex].value == "SEEN"){
901                                fields += "SEEN##";
902                            }
903                            else {
904                                fields += "UNSEEN##";
905                            }
906                        }
907                        if(trim(Element("answered").options[Element("answered").selectedIndex].value) != ""){
908                            //switch (Element("answered").options[Element("answered").selectedIndex].value){
909                            //    case "FORWARDED":
910                            //        fields += "ANSWERED##DRAFT##";
911                            //        break;
912                            //    case "ANSWERED":
913                            //        fields += "ANSWERED##UNDRAFT";
914                            //        break;
915                            //    case "UNFORWARDED":
916                            //        fields += "UNDRAFT##";
917                            //    case "UNANSWERED":
918                            //        fields += "UNANSWERED##";
919                            //}
920                            if (Element("answered").options[Element("answered").selectedIndex].value == "ANSWERED"){
921                                fields += "ANSWERED##";
922                            }
923                            else {
924                                fields += "UNANSWERED##";
925                            }
926                        }
927                        if(trim(Element("recent").options[Element("recent").selectedIndex].value) != ""){
928                            if (Element("answered").options[Element("answered").selectedIndex].value == "RECENT"){
929                                fields += "RECENT##";
930                            }
931                            else {
932                                fields += "OLD##";
933                            }
934                        }
935                        if(value) {
936                                fields = "##ALL " +  "<=>" +encodeURIComponent(value) + "##";
937                        }
938
939                if(fields == "##"){
940                        alert(get_lang("Define some search parameters!"));
941                        return false;
942                }
943                var local_folders = new Array();
944                var temp;
945
946                if(Element("check_all_msg").checked){
947                        this.all_mailboxes();
948                        var nm_box = new Array;
949                        for(var i=0; i < EsearchE.all_boxes.length; i++){
950                                nm_box[i] = EsearchE.all_boxes[i] + fields;
951                        }
952                        if (preferences.use_local_messages == 1) {
953                                temp = expresso_local_messages.list_local_folders();
954                                for (var x in temp) {
955                                        local_folders.push(temp[x][0]);
956                                }
957                        }
958                }else{
959                        var nm_box = new Array;
960                        var sel_combo = Element("sel_search_nm_box1");
961                        if( sel_combo.options.length <= 0){
962                                alert(get_lang("Define the boxes to search!"));
963                                return false;
964                        }
965
966                        for(var i=0; i < sel_combo.options.length; i++){
967                                sel_combo.options[i].selected = true;
968                        }
969                        for(var i=0; i < sel_combo.options.length; i++){
970                                if(sel_combo.options[i].selected == true){
971                                        if(!proxy_mensagens.is_local_folder(sel_combo.options[i].value))
972                                                nm_box[nm_box.length] = sel_combo.options[i].value + fields;
973                                        else
974                                                local_folders.push(sel_combo.options[i].value.substr(6));
975                                }
976                        }
977                }
978                var handler = function(data){
979                        var tmp;
980                        var countTmp= new Array();
981
982                        var dataTemp = data.split('=sumResults=');
983                        var sumResults = dataTemp[0];
984
985                        var data = dataTemp[1] ? dataTemp[1] : dataTemp[0];
986
987                        if (local_folders.length > 0) {
988                                tmp = expresso_local_messages.search(local_folders, fields);
989                                if (tmp!=false) {
990                                        var tmp2 = tmp.substr(2, data.length - 4);
991                                        countTmp = tmp.split('####');
992                                }
993                        }
994                        if ((sumResults == "none") && (countTmp.length==0)){
995                            alert(get_lang("None result was found."));
996                        }
997                        else
998                        {
999                            EsearchE.mount_result((sumResults=='none')?tmp:(countTmp.length==0)?data:data+tmp);
1000                        }
1001
1002                }
1003                var args   = "$this.imap_functions.search_msg";
1004                var params = "condition=" + nm_box;
1005                if(expresso_offline)
1006                        handler('none');
1007                else
1008                        cExecute(args,handler,params);
1009        }
1010        // clean;
1011        searchE.prototype.func_clean = function(){
1012                // Limpa os campos;
1013                for(var i=0; i < this.txtfields.length; i++){
1014                        if(Element(this.txtfields[i]) != null){Element(this.txtfields[i]).value = "";}
1015                }
1016
1017                for(i = 0; i < this.selectFields.length; i++)
1018                {
1019                    if (Element(this.selectFields[i]))
1020                    {
1021                        Element(this.selectFields[i]).selectedIndex = 0;
1022                    }
1023                }
1024            if(Element("check_all_msg") != null){Element("check_all_msg").checked = false;}
1025
1026            EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
1027                EsearchE.del_mailboxes();
1028        }
1029
1030        // close
1031        searchE.prototype.func_close = function(type){
1032                var _this = this;
1033                _this.name_box_search = "";
1034                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
1035                _this.type = type;
1036                _this.searchW['window_search'].close();
1037        }
1038        // Monta a janela em tela;
1039        searchE.prototype.showWindow = function(div){
1040                if(!this.searchW[div.id]) {
1041                        div.style.width = "804px";
1042                        div.style.height = "440px";
1043                        div.style.visibility = "hidden";
1044                        div.style.position = "absolute";
1045                        div.style.zIndex = "10003";
1046                        var title = ":: "+ get_lang("Search")+" ::";
1047                        var wHeight = div.offsetHeight + "px";
1048                        var wWidth =  div.offsetWidth   + "px";
1049
1050                        win = new dJSWin({
1051                                id: 'ccList'+div.id,
1052                                content_id: div.id,
1053                                width: wWidth,
1054                                height: wHeight,
1055                                title_color: '#3978d6',
1056                                bg_color: '#eee',
1057                                title: title,
1058                                title_text_color: 'white',
1059                                button_y_img: '../phpgwapi/images/win_min.gif',
1060                                button_x_img: '../phpgwapi/images/winclose.gif',
1061                                border: true});
1062                        this.searchW[div.id] = win;
1063                        win.draw();
1064                }else{
1065                        var _this = this;
1066                        win = this.searchW[div.id];
1067                        if((_this.type == "close" && win.state == 0) || win.state == 2){EsearchE.func_clean();}
1068                        win.draw();
1069                }
1070                win.open();     
1071        }
1072
1073        searchE.prototype.aux_local_folder_display = function(folder) {
1074                if(!expresso_offline)
1075                        return "(Local) " + lang_folder(folder.substr(6));
1076                else
1077                        return lang_folder(folder.substr(6));
1078        }
1079
1080// Cria o objeto
1081        var EsearchE;
1082        EsearchE = new searchE();
Note: See TracBrowser for help on using the repository browser.