source: trunk/expressoMail1_2/js/search.js @ 689

Revision 689, 23.9 KB checked in by eduardoalex, 15 years ago (diff)

Ticket #413

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1/**************************************************************************\
2 Início
3\**************************************************************************/
4        function searchE(){
5                this.searchW   = new Array;
6                this.name_box_search = "";
7                this.all_boxes = new Array;
8                this.type = "";
9                this.fields = new Array("_ass","_de","_body","_para","_cc","_cco");
10        }
11       
12        //Monta os forms dentro da janela;
13        searchE.prototype.showForms = function(value){
14                // Principal
15                if(!Element("window_search")) {
16                        var form_search = document.createElement("DIV");
17                        form_search.style.visibility = 'hidden';
18                        form_search.style.top = '0px';
19                        form_search.style.left = '0px';
20                        form_search.id = "window_search";
21                        document.body.appendChild(form_search);                 
22                }
23               
24                // Pesquisa
25                if(!Element("div_form_search")){
26                        var div_form_search = document.createElement("DIV");
27                        div_form_search.id = "div_form_search";
28                        div_form_search.style.position = "absolute";
29                        div_form_search.style.left = "10px";
30                        div_form_search.style.top  = "10px";
31                        div_form_search.style.width = "635px";
32                        div_form_search.style.height = "200px";
33                        div_form_search.style.borderStyle = "outset";
34                        div_form_search.style.borderColor = "black";
35                        div_form_search.style.borderWidth = "1px";
36                        div_form_search.style.overflow = "hidden";
37                        div_form_search.innerHTML = "";
38                        var call_form_search = EsearchE.mount_form();
39                        div_form_search.appendChild(call_form_search);
40                        form_search.appendChild(div_form_search);
41
42                }       
43               
44                if(!Element("div_button_search")){
45                        var div_button_search    = document.createElement("DIV");
46                                div_button_search.id = "div_button_search";
47                                div_button_search.style.position = "absolute";
48                                div_button_search.style.left = "10px";
49                                div_button_search.style.top = "223px";
50                                div_button_search.style.width = "600px";
51                                div_button_search.style.height = "25px";
52                                div_button_search.innerHTML = "<table border='0' width='50%' cellpadding='0' cellspacing='0' align='right'>"+
53                                                                                          "<tr>"+
54                                                                                          "<td><input type='button' value=" + get_lang('Search') + " onclick='EsearchE.func_search()'></td>"+
55                                                                                          "<td><input type='button' value=" + get_lang('Clean') + " onclick='EsearchE.func_clean()'></td>"+
56                                                                                          "<td><input type='button' value=" + get_lang('Close') + " onclick='EsearchE.func_close(\"hidden\")'></td>"+
57                                                                                          "</tr>"+
58                                                                                          "</table>";
59                                form_search.appendChild(div_button_search);
60                }
61               
62                if(!Element("table_layer")){
63                        var table_layer    = "";
64                }
65               
66                if(value == "")
67                        EsearchE.showWindow(Element("window_search"));
68       
69                // Cria as caixas postais;
70                EsearchE.mount_folders();
71
72                if(value){
73                        Element("check_all_msg").checked = true;
74                        EsearchE.all_mailboxes();
75                        EsearchE.func_search(value);
76                }
77
78        }
79       
80        //Form
81        searchE.prototype.mount_form = function(value){
82                var form_sch = document.createElement("FORM");
83                form_sch.id  = "form_sch";
84                form_sch.innerHTML = "<table id='table_princ' border='0' cellpading='0' cellspacing='0' align='center'>"+
85                                                     "<tr>"+
86                                                     "<td colspan='2'><b>" + get_lang('Inform your search in the text fields') + " :</b></td>"+
87                                                     "<td rowspan='7'>&nbsp"+
88                                                     "</td>"+
89                                                     "<td rowspan='8'>"+
90                                                     "<table border='0' cellpading='0' cellspacing='0'>"+
91                                                     "<tr>"+
92                                                     "<td colspan='3' valign='top'>&nbsp;<b>" + get_lang('Search the messages in these folders') + " :</b></td>"+
93                                                     "</tr>"+
94                                                     "<tr>"+
95                                                     "<td valign='top'><div id='folders' style='width:160px; height:150px'></div></td>"+
96                                                     "<td>"+
97                                                     "<input type='button' id='incluir' name='incluir' value='>>' onclick='EsearchE.add_mailboxes()'><br>"+
98                                                     "<input type='button' id='excluir' name='excluir' value='<<' onclick='EsearchE.del_mailboxes()'></td>"+
99                                                     "</td>"+
100                                                     "<td><select multiple id='sel_search_nm_box1' name='sel_search_nm_box1' size='10' style='width:160px'></select></td>"+
101                                                     "</tr>"+
102                                                     "<tr>"+
103                                                     "<td valign='top'><input type='checkBox' id='check_all_msg' name='check_all_msg'><b>" + get_lang('In all the folders') + "</b></td>"+
104                                                     "</tr>"+
105                                                     "</table>"+
106                                                     "</td>"+
107                                                     "</tr>"+
108                                                     "<tr>"+
109                                                     "<td align='right'>" + get_lang('From') + " .: </td>"+
110                                                     "<td><input type='text' id='txt_de' size='20'></td>"+
111                                                     "</tr>"+
112                                                     "<tr>"+
113                                                     "<td align='right'>" + get_lang('To') + ".: </td>"+
114                                                     "<td><input type='text' id='txt_para' size='20'></td>"+
115                                                     "</tr>"+                                               
116                                                     "<tr>"+
117                                                     "<td align='right'>" + get_lang('Cc') + " .: </td>"+
118                                                     "<td><input type='text' id='txt_cc' size='20'></td>"+
119                                                     "</tr>"+
120                                                     "<tr>"+
121                                                     "<td align='right'>" + get_lang('Subject') + " .: </td>"+
122                                                     "<td><input type='text' id='txt_ass' size='20'></td>"+
123                                                     "</tr>"+
124                                                     "<tr>"+
125                                                         "<td align='right'>" + get_lang('Message body') + " .:</td>"+
126                                                     "<td><input type='text' id='txt_body' size='20'></td>"+
127                                                     "</tr>"+
128                                                     "</table>";
129                return form_sch;
130        }
131
132        // Pastas;
133        searchE.prototype.mount_folders = function(){
134                connector.loadScript("TreeS");
135
136                if( Element("div_folders_search") == null){
137                        var div_folders = document.createElement("DIV");
138                                div_folders.id = "div_folders_search";
139                                div_folders.style.width = "155px";
140                                div_folders.style.height = "152px";
141                                div_folders.style.borderStyle = "outset";
142                                div_folders.style.borderColor = "black";
143                                div_folders.style.borderWidth = "1px";
144                                div_folders.style.background  = "#F7F7F7";
145                                div_folders.style.overflow = "auto";
146                                div_folders.innerHTML = "";
147                                var dest_div = Element("folders");
148                                dest_div.appendChild(div_folders);
149                }               
150                ttree.make_tree(folders,"div_folders_search","_folders_tree_search","","","","");
151        }
152       
153        //This func returns the most recent date
154        function date_comp(a,b)
155        {
156                var data1 = a.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
157                data1 = data1[0].substr(0, data1[0].indexOf('--'))
158                with ( data1 )
159                        data1 = Date.UTC(substr(6), substr(3, 2), substr(0, 2));
160                var data2 = b.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
161                data2 = data2[0].substr(0, data2[0].indexOf('--'))
162                with ( data2 )
163                        data2 = Date.UTC(substr(6), substr(3, 2), substr(0, 2));
164                return data2 - data1;
165        }
166       
167        function box_comp(a,b)
168        {
169        var compare = [];
170        compare[0] = a.substr(0, a.indexOf('--'));
171        compare[0] = compare[0].toLowerCase();
172        var temp=compare[0];
173        compare[1] = b.substr(0, b.indexOf('--'))
174        compare[1] = compare[1].toLowerCase();
175        compare.sort();
176        if (temp != compare[0])
177                return +1;
178        else
179                return -1;
180        }
181
182        function who_comp(a,b)
183        {
184        var compare = [];
185        compare[0] = a.substr(a.indexOf('--')+2);
186        compare[0] = compare[0].toLowerCase();
187        var temp=compare[0];
188        compare[1] = b.substr(b.indexOf('--')+2);
189        compare[1] = compare[1].toLowerCase();
190        compare.sort();
191        if (temp != compare[0])
192                return +1;
193        else
194                return -1;
195        }
196
197        function subject_comp(a,b)
198        {
199        var compare = [];
200        compare[0] = a.substr(a.indexOf('--')+2);
201        compare[0] = compare[0].substr(compare[0].indexOf('--')+2);
202        compare[0] = compare[0].toLowerCase();
203        var temp=compare[0];
204        compare[1] = b.substr(b.indexOf('--')+2);
205        compare[1] = compare[1].substr(compare[1].indexOf('--')+2);
206        compare[1] = compare[1].toLowerCase();
207        compare.sort();
208        if (temp != compare[0])
209                return +1;
210        else
211                return -1;
212        }
213
214        function size_comp(a,b)
215        {
216                var data1 = a.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
217                data1 = data1[0].substr(data1[0].indexOf('--')+2)
218                data1 = data1.substr(0,data1.indexOf('--'))
219                var size_a = parseInt(data1.substr(0,data1.indexOf(' ')));
220                if (data1.match("k"))
221                        size_a = size_a * 1024;
222                else
223                        if (data1.match("m"))
224                                size_a = size_a * 1048576;
225               
226                var data2 = b.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
227                data2 = data2[0].substr(data2[0].indexOf('--')+2)
228                data2 = data2.substr(0,data2.indexOf('--'))
229                var size_b = parseInt(data2.substr(0,data2.indexOf(' ')));
230                if (data2.match("k"))
231                        size_b = size_b * 1024;
232                else
233                        if (data2.match("m"))
234                                size_b = size_b * 1048576;
235                               
236                return size_b - size_a;
237        }
238
239        // Form resultado;
240        searchE.prototype.mount_result = function(data,sort_type){
241                var nw_array = new Array;
242                var var_tmp = data.substr(2, data.length - 4);
243                var_tmp  = var_tmp.split("####");
244                var cont = parseInt(0);
245                switch (sort_type)
246                {
247                        case 'SORTDATE':
248                                var_tmp.sort(date_comp);
249                                break;
250                        case 'SORTBOX':
251                                var_tmp.sort(box_comp);
252                                break;
253                        case 'SORTSUBJECT':
254                                var_tmp.sort(subject_comp);
255                                break;
256                        case 'SORTWHO':
257                                var_tmp.sort(who_comp);
258                                break;
259                        case 'SORTSIZE':
260                                var_tmp.sort(size_comp);
261                                break;
262                        default:
263                                var showMsg = 1;
264                }
265
266                for(var i=0; i < var_tmp.length; i++){
267                        if(var_tmp[i] != "")
268                        {
269                                nw_array[cont] = var_tmp[i];
270                                cont++;
271                        }
272                }
273                if(nw_array.length > 0 && showMsg)
274                        write_msg(nw_array.length + " "+ get_lang('results found'));
275                numBox++;
276                var border_id = create_border(get_lang("Search Results"), "search_" + numBox);
277                var table = document.createElement("TABLE");
278                table.id    = "table_resultsearch_" + numBox;
279                table.frame = "void";
280                table.rules = "rows";
281                table.cellPadding = "0";
282                table.cellSpacing = "0";
283                table.className = "table_box";
284
285                var tbody = document.createElement("TBODY");
286                tbody.id    = "tbody_resultsearch_" + numBox;
287                for( var i=0; i < nw_array.length; i++){
288                        var tr = document.createElement("TR");
289                        tr.style.height = preferences.line_height;
290
291                        if (nw_array[i].match(/.*--.*--\w*--\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g) != null) //subject with "--"
292                        {
293                                var aux1 = nw_array[i].match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g);
294                                aux1 = aux1[0].split("--");
295                                nw_array[i] = nw_array[i].substr(0, nw_array[i].indexOf(aux1[0])-2);
296                                var aux = [];
297                                aux[0] = nw_array[i].substr(0, nw_array[i].indexOf('--'));
298                                nw_array[i] = nw_array[i].substr(nw_array[i].indexOf('--')+2);
299                                aux[1] = nw_array[i].substr(0, nw_array[i].indexOf('--'));
300                                aux[2] = nw_array[i].substr(nw_array[i].indexOf('--')+2);
301                                aux = aux.concat(aux1);
302                        }
303                        else
304                        {
305                        var aux = nw_array[i].split("--");
306                        }
307                        var mailbox = aux[0];
308                        var uid_msg = aux[6];
309                        var subject = aux[2];
310                        tr.id = uid_msg;
311                        tr.name = mailbox;
312
313                        for(var j=0 ; j <= 10 ; j++)
314                        {
315                                var td = document.createElement("TD");                                 
316                                if (j == 0)
317                                {
318                                        td.style.width = "1%";
319                                        var td1 = '<input type="checkbox" id="check_box_message_'+uid_msg+'"></input>';
320                                }
321                                if (j == 1)
322                                {
323                                        td.style.width = "2%";
324                                        td1 = '';
325                                }
326                                if (j == 2)
327                                {
328                                        td.style.width = "1%";
329                                        td.id = "td_message_answered_"+uid_msg;
330                                        td1 = '';
331                                }
332                                if (j == 3)
333                                {
334                                        td.style.width = "1%";
335                                        td.id = "td_message_important_"+uid_msg;
336                                        td1 = '';
337                                }
338                                if (j == 4)
339                                {
340                                        td.style.width = "1%";
341                                        td.id = "td_message_sent_"+uid_msg;
342                                        td1 = '';
343                                }
344                                if (j == 5)
345                                {
346                                        td.style.width = "14%";                                 
347                                        var nm_box = aux[0].split(cyrus_delimiter);
348                                        var td1 = nm_box.pop();
349                                        td.setAttribute("NoWrap","true");
350                                        td.style.overflow = "hidden";
351                                        td.style.color = "#42795b";
352                                        td.style.fontWeight = "bold";
353                                        if(td1 == "INBOX"){
354                                                var td1  = get_lang("Inbox");
355                                        }
356                                                if(proxy_mensagens.is_local_folder(td1)) {
357                                                        var td1 = this.aux_local_folder_display(td1);
358                                        }
359                                }
360                                if( j == 6)
361                                {
362                                        var subject_encode = url_encode(aux[1]);
363                                        td.style.width = "20%";                                 
364                                        var td1  =  '<div style="width:100%;overflow:hidden">'+aux[1]+"</div>";
365                                }
366                                if( j == 7)
367                                {
368                                        var subject_encode = url_encode(subject);
369                                        if (! subject_encode)
370                                                aux[2] = get_lang("no subject") + "...";
371                                        td.style.width = "35%";                                 
372                                        var td1  = '<div style="width:100%;overflow:hidden"><a href=javascript:void(0) onclick=EsearchE.open_msg(\"' + url_encode(mailbox) + '\",\"' + uid_msg + '\",\"' + subject_encode + '\")>' + aux[2] +'</a></div>';
373
374                                }
375                                if( j == 8)
376                                {
377                                        td.style.width = "15%";                                 
378                                        td.align = "center";
379                                        var td1  = aux[3];
380                                }
381                                if( j == 9)
382                                {
383                                        td.style.width = "10%";
384                                        td.align = "center";
385                                        var td1  = aux[4];
386                                }
387                                if (j == 10)
388                                {
389                                        if (aux[5].match("U"))
390                                                tr.className = 'tr_msg_unread';
391                                        else
392                                                tr.className = 'tr_msg_read';
393                                        if (aux[5].match("F"))
394                                                tr.className = 'flagged_msg';
395                                        var td1 = '';
396                                }
397                                td.innerHTML = td1;
398                                tr.appendChild(td);
399                        }
400                        aux.splice(0,(aux.length));
401
402                _dragArea.makeDragged(tr, uid_msg, subject_encode, true, mailbox);
403                tbody.appendChild(tr);
404                }
405                table.appendChild(tbody);
406               
407        var content_search =  Element('content_id_search_' + numBox);   
408        // BEGIN MAKE THE SCROLL HEIGHT         
409        var defaultWidth = document.body.offsetWidth - 31;     
410        var menuHidden = Element("folderscol").style.display == 'none' ? true : false;
411        if(!menuHidden)
412                defaultWidth -= Element("folderscol").offsetWidth;                     
413        var bar = Element("toolbar");
414        var offset = 0;
415        if(bar.style.visibility != 'hidden')
416                offset = bar.offsetHeight ? bar.offsetHeight :  bar.clientHeight;               
417        var div_scroll_result = document.createElement("DIV");
418        div_scroll_result.id = "divScrollMain_"+numBox;
419        div_scroll_result.style.background = 'WHITE';
420        div_scroll_result.style.height = document.body.clientHeight - offset - 120;
421        content_search.style.height = document.body.clientHeight - offset - 80;
422        div_scroll_result.style.overflow = "auto";
423        div_scroll_result.style.width = defaultWidth - (is_ie ? 7 : 0);
424        // END MAKE THE SCROLL HEIGHT           
425               
426       
427                if(is_ie)
428                        Element("border_table").width = "99.5%";
429               
430                /* Put header */
431                var table_element = document.createElement("TABLE");
432                var tbody_element = document.createElement("TBODY");
433                table_element.setAttribute("id", "table_message_header_box");
434                table_element.className = "table_message_header_box";
435                tr_element = document.createElement("TR");
436                tr_element.className = "message_header";
437                td_element0 = document.createElement("TD");
438                td_element0.setAttribute("width", "1%");
439                chk_box_element = document.createElement("INPUT");
440                chk_box_element.id  = "chk_box_select_all_messages";
441                chk_box_element.setAttribute("type", "checkbox");
442                chk_box_element.className = "checkbox";
443                chk_box_element.onclick = function(){select_all_search_messages(this.checked,content_search.id);};
444                chk_box_element.onmouseover = function () {this.title=get_lang('Select all messages.')};
445                chk_box_element.onkeydown = function (e){
446                        if (is_ie)
447                        {
448                                if ((window.event.keyCode) == 46)
449                                        delete_msgs(get_current_folder(),'selected','null');
450                        }
451                        else
452                        {
453                                if ((e.keyCode) == 46)
454                                        delete_msgs(get_current_folder(),'selected','null');
455                        }
456                };
457               
458                td_element0.appendChild(chk_box_element);
459                td_element1 = document.createElement("TD");
460                td_element1.setAttribute("width", "20%");
461                td_element1.align = "left";
462                td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX'); delete_border(border_id,false);};
463                td_element1.innerHTML = (sort_type == 'SORTBOX')?"<b>"+get_lang("folder")+"</b>":get_lang("folder");
464                td_element2 = document.createElement("TD");
465                td_element2.setAttribute("width", "20%");
466                td_element2.align = "left";
467                td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO'); delete_border(border_id,false);};
468                td_element2.innerHTML = (sort_type == 'SORTWHO')?"<b>"+get_lang("Who")+"</b>":get_lang("Who");
469                td_element3 = document.createElement("TD");
470                td_element3.setAttribute("width", "35%");
471                td_element3.align = "left";
472                td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT'); delete_border(border_id,false);};
473                td_element3.innerHTML = (sort_type == 'SORTSUBJECT')?"<b>"+get_lang("Subject")+"</b>":get_lang("Subject");
474                td_element4 = document.createElement("TD");
475                td_element4.setAttribute("width", "15%");
476                td_element4.align = "center";
477                td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE'); delete_border(border_id,false);};
478                td_element4.innerHTML = (sort_type == 'SORTDATE')?"<b>"+get_lang("Date")+"</b>":get_lang("Date");
479                td_element5 = document.createElement("TD");
480                td_element5.setAttribute("width", "10%");
481                td_element5.align = "center";
482                td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE'); delete_border(border_id,false);};
483                td_element5.innerHTML = (sort_type == 'SORTSIZE')?"<b>"+get_lang("Size")+"</b>":get_lang("Size");
484       
485                tr_element.appendChild(td_element0);
486                tr_element.appendChild(td_element1);
487                tr_element.appendChild(td_element2);
488                tr_element.appendChild(td_element3);
489                tr_element.appendChild(td_element4);
490                tr_element.appendChild(td_element5);
491                tbody_element.appendChild(tr_element);
492                table_element.appendChild(tbody_element);
493                content_search.appendChild(table_element);
494                /*end of "put header"*/
495
496                var span_options = document.createElement("SPAN");             
497                if (span_options)
498                        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> | '+
499                                '<span title="'+get_lang("Move")+'" class="message_options" onclick=wfolders.makeWindowNew(\"'+content_search.id+'\",\"move_to\",true)>'+get_lang("Move")+'</span>';
500                div_scroll_result.appendChild(table);
501                content_search.appendChild(div_scroll_result); 
502                if (span_options)
503                        content_search.appendChild(span_options);
504        }
505
506        searchE.prototype.open_msg = function(mailbox, uid_msg, subject){
507                var handler_get_msg = function(data){
508                        if(Element("border_id_" + uid_msg + "_r")){alert(get_lang("This message is already opened!"));}
509                        else{draw_message(data,create_border(url_decode(subject), uid_msg + "_r"));}
510                        //set_msg_as_read(msgs_to_set[i], false);
511                }
512                proxy_mensagens.get_msg(uid_msg,mailbox,false,handler_get_msg);
513                /*var args   = "$this.imap_functions.get_info_msg";
514                var params = "msg_number=" + uid_msg + "&msg_folder=" + mailbox;
515                cExecute(args,handler_get_msg,params);*/
516
517        }
518
519        // Adiciona caixas postais na busca;
520        searchE.prototype.add_mailboxes = function(){
521                var sel = Element("sel_search_nm_box1");
522                if (!proxy_mensagens.is_local_folder(this.name_box_search)) {
523                        var name_box     = this.name_box_search.split(cyrus_delimiter);
524                        if(this.name_box_search == "")
525                                return false;
526                        var name_box_def = "";
527                        if(name_box.length != 1){
528                                name_box_def = name_box[(name_box.length-1)];
529                        }else{
530                                name_box_def = get_lang("Inbox");               
531                        }
532                }
533                else {
534                        if(this.name_box_search=='local_root')
535                                return;
536                        if(this.name_box_search=='local_Inbox')
537                                name_box_def = get_lang("Inbox");
538                        else
539                                name_box_def = this.name_box_search.substr(6);//Retira o 'local_'
540                }
541                if( sel.length > 0){
542                        for(var i=0; i < sel.options.length; i++){
543                                if(sel.options[i].value == this.name_box_search){
544                                        alert(get_lang('This message is already selected!'));
545                                        return false;
546                                }
547                        }
548                }
549                var opt = new Option(lang_folder(name_box_def),this.name_box_search,false,true);
550                sel[sel.length] = opt;
551        }
552        // Remove as caixas postais na busca;
553        searchE.prototype.del_mailboxes = function(){
554                var sel = Element("sel_search_nm_box1");
555                if(sel.length > 0){
556                        for(var i=0; i < sel.options.length; i++){
557                                if(sel.options[i].selected == true){
558                                        sel.options[i] = null;
559                                        i--;
560                                }
561                        }
562                }
563       
564        }
565        // todas as caixas
566        searchE.prototype.all_mailboxes = function(){
567                var value = Element("check_all_msg").checked;
568                var cont = parseInt(0);
569                if(value){
570                        if(EsearchE.all_boxes.length > 0){
571                                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));                       
572                        }
573                        for(var i=0; i < folders.length; i++){
574                                EsearchE.all_boxes[cont] = folders[i].folder_id;
575                                cont++;
576                        }
577                }else{
578                        EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
579                }
580        }
581
582        // Search;
583        searchE.prototype.func_search = function(value){
584                var fields = "##";
585                        // Verifica se os campos estão preenchidos;
586                        if(trim(Element("txt_ass").value) != ""){
587                                fields += "SUBJECT " +  "<=>" +url_encode(Element("txt_ass").value) + "##";
588                        }
589                        if(trim(Element("txt_body").value) != ""){
590                                fields += "BODY " + "<=>" + url_encode(Element("txt_body").value) + "##";
591                        }
592                        if(trim(Element("txt_de").value) != ""){
593                                fields += "FROM " + "<=>" + url_encode(Element("txt_de").value) + "##";
594                        }
595                        if(trim(Element("txt_para").value) != ""){
596                                fields += "TO " + "<=>" + url_encode(Element("txt_para").value) + "##";
597                        }
598                        if(trim(Element("txt_cc").value) != ""){
599                                fields += "CC " + "<=>" + url_encode(Element("txt_cc").value) + "##";
600                        }
601                        if(value) {
602                                fields = "##ALL " +  "<=>" +url_encode(value) + "##";
603                        }
604
605                if(fields == "##"){
606                        alert(get_lang("Define some search parameters!"));
607                        return false;
608                }
609                var local_folders = new Array();
610                var temp;
611               
612                if(Element("check_all_msg").checked){
613                        this.all_mailboxes();
614                        var nm_box = new Array;
615                        for(var i=0; i < EsearchE.all_boxes.length; i++){
616                                nm_box[i] = EsearchE.all_boxes[i] + fields;
617                        }
618                        if (preferences.use_local_messages == 1) {
619                                temp = expresso_local_messages.list_local_folders();
620                                for (var x in temp) {
621                                        local_folders.push(temp[x][0]);
622                                }
623                        }
624                }else{
625                        var nm_box = new Array;
626                        var sel_combo = Element("sel_search_nm_box1");
627                        if( sel_combo.options.length <= 0){
628                                alert(get_lang("Define the boxes to search!"));
629                                return false;
630                        }
631                       
632                        for(var i=0; i < sel_combo.options.length; i++){
633                                sel_combo.options[i].selected = true;
634                        }
635                        for(var i=0; i < sel_combo.options.length; i++){
636                                if(sel_combo.options[i].selected == true){
637                                        if(!proxy_mensagens.is_local_folder(sel_combo.options[i].value))
638                                                nm_box[nm_box.length] = sel_combo.options[i].value + fields;
639                                        else
640                                                local_folders.push(sel_combo.options[i].value.substr(6));
641                                }
642                        }
643                }
644                var handler = function(data){
645                        var tmp;
646                        var countTmp= new Array();
647                        if (local_folders.length > 0) {
648                                tmp = expresso_local_messages.search(local_folders, fields);
649                                if (tmp!=false) {
650                                        var tmp2 = tmp.substr(2, data.length - 4);
651                                        countTmp = tmp.split('####');
652                                }
653                        }
654                        if((data == "none") && (countTmp.length==0)){alert(get_lang("None result was found."));}
655                        else if(countTmp.length > 50){alert(get_lang("More than %1 results. Please, try to refine your search.",50));}
656                        else if(data == "many results"){alert(get_lang("More than %1 results. Please, try to refine your search.",50));}
657                        else{EsearchE.mount_result((data=='none')?tmp:(countTmp.length==0)?data:data+tmp);}
658                }
659                var args   = "$this.imap_functions.search_msg";
660                var params = "condition=" + nm_box;
661                cExecute(args,handler,params);
662        }
663        // clean;
664        searchE.prototype.func_clean = function(){
665                // Limpa os campos;
666                for(var i=0; i < this.fields.length; i++){
667                        if(Element("txt" + this.fields[i]) != null){Element("txt" + this.fields[i]).value = "";}
668                }                       
669            if(Element("check_all_msg") != null){Element("check_all_msg").checked = false;}
670
671            EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
672                EsearchE.del_mailboxes();
673        }
674
675        // close
676        searchE.prototype.func_close = function(type){
677                var _this = this;
678                _this.name_box_search = "";
679                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
680                _this.type = type;
681                _this.searchW['window_search'].close();
682        }
683        // Monta a janela em tela;
684        searchE.prototype.showWindow = function(div){
685                if(!this.searchW[div.id]) {
686                        div.style.width = "660px";
687                        div.style.height = "255px";
688                        div.style.visibility = "hidden";
689                        div.style.position = "absolute";
690                        div.style.zIndex = "10003";                     
691                        var title = ":: "+ get_lang("Search")+" ::";
692                        var wHeight = div.offsetHeight + "px";
693                        var wWidth =  div.offsetWidth   + "px";
694                       
695                        win = new dJSWin({                     
696                                id: 'ccList'+div.id,
697                                content_id: div.id,
698                                width: wWidth,
699                                height: wHeight,
700                                title_color: '#3978d6',
701                                bg_color: '#eee',
702                                title: title,                                           
703                                title_text_color: 'white',
704                                button_y_img: '../phpgwapi/images/win_min.gif',
705                                button_x_img: '../phpgwapi/images/winclose.gif',
706                                border: true });
707                        this.searchW[div.id] = win;
708                        win.draw();
709                }else{
710                        var _this = this;
711                        win = this.searchW[div.id];
712                        if((_this.type == "close" && win.state == 0) || win.state == 2){EsearchE.func_clean();}
713                        win.draw();
714                }
715                win.open();     
716        }
717       
718        searchE.prototype.aux_local_folder_display = function(folder) {
719                return "(Local) " + lang_folder(folder.substr(6));
720        }
721       
722// Cria o objeto
723        var EsearchE;
724        EsearchE = new searchE();
Note: See TracBrowser for help on using the repository browser.