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

Revision 3659, 39.1 KB checked in by eduardoalex, 13 years ago (diff)

Ticket #785 - Corrigindo problema gerado pela revisão 3380.

  • 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        function date_comp_reverse(a,b)
228        {
229                return date_comp(b,a);
230        }
231
232        function box_comp(a,b)
233        {
234        var compare = [];
235        compare[0] = a.substr(0, a.indexOf('--'));
236        compare[0] = compare[0].toLowerCase();
237        var temp=compare[0];
238        compare[1] = b.substr(0, b.indexOf('--'))
239        compare[1] = compare[1].toLowerCase();
240        compare.sort();
241        if (temp != compare[0])
242                return +1;
243        else
244                return -1;
245        }
246        function box_comp_reverse(a,b)
247        {
248                return box_comp(b,a);
249        }
250
251        function who_comp(a,b)
252        {
253        var compare = [];
254        compare[0] = a.substr(a.indexOf('--')+2);
255        compare[0] = compare[0].toLowerCase();
256        var temp=compare[0];
257        compare[1] = b.substr(b.indexOf('--')+2);
258        compare[1] = compare[1].toLowerCase();
259        compare.sort();
260        if (temp != compare[0])
261                return +1;
262        else
263                return -1;
264        }
265        function who_comp_reverse(a,b)
266        {
267                return who_comp(b,a);
268        }
269
270        function subject_comp(a,b)
271        {
272        var compare = [];
273        compare[0] = a.substr(a.indexOf('--')+2);
274        compare[0] = compare[0].substr(compare[0].indexOf('--')+2);
275        compare[0] = compare[0].toLowerCase();
276        var temp=compare[0];
277        compare[1] = b.substr(b.indexOf('--')+2);
278        compare[1] = compare[1].substr(compare[1].indexOf('--')+2);
279        compare[1] = compare[1].toLowerCase();
280        compare.sort();
281        if (temp != compare[0])
282                return +1;
283        else
284                return -1;
285        }
286        function subject_comp_reverse(a,b)
287        {
288                return subject_comp(b,a);
289        }
290
291        function size_comp(a,b)
292        {
293                var data1 = a.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
294                data1 = data1[0].substr(data1[0].indexOf('--')+2)
295                data1 = data1.substr(0,data1.indexOf('--'))
296                var size_a = parseInt(data1.substr(0,data1.indexOf(' ')));
297                if (data1.match("k"))
298                        size_a = size_a * 1024;
299                else
300                        if (data1.match("m"))
301                                size_a = size_a * 1048576;
302                var data2 = b.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
303                data2 = data2[0].substr(data2[0].indexOf('--')+2)
304                data2 = data2.substr(0,data2.indexOf('--'))
305                var size_b = parseInt(data2.substr(0,data2.indexOf(' ')));
306                if (data2.match("k"))
307                        size_b = size_b * 1024;
308                else
309                        if (data2.match("m"))
310                                size_b = size_b * 1048576;
311                return size_b - size_a;
312        }
313        function size_comp_reverse(a,b)
314        {
315                return size_comp(b,a);
316        }
317
318        // Form resultado
319        searchE.prototype.mount_result = function(data,sort_type){
320                var nw_array = new Array;
321                var var_tmp = data.substr(2, data.length - 4);
322                var_tmp  = var_tmp.split("####");
323                var cont = parseInt(0);
324                switch (sort_type)
325                {
326                        case 'SORTDATE':
327                                var_tmp.sort(date_comp);
328                                break;
329                        case 'SORTDATE_REVERSE':
330                                var_tmp.sort(date_comp_reverse);
331                                break;
332                        case 'SORTBOX':
333                                var_tmp.sort(box_comp);
334                                break;
335                        case 'SORTBOX_REVERSE':
336                                var_tmp.sort(box_comp_reverse);
337                                break;
338                        case 'SORTSUBJECT':
339                                var_tmp.sort(subject_comp);
340                                break;
341                        case 'SORTSUBJECT_REVERSE':
342                                var_tmp.sort(subject_comp_reverse);
343                                break;
344                        case 'SORTWHO':
345                                var_tmp.sort(who_comp);
346                                break;
347                        case 'SORTWHO_REVERSE':
348                                var_tmp.sort(who_comp_reverse);
349                                break;
350                        case 'SORTSIZE':
351                                var_tmp.sort(size_comp);
352                                break;
353                        case 'SORTSIZE_REVERSE':
354                                var_tmp.sort(size_comp_reverse);
355                                break;
356                        default:
357                                var showMsg = 1;
358                }
359
360                for(var i=0; i < var_tmp.length; i++){
361                        if(var_tmp[i] != "")
362                        {
363                                nw_array[cont] = var_tmp[i];
364                                cont++;
365                        }
366                }
367
368                if( (preferences.search_result_number != '65536') && (nw_array.length > 0) && (nw_array.length >= preferences.search_result_number) ){
369                    nw_array.length = preferences.search_result_number;
370                    write_msg(get_lang("More than %1 results. Please, try to refine your search.",preferences.search_result_number));
371                }
372                else {
373                        write_msg(nw_array.length + " "+ get_lang('results found'));
374                }
375
376                numBox++;
377                var border_id = create_border(get_lang("Search Results"), "search_" + numBox);
378                if (!border_id)
379                {
380                    return;
381                }
382                currentTab = border_id;
383                openTab.content_id[currentTab] = Element('content_id_search_' + numBox);
384                openTab.type[currentTab] = 1;
385                var table = document.createElement("TABLE");
386                table.id    = "table_resultsearch_" + numBox;
387                table.frame = "void";
388                table.rules = "rows";
389                table.cellPadding = "0";
390                table.cellSpacing = "0";
391                table.className = "table_box";
392
393                var tbody = document.createElement("TBODY");
394                tbody.id    = "tbody_box_" + numBox;
395
396                for( var i=0; i < nw_array.length; i++){
397                        var tr = document.createElement("TR");
398                        tr.style.height = preferences.line_height;
399
400                        if (false && nw_array[i].match(/.*--.*--\w*--\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g) != null) //subject with "--"
401                        {
402                                var aux1 = nw_array[i].match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
403                                aux1 = aux1[0].split("--");
404                                nw_array[i] = nw_array[i].substr(0, nw_array[i].indexOf(aux1[0])-2);
405                                var aux = [];
406                                aux[0] = nw_array[i].substr(0, nw_array[i].indexOf('--'));
407                                nw_array[i] = nw_array[i].substr(nw_array[i].indexOf('--')+2);
408                                aux[3] = nw_array[i].substr(0, nw_array[i].indexOf('--'));
409                                nw_array[i] = nw_array[i].substr(nw_array[i].indexOf('--')+2);
410                                aux[1] = nw_array[i].substr(0, nw_array[i].indexOf('--'));
411                                aux[2] = nw_array[i].substr(nw_array[i].indexOf('--')+2);
412                                aux = aux.concat(aux1);
413                        }
414                        else
415                        {
416                                var aux = nw_array[i].split("--");
417                                aux.splice(4,0,aux[1]);
418                                var mailbox = aux.shift();
419                                aux.splice(0,1,mailbox);
420                        }
421
422                        var mailbox_name = aux[0];
423                        var mailbox_id = aux[3];
424                        var uid_msg = aux[7];
425                        var subject = aux[2];
426                        tr.id = uid_msg+"_s"+global_search;
427
428                        // Keep the two lines together please
429                        tr.setAttribute('name',mailbox);
430                        tr.name = mailbox;
431
432                        if (aux[5].match("U"))
433                                add_className(tr,'tr_msg_unread');
434                        add_className(tr, i%2 != 0 ? 'tr_msg_read2' : 'tr_msg_read');
435            var _onclick = function () { proxy_mensagens.get_msg(this.parentNode.id,url_encode(this.parentNode.getAttribute('name')),false,show_msg);};
436            for(var j=0 ; j <= 10 ; j++)
437                        {
438                                var td = document.createElement("TD");
439                                if (j == 0)
440                                {
441                                        td.style.width = "1%";
442                                        var td1 = '<input type="checkbox" id="'+ border_id +'_check_box_message_'+uid_msg+'"></input>';
443
444                                }
445                                if (j == 1)
446                                {
447                                        td.style.width = "2%";
448                                        if (aux[6].match('T'))
449                                        {
450                                                attachNum = parseInt(aux[6].substr(aux[6].indexOf('T')+1));
451                                                td1 = "<img src='templates/"+template+"/images/clip.gif' title='"+attachNum +' '+ get_lang('attachment(s)')+"'>";
452                                        }
453                                        else
454                                                td1 = '';
455                                }
456                                if (j == 2)
457                                {
458                                        td.style.width = "1%";
459                                        td.id = "td_message_answered_"+uid_msg;
460                                        if (aux[6].match('X'))
461                                                td1 = '<img src=templates/'+template+'/images/forwarded.gif title=Forwarded>';
462                                        else
463                                                if (aux[6].match('A'))
464                                                        td1 = '<img src=templates/'+template+'/images/answered.gif>';
465                                                else
466                                                        td1 = '';
467                                }
468                                if (j == 3)
469                                {
470                                        td.style.width = "1%";
471                                        td.id = "td_message_important_"+uid_msg;
472                                        if (aux[6].match("F"))
473                                        {
474                                                add_className(tr, 'flagged_msg');
475                                                td.style.background = "url(templates/"+template+"/images/important.gif) no-repeat center";
476                                        }
477                                        else
478                                                td1 = '';
479                                }
480                                if (j == 4)
481                                {
482                                        td.style.width = "1%";
483                                        td.id = "td_message_sent_"+uid_msg;
484                                        td1 = '';
485                                }
486                                if (j == 5)
487                                {
488                                        td.style.width = "20%";
489                                        td.onclick = _onclick;
490                                        var nm_box = aux[0].split(cyrus_delimiter);
491                                        var td1 = nm_box.pop();
492                                        td.setAttribute("NoWrap","true");
493                                        td.style.overflow = "hidden";
494                                        td.style.color = "#42795b";
495                                        td.style.fontWeight = "bold";
496                                        if(proxy_mensagens.is_local_folder(td1)) {
497                                                var td1 = this.aux_local_folder_display(td1);
498                                                aux[2] = tr.name = aux[0]; // precisa trocar pelo nome real no banco do gears.
499                                        } else {
500                                                if(td1 == "INBOX"){
501                                                        var td1  = get_lang("Inbox");
502                                                }
503                                                else if (nm_box[0] == 'user')
504                                                        if (nm_box.length > 1)
505                                                                var td1 = nm_box[1] + '/' + lang_folder(td1);
506                                                        else
507                                                                var td1 = td1;
508                                                else
509                                                        var td1 = lang_folder(td1);
510                                        }
511
512                                        if(proxy_mensagens.is_local_folder(td1)) {
513                                                var td1 = this.aux_local_folder_display(td1);
514                                        }
515                                }
516                                if( j == 6)
517                                {
518                                        if (aux[1].length > 20)
519                                                aux[1] = aux[1].substr(0,20) + "...";
520                                        td.style.width = "20%";
521                                        td.onclick = _onclick;
522                                        td.setAttribute("NoWrap","true");
523                                        td.style.overflow = "hidden";
524                                        var td1  =  '<div style="width:100%;overflow:hidden">'+aux[1]+"</div>";
525                                }
526                                if( j == 7)
527                                {
528                                        var subject_encode = url_encode(subject);
529                                        if (! subject_encode)
530                                                aux[2] = get_lang("no subject") + "...";
531                                        if ( subject.length > 45)
532                                                aux[2] = subject.substr(0,45) + "...";
533                                        td.style.width = "35%";
534                                        td.onclick = _onclick;
535                                        td.setAttribute("NoWrap","true");
536                                        td.style.overflow = "hidden";
537                                        var td1  = aux[2];
538                                }
539                                if( j == 8)
540                                {
541                                        td.style.width = "13%";
542                                        td.align = "center";
543                                        td.onclick = _onclick;
544                                        var td1  = aux[4];
545                                }
546                                if( j == 9)
547                                {
548                                        td.style.width = "10%";
549                                        td.align = "center";
550                                        td.onclick = _onclick;
551                                        td.setAttribute("NoWrap","true");
552                                        var td1  = aux[5];
553                                }
554                                if (j == 10)
555                                {
556                                        if (aux[6].match("U"))
557                                                add_className(tr, 'tr_msg_unread');
558                                        if (aux[7].match("F"))
559                                                add_className(tr, 'flagged_msg');
560                                        var td1 = '';
561                                }
562                                td.innerHTML = td1;
563                                tr.appendChild(td);
564                        }
565                        aux.splice(0,(aux.length));
566
567                _dragArea.makeDragged(tr, uid_msg, subject, true, mailbox_id);
568                tbody.appendChild(tr);
569                }
570                table.appendChild(tbody);
571
572        var content_search =  Element('content_id_search_' + numBox);
573        var div_scroll_result = document.createElement("DIV");
574        div_scroll_result.id = "divScrollMain_"+numBox;
575        div_scroll_result.style.overflow = "auto";
576
577                if(is_ie)
578                        Element("border_table").width = "99.5%";
579
580                // Put header
581                var table_element = document.createElement("TABLE");
582                var tbody_element = document.createElement("TBODY");
583                table_element.setAttribute("id", "table_message_header_box");
584                table_element.className = "table_message_header_box";
585                tr_element = document.createElement("TR");
586                tr_element.className = "message_header";
587                td_element0 = document.createElement("TD");
588                td_element0.setAttribute("width", "7%");
589                chk_box_element = document.createElement("INPUT");
590                chk_box_element.id  = "chk_box_select_all_messages";
591                chk_box_element.setAttribute("type", "checkbox");
592                chk_box_element.className = "checkbox";
593                chk_box_element.onclick = function(){select_all_search_messages(this.checked,content_search.id);};
594                chk_box_element.onmouseover = function () {this.title=get_lang('Select all messages.')};
595                chk_box_element.onkeydown = function (e){
596                        if (is_ie)
597                        {
598                                if ((window.event.keyCode) == 46)
599                                        delete_msgs(current_folder,'selected','null');
600                        }
601                        else
602                        {
603                                if ((e.keyCode) == 46)
604                                        delete_msgs(current_folder,'selected','null');
605                        }
606                };
607
608                td_element0.appendChild(chk_box_element);
609                td_element1 = document.createElement("TD");
610                td_element1.setAttribute("width", "20%");
611                td_element1.align = "left";
612                if (sort_type == 'SORTBOX')
613                {
614                        td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX_REVERSE'); delete_border(border_id,false);};
615                        td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
616                }
617                else
618                {
619                        td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX'); delete_border(border_id,false);};
620                        if  (sort_type == 'SORTBOX_REVERSE')
621                                td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
622                        else
623                                td_element1.innerHTML = get_lang("Folder");
624                }
625                td_element2 = document.createElement("TD");
626                td_element2.setAttribute("width", "20%");
627                td_element2.align = "left";
628                if (sort_type == 'SORTWHO')
629                {
630                        td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO_REVERSE'); delete_border(border_id,false);};
631                        td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
632                }
633                else
634                {
635                        td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO'); delete_border(border_id,false);};
636                        if  (sort_type == 'SORTWHO_REVERSE')
637                                td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
638                        else
639                                td_element2.innerHTML = get_lang("who");
640                }
641                td_element3 = document.createElement("TD");
642                td_element3.setAttribute("width", "35%");
643                td_element3.align = "left";
644                if (sort_type == 'SORTSUBJECT')
645                {
646                        td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT_REVERSE'); delete_border(border_id,false);};
647                        td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
648                }
649                else
650                {
651                        td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT'); delete_border(border_id,false);};
652                        if  (sort_type == 'SORTSUBJECT_REVERSE')
653                                td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
654                        else
655                                td_element3.innerHTML = get_lang("subject");
656                }
657                td_element4 = document.createElement("TD");
658                td_element4.setAttribute("width", "12%");
659                td_element4.align = "center";
660                if (sort_type == 'SORTDATE')
661                {
662                        td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE_REVERSE'); delete_border(border_id,false);};
663                        td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
664                }
665                else
666                {
667                        td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE'); delete_border(border_id,false);};
668                        if  (sort_type == 'SORTDATE_REVERSE')
669                                td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
670                        else
671                                td_element4.innerHTML = get_lang("Date");
672                }
673                td_element5 = document.createElement("TD");
674                td_element5.setAttribute("width", "8%");
675                td_element5.align = "center";
676                if (sort_type == 'SORTSIZE')
677                {
678                        td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE_REVERSE'); delete_border(border_id,false);};
679                        td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
680                }
681                else
682                {
683                        td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE'); delete_border(border_id,false);};
684                        if  (sort_type == 'SORTSIZE_REVERSE')
685                                td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
686                        else
687                                td_element5.innerHTML = get_lang("Size");
688                }
689                tr_element.appendChild(td_element0);
690                tr_element.appendChild(td_element1);
691                tr_element.appendChild(td_element2);
692                tr_element.appendChild(td_element3);
693                tr_element.appendChild(td_element4);
694                tr_element.appendChild(td_element5);
695                tbody_element.appendChild(tr_element);
696                table_element.appendChild(tbody_element);
697                content_search.appendChild(table_element);
698                /*end of "put header"*/
699
700                if (!expresso_offline) {
701/*                      var span_options = document.createElement("SPAN");
702                        if (span_options)
703                                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> | ' +
704                                '<span title="' +
705                                get_lang("Move") +
706                                '" class="message_options" onclick=wfolders.makeWindowNew(\"' +
707                                content_search.id +
708                                '\",\"move_to\",true)>' +
709                                get_lang("Move") +
710                                '</span>';*/
711                        div_scroll_result.appendChild(table);
712                        content_search.appendChild(div_scroll_result);
713                        /*if (span_options)
714                                content_search.appendChild(span_options);*/
715                }
716                else {
717                        div_scroll_result.appendChild(table);
718                        content_search.appendChild(div_scroll_result);
719                }
720                resizeWindow();
721        }
722
723        searchE.prototype.open_msg = function(mailbox_id, uid_msg, subject){
724                var handler_get_msg = function(data){
725                        if(Element("border_id_" + uid_msg + "_r")){alert(get_lang("This message is already opened!"));}
726                        else{draw_message(data,create_border(url_decode(subject), uid_msg + "_r"));}
727                        //set_msg_as_read(msgs_to_set[i], false);
728                }
729                proxy_mensagens.get_msg(uid_msg,mailbox_id,false,handler_get_msg);
730                /*var args   = "$this.imap_functions.get_info_msg";
731                var params = "msg_number=" + uid_msg + "&msg_folder=" + mailbox;
732                cExecute(args,handler_get_msg,params);*/
733
734        }
735
736        // Adiciona caixas postais na busca;
737        searchE.prototype.add_mailboxes = function(){
738                var sel = Element("sel_search_nm_box1");
739                if (!proxy_mensagens.is_local_folder(this.name_box_search)) {
740                        var name_box     = this.name_box_search.split(cyrus_delimiter);
741                        if(this.name_box_search == "")
742                                return false;
743                        var name_box_def = "";
744                        if(name_box.length != 1){
745                                name_box_def = name_box[(name_box.length-1)];
746                        }else{
747                                name_box_def = get_lang("Inbox");
748                        }
749                }
750                else {
751                        if(this.name_box_search=='local_root')
752                                return;
753                        if(this.name_box_search=='local_Inbox')
754                                name_box_def = get_lang("Inbox");
755                        else
756                                name_box_def = this.name_box_search.substr(6);//Retira o 'local_'
757                }
758                if( sel.length > 0){
759                        for(var i=0; i < sel.options.length; i++){
760                                if(sel.options[i].value == this.name_box_search){
761                                        alert(get_lang('This message is already selected!'));
762                                        return false;
763                                }
764                        }
765                }
766                var opt = new Option(lang_folder(name_box_def),this.name_box_search,false,true);
767                sel[sel.length] = opt;
768        }
769        // Remove as caixas postais na busca;
770        searchE.prototype.del_mailboxes = function(){
771                var sel = Element("sel_search_nm_box1");
772                if(sel.length > 0){
773                        for(var i=0; i < sel.options.length; i++){
774                                if(sel.options[i].selected == true){
775                                        sel.options[i] = null;
776                                        i--;
777                                }
778                        }
779                }
780
781        }
782        // todas as caixas
783        searchE.prototype.all_mailboxes = function(){
784                var value = Element("check_all_msg").checked;
785                var cont = parseInt(0);
786                if(value){
787                        if(EsearchE.all_boxes.length > 0){
788                                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
789                        }
790                        for(var i=0; i < folders.length; i++){
791                                EsearchE.all_boxes[cont] = folders[i].folder_id;
792                                cont++;
793                        }
794                }else{
795                        EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
796                }
797        }
798
799        // Search;
800        searchE.prototype.func_search = function(value){
801                var fields = "##";
802                        // Verifica se os campos estão preenchidos;
803                        if(trim(Element("txt_ass").value) != ""){
804                                fields += "SUBJECT " +  "<=>" +encodeURIComponent(Element("txt_ass").value) + "##";
805                        }
806                        if(trim(Element("txt_body").value) != ""){
807                                fields += "BODY " + "<=>" + encodeURIComponent(Element("txt_body").value) + "##";
808                        }
809                        if(trim(Element("txt_de").value) != ""){
810                                fields += "FROM " + "<=>" + encodeURIComponent(Element("txt_de").value) + "##";
811                        }
812                        if(trim(Element("txt_para").value) != ""){
813                                fields += "TO " + "<=>" + encodeURIComponent(Element("txt_para").value) + "##";
814                        }
815                        if(trim(Element("txt_cc").value) != ""){
816                                fields += "CC " + "<=>" + encodeURIComponent(Element("txt_cc").value) + "##";
817                        }
818                        if (trim(Element("since_date").value) != ""){
819                            if (validate_date(Element("since_date").value))
820                            {
821                                fields += "SINCE " + "<=>" + encodeURIComponent(Element("since_date").value) + "##";
822                            }
823                            else
824                                {
825                                    alert(get_lang('Invalid date on field %1'), get_lang('Since Date'));
826                                    return false;
827                                }
828                        }
829                        if (trim(Element("before_date").value) != ""){
830                            if (validate_date(Element("before_date").value))
831                            {
832                                fields += "BEFORE " + "<=>" + encodeURIComponent(Element("before_date").value) + "##";
833                            }
834                            else
835                                {
836                                    alert(get_lang('Invalid date on field %1'), get_lang('Before Date'));
837                                    return false;
838                                }
839                        }
840                        if(trim(Element("on_date").value) != ""){
841                            if (validate_date(Element("on_date").value))
842                            {
843                                fields += "ON " + "<=>" + encodeURIComponent(Element("on_date").value) + "##";
844                            }
845                            else
846                                {
847                                    alert(get_lang('Invalid date on field %1'), get_lang('On Date'));
848                                    return false;
849                                }
850
851                        }
852                        if(trim(Element("flagged").options[Element("flagged").selectedIndex].value) != ""){
853                            if (Element("flagged").options[Element("flagged").selectedIndex].value == "FLAGGED"){
854                                fields += "FLAGGED##";
855                            }
856                            else {
857                                fields += "UNFLAGGED##";
858                            }
859                        }
860                        if(trim(Element("seen").options[Element("seen").selectedIndex].value) != ""){
861                            if (Element("seen").options[Element("seen").selectedIndex].value == "SEEN"){
862                                fields += "SEEN##";
863                            }
864                            else {
865                                fields += "UNSEEN##";
866                            }
867                        }
868                        if(trim(Element("answered").options[Element("answered").selectedIndex].value) != ""){
869                            //switch (Element("answered").options[Element("answered").selectedIndex].value){
870                            //    case "FORWARDED":
871                            //        fields += "ANSWERED##DRAFT##";
872                            //        break;
873                            //    case "ANSWERED":
874                            //        fields += "ANSWERED##UNDRAFT";
875                            //        break;
876                            //    case "UNFORWARDED":
877                            //        fields += "UNDRAFT##";
878                            //    case "UNANSWERED":
879                            //        fields += "UNANSWERED##";
880                            //}
881                            if (Element("answered").options[Element("answered").selectedIndex].value == "ANSWERED"){
882                                fields += "ANSWERED##";
883                            }
884                            else {
885                                fields += "UNANSWERED##";
886                            }
887                        }
888                        if(trim(Element("recent").options[Element("recent").selectedIndex].value) != ""){
889                            if (Element("answered").options[Element("answered").selectedIndex].value == "RECENT"){
890                                fields += "RECENT##";
891                            }
892                            else {
893                                fields += "OLD##";
894                            }
895                        }
896                        if(value) {
897                                fields = "##ALL " +  "<=>" +encodeURIComponent(value) + "##";
898                        }
899
900                if(fields == "##"){
901                        alert(get_lang("Define some search parameters!"));
902                        return false;
903                }
904                var local_folders = new Array();
905                var temp;
906
907                if(Element("check_all_msg").checked){
908                        this.all_mailboxes();
909                        var nm_box = new Array;
910                        for(var i=0; i < EsearchE.all_boxes.length; i++){
911                                nm_box[i] = EsearchE.all_boxes[i] + fields;
912                        }
913                        if (preferences.use_local_messages == 1) {
914                                temp = expresso_local_messages.list_local_folders();
915                                for (var x in temp) {
916                                        local_folders.push(temp[x][0]);
917                                }
918                        }
919                }else{
920                        var nm_box = new Array;
921                        var sel_combo = Element("sel_search_nm_box1");
922                        if( sel_combo.options.length <= 0){
923                                alert(get_lang("Define the boxes to search!"));
924                                return false;
925                        }
926
927                        for(var i=0; i < sel_combo.options.length; i++){
928                                sel_combo.options[i].selected = true;
929                        }
930                        for(var i=0; i < sel_combo.options.length; i++){
931                                if(sel_combo.options[i].selected == true){
932                                        if(!proxy_mensagens.is_local_folder(sel_combo.options[i].value))
933                                                nm_box[nm_box.length] = sel_combo.options[i].value + fields;
934                                        else
935                                                local_folders.push(sel_combo.options[i].value.substr(6));
936                                }
937                        }
938                }
939                var handler = function(data){
940                        var tmp;
941                        var countTmp= new Array();
942
943                        var dataTemp = data.split('=sumResults=');
944                        var sumResults = dataTemp[0];
945
946                        var data = dataTemp[1] ? dataTemp[1] : dataTemp[0];
947
948                        if (local_folders.length > 0) {
949                                tmp = expresso_local_messages.search(local_folders, fields);
950                                if (tmp!=false) {
951                                        var tmp2 = tmp.substr(2, data.length - 4);
952                                        countTmp = tmp.split('####');
953                                }
954                        }
955                        if ((sumResults == "none") && (countTmp.length==0)){
956                            alert(get_lang("None result was found."));
957                        }
958                        else
959                        {
960                            EsearchE.mount_result((sumResults=='none')?tmp:(countTmp.length==0)?data:data+tmp);
961                        }
962
963                }
964                var args   = "$this.imap_functions.search_msg";
965                var params = "condition=" + nm_box;
966                if(expresso_offline)
967                        handler('none');
968                else
969                        cExecute(args,handler,params);
970        }
971        // clean;
972        searchE.prototype.func_clean = function(){
973                // Limpa os campos;
974                for(var i=0; i < this.txtfields.length; i++){
975                        if(Element(this.txtfields[i]) != null){Element(this.txtfields[i]).value = "";}
976                }
977
978                for(i = 0; i < this.selectFields.length; i++)
979                {
980                    if (Element(this.selectFields[i]))
981                    {
982                        Element(this.selectFields[i]).selectedIndex = 0;
983                    }
984                }
985            if(Element("check_all_msg") != null){Element("check_all_msg").checked = false;}
986
987            EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
988                EsearchE.del_mailboxes();
989        }
990
991        // close
992        searchE.prototype.func_close = function(type){
993                var _this = this;
994                _this.name_box_search = "";
995                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
996                _this.type = type;
997                _this.searchW['window_search'].close();
998        }
999        // Monta a janela em tela;
1000        searchE.prototype.showWindow = function(div){
1001                if(!this.searchW[div.id]) {
1002                        div.style.width = "804px";
1003                        div.style.height = "440px";
1004                        div.style.visibility = "hidden";
1005                        div.style.position = "absolute";
1006                        div.style.zIndex = "10003";
1007                        var title = ":: "+ get_lang("Search")+" ::";
1008                        var wHeight = div.offsetHeight + "px";
1009                        var wWidth =  div.offsetWidth   + "px";
1010
1011                        win = new dJSWin({
1012                                id: 'ccList'+div.id,
1013                                content_id: div.id,
1014                                width: wWidth,
1015                                height: wHeight,
1016                                title_color: '#3978d6',
1017                                bg_color: '#eee',
1018                                title: title,
1019                                title_text_color: 'white',
1020                                button_y_img: '../phpgwapi/images/win_min.gif',
1021                                button_x_img: '../phpgwapi/images/winclose.gif',
1022                                border: true});
1023                        this.searchW[div.id] = win;
1024                        win.draw();
1025                }else{
1026                        var _this = this;
1027                        win = this.searchW[div.id];
1028                        if((_this.type == "close" && win.state == 0) || win.state == 2){EsearchE.func_clean();}
1029                        win.draw();
1030                }
1031                win.open();     
1032        }
1033
1034        searchE.prototype.aux_local_folder_display = function(folder) {
1035                if(!expresso_offline)
1036                        return "(Local) " + lang_folder(folder.substr(6));
1037                else
1038                        return lang_folder(folder.substr(6));
1039        }
1040
1041// Cria o objeto
1042        var EsearchE;
1043        EsearchE = new searchE();
Note: See TracBrowser for help on using the repository browser.