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

Revision 2, 16.9 KB checked in by niltonneto, 17 years ago (diff)

Removida todas as tags usadas pelo CVS ($Id, $Source).
Primeira versão no CVS externo.

  • 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='100%' cellpadding='0' cellspacing='0'>"+
53                                                                                          "<tr>"+
54                                                                                          "<td width='350px'><font size='2'><b>" + get_lang('Result of the search') + " .:</b></font> "+
55                                                                                          "<span id='num_search_results'></span></td>"+
56                                                                                          "<td><input type='button' value=" + get_lang('Search') + " onclick='EsearchE.func_search()'></td>"+
57                                                                                          "<td><input type='button' value=" + get_lang('to clean') + " onclick='EsearchE.func_clean()'></td>"+
58                                                                                          "<td><input type='button' value=" + get_lang('to close') + " onclick='EsearchE.func_close(\"close\")'></td>"+
59                                                                                          "<td><input type='button' value=" + get_lang('Hide Search') + " onclick='EsearchE.func_close(\"hidden\")'></td>"+
60                                                                                          "</tr>"+
61                                                                                          "</table>";
62                                form_search.appendChild(div_button_search);
63                }
64               
65                if(!Element("table_layer")){
66                        var table_layer    = document.createElement("DIV");
67                                table_layer.id = "table_layer";
68                                table_layer.innerHTML = "<br><table border='0' cellpading='0' cellspacing='0' width='100%'>"+
69                                                                                "<tr>"+
70                                                                                "<td width='20%' style='background:#C0C0C0'><b>Pasta</b></td>"+
71                                                                                "<td width='30%' style='background:#C0C0C0'><b>Quem</b></td>"+
72                                                                                "<td width='30%' style='background:#C0C0C0'><b>Assunto</b></td>"+
73                                                                                "<td width='10%' style='background:#C0C0C0'><b>Data</b></td>"+
74                                                                                "<td width='10%' style='background:#C0C0C0' align='left'><b>Tamanho</b></td>"+
75                                                                                "</tr>"+
76                                                                                "</table>";
77                                table_layer.style.position = "absolute";
78                                table_layer.style.left = "10px";
79                                table_layer.style.top = "238px";
80                                table_layer.style.width = "638px";
81                                form_search.appendChild(table_layer);
82                }
83                // Resultado
84                if(!Element("div_form_result")){
85                        var div_form_result = document.createElement("DIV");
86                        div_form_result.id = "div_form_result";
87                        div_form_result.style.position = "absolute";
88                        div_form_result.style.left = "10px";
89                        div_form_result.style.top = "270px";
90                        div_form_result.style.width = "635px";
91                        div_form_result.style.height = "120px";
92                        div_form_result.style.borderStyle = "outset";
93                        div_form_result.style.borderColor = "black";
94                        div_form_result.style.borderWidth = "1px";
95                        div_form_result.style.overflow = "auto";
96                        div_form_result.innerHTML = "";
97                        form_search.appendChild(div_form_result);
98                }
99               
100                EsearchE.showWindow(Element("window_search")); 
101
102                // Cria as caixas postais;
103                EsearchE.mount_folders();
104
105                if(value){
106                        Element("check_all_msg").checked = true;
107                        EsearchE.all_mailboxes();
108                        EsearchE.func_search(value);
109                }
110
111        }
112       
113        //Form
114        searchE.prototype.mount_form = function(value){
115                var form_sch = document.createElement("FORM");
116                form_sch.id  = "form_sch";
117                form_sch.innerHTML = "<table id='table_princ' border='0' cellpading='0' cellspacing='0' align='center'>"+
118                                                     "<tr>"+
119                                                     "<td colspan='2'><b>" + get_lang('It informs the search in the boxes of text') + " :</b></td>"+
120                                                     "<td rowspan='7'>&nbsp"+
121                                                     "</td>"+
122                                                     "<td rowspan='8'>"+
123                                                     "<table border='0' cellpading='0' cellspacing='0'>"+
124                                                     "<tr>"+
125                                                     "<td colspan='3' valign='top'>&nbsp;<b>" + get_lang('It searches messages in these folders') + " :</b></td>"+
126                                                     "</tr>"+
127                                                     "<tr>"+
128                                                     "<td valign='top'><div id='folders' style='width:160px; height:150px'></div></td>"+
129                                                     "<td>"+
130                                                     "<input type='button' id='incluir' name='incluir' value='>>' onclick='EsearchE.add_mailboxes()'><br>"+
131                                                     "<input type='button' id='excluir' name='excluir' value='<<' onclick='EsearchE.del_mailboxes()'></td>"+
132                                                     "</td>"+
133                                                     "<td><select multiple id='sel_search_nm_box1' name='sel_search_nm_box1' size='10' style='width:160px'></select></td>"+
134                                                     "</tr>"+
135                                                     "<tr>"+
136                                                     "<td valign='top'><input type='checkBox' id='check_all_msg' name='check_all_msg' onclick='EsearchE.all_mailboxes()'><b>" + get_lang('In all the folders') + "</b></td>"+
137                                                     "</tr>"+
138                                                     "</table>"+
139                                                     "</td>"+
140                                                     "</tr>"+
141                                                     "<tr>"+
142                                                     "<td align='right'>" + get_lang('From') + " .: </td>"+
143                                                     "<td><input type='text' id='txt_de' size='20'></td>"+
144                                                     "</tr>"+
145                                                     "<tr>"+
146                                                     "<td align='right'>" + get_lang('To') + ".: </td>"+
147                                                     "<td><input type='text' id='txt_para' size='20'></td>"+
148                                                     "</tr>"+                                               
149                                                     "<tr>"+
150                                                     "<td align='right'>" + get_lang('Cc') + " .: </td>"+
151                                                     "<td><input type='text' id='txt_cc' size='20'></td>"+
152                                                     "</tr>"+
153                                                     "<tr>"+
154                                                     "<td align='right'>" + get_lang('Subject') + " .: </td>"+
155                                                     "<td><input type='text' id='txt_ass' size='20'></td>"+
156                                                     "</tr>"+
157                                                     "<tr>"+
158                                                         "<td align='right'>" + get_lang('Message body') + " .:</td>"+
159                                                     "<td><input type='text' id='txt_body' size='20'></td>"+
160                                                     "</tr>"+
161                                                     "</table>";
162                return form_sch;
163        }
164
165        // Pastas;
166        searchE.prototype.mount_folders = function(){
167                connector.loadScript("TreeS");
168
169                if( document.getElementById("div_folders_search") == null){
170                        var div_folders = document.createElement("DIV");
171                                div_folders.id = "div_folders_search";
172                                div_folders.style.width = "155px";
173                                div_folders.style.height = "152px";
174                                div_folders.style.borderStyle = "outset";
175                                div_folders.style.borderColor = "black";
176                                div_folders.style.borderWidth = "1px";
177                                div_folders.style.background  = "#F7F7F7";
178                                div_folders.style.overflow = "auto";
179                                div_folders.innerHTML = "";
180                                var dest_div = document.getElementById("folders");
181                                dest_div.appendChild(div_folders);
182                }               
183                ttree.make_tree(folders,"div_folders_search","_folders_tree_search","","","","");
184        }
185       
186        // Monta Resultado no Box
187        searchE.prototype.mount_result_box = function(data){
188                var label = "Resultado da Pesquisa";
189                Element("border_id_0").innerHTML = "&nbsp;<font color='red'>" + label + '</font>&nbsp;<font face="Verdana" size="1" color="#505050">[<span id="new_m">&nbsp;</span> / <span id="tot_m">0</span>]</font>';
190                draw_box(new Array(), "_search");
191                draw_paging(0);
192//              alternate_border(0);
193
194        }
195        // Form resultado;
196        searchE.prototype.mount_result = function(data){
197               
198                //this.func_clean();
199
200                var nw_array = new Array;
201                var var_tmp  = data.split("##");
202                var cont = parseInt(0);
203                var div_form = document.getElementById("div_form_result");
204                var_tmp.sort();
205                for(var i=0; i < var_tmp.length; i++){
206                        if(var_tmp[i] != ""){
207                                nw_array[cont] = var_tmp[i];
208                                cont++;
209                        }
210                }
211                if(document.getElementById("table_result") != null){
212                        var cl = document.getElementById("table_result");
213                        cl.parentNode.removeChild(cl);
214                }
215                var table = document.createElement("TABLE");
216                        table.id    = "table_result";
217                        table.width = "100%";
218                if(is_ie){
219                        table.cellPadding  = '0';
220                        table.cellSpacing = '0';
221                        table.setAttribute("border","1");
222                }else{
223                        table.setAttribute( "cellspacing", "0");
224                        table.setAttribute( "cellpadding", "0");
225                        table.setAttribute( "border", "1");
226                }
227                var tbody = document.createElement("TBODY");
228                if(nw_array.length > 0){
229                        Element('num_search_results').innerHTML = "<span  class='action_info_th'> "+nw_array.length +" mensagens encontradas.</span>";
230                }
231                else
232                        Element('num_search_results').innerHTML = '';
233
234                for( var i=0; i < nw_array.length; i++){
235                        var tr = document.createElement("TR");
236                        var color = "#F7F7F7";
237                        tr.style.background  = color;
238
239                        var aux = nw_array[i].split("--");
240                        for(var j=0 ; j < aux.length ; j++){
241                                        var mailbox = aux[0];
242                                        var uid_msg = aux[5];
243                                        var td = document.createElement("TD");
244                                if( j <= 4){
245                                        if( j == 0){
246                                                td.width = "20%";                                       
247                                                var nm_box = aux[0].split(cyrus_delimiter);
248                                                var td1 = nm_box.pop();
249                                                if(td1 == "INBOX"){
250                                                        var td1  = "Caixa de Entrada";
251                                                }
252                                        }
253                                        if( j == 1){
254                                                td.width = "30%";                                       
255                                                var td1  = aux[1];
256                                        }
257                                        if( j == 2){
258                                                var subject_encode = url_encode(aux[2]);
259                                                td.width = "30%";                                       
260                                                var td1  = '<a href=javascript:void(0) onclick=EsearchE.open_msg(\"' + url_encode(mailbox) + '\",\"' + uid_msg + '\",\"' + subject_encode + '\")>' + aux[2].substr(0,25) + '...</a>';
261
262                                        }
263                                        if( j == 3){
264                                                td.width = "10%";                                       
265                                                td.align = "center";
266                                                var td1  = aux[3];
267                                        }
268                                        if( j == 4){
269                                                td.width = "10%";
270                                                td.align = "center";
271                                                var td1  = aux[4];
272                                        }
273                                        td.innerHTML = td1;
274                                        tr.appendChild(td);
275                                }
276                        }
277                        aux.splice(0,(aux.length));
278                        tbody.appendChild(tr);
279                }
280                table.appendChild(tbody);
281                div_form.appendChild(table);
282        }
283
284        searchE.prototype.open_msg = function(mailbox, uid_msg, subject){
285                var handler_get_msg = function(data){
286                        if(Element("border_id_" + uid_msg + "_r")){alert(get_lang("This message is already opened!"));}
287                        else{draw_message(data,create_border(url_decode(subject), uid_msg + "_r"));}
288                }
289                var args   = "$this.imap_functions.get_info_msg";
290                var params = "msg_number=" + uid_msg + "&msg_folder=" + mailbox;
291                cExecute(args,handler_get_msg,params);
292
293        }
294
295        // Adiciona caixas postais na busca;
296        searchE.prototype.add_mailboxes = function(){
297                var sel = document.getElementById("sel_search_nm_box1");
298                var name_box     = this.name_box_search.split(cyrus_delimiter);
299                if(this.name_box_search == "")
300                        return false;
301                var name_box_def = "";
302                if(name_box.length != 1){
303                        name_box_def = name_box[(name_box.length-1)];
304                }else{
305                        name_box_def = "Caixa de Entrada";             
306                }
307                if( sel.length > 0){
308                        for(var i=0; i < sel.options.length; i++){
309                                if(sel.options[i].value == this.name_box_search){
310                                        alert(get_lang('This message is already selected!'));
311                                        return false;
312                                }
313                        }
314                }
315                var opt = new Option(name_box_def,this.name_box_search,false,true);
316                sel[sel.length] = opt;
317        }
318        // Remove as caixas postais na busca;
319        searchE.prototype.del_mailboxes = function(){
320                var sel = document.getElementById("sel_search_nm_box1");
321                if(sel.length > 0){
322                        for(var i=0; i < sel.options.length; i++){
323                                if(sel.options[i].selected == true){
324                                        sel.options[i] = null;
325                                        i--;
326                                }
327                        }
328                }
329       
330        }
331        // todas as caixas
332        searchE.prototype.all_mailboxes = function(){
333                var value = document.getElementById("check_all_msg").checked;
334                var cont = parseInt(0);
335                if(value){
336                        if(EsearchE.all_boxes.length > 0){
337                                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));                       
338                        }
339                        for(var i=0; i < folders.length; i++){
340                                EsearchE.all_boxes[cont] = folders[i].folder_id;
341                                cont++;
342                        }
343                }else{
344                        EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
345                }
346        }
347
348        // Search;
349        searchE.prototype.func_search = function(value){
350                var fields = "##";
351                        // Verifica se os campos estão preenchidos;
352                        if(document.getElementById("txt_ass").value != "" && trim(document.getElementById("txt_ass").value) != ""){
353                                fields += "SUBJECT " +  "<=>" +url_encode(document.getElementById("txt_ass").value) + " ";
354                        }
355                        if(document.getElementById("txt_body").value != "" && trim(document.getElementById("txt_body").value) != ""){
356                                fields += "BODY " + "<=>" + url_encode(document.getElementById("txt_body").value) + " ";
357                        }
358                        if(document.getElementById("txt_de").value != "" && trim(document.getElementById("txt_de").value) != ""){       
359                                fields += "FROM " + "<=>" + url_encode(document.getElementById("txt_de").value) + " ";
360                        }
361                        if(document.getElementById("txt_para").value != "" && trim(document.getElementById("txt_para").value) != ""){
362                                fields += "TO " + "<=>" + url_encode(document.getElementById("txt_para").value) + " ";
363                        }
364                        if(document.getElementById("txt_cc").value != "" && trim(document.getElementById("txt_cc").value) != ""){
365                                fields += "CC " + "<=>" + url_encode(document.getElementById("txt_cc").value) + " ";
366                        }
367                        if(value) {
368                                fields += "ALL " + "<=>" + url_encode(value) + " ";
369                        }
370                        /*if(document.getElementById("txt_cco").value != "" && trim(document.getElementById("txt_cco").value) != ""){
371                                fields += "BCC " + "<=>" + url_encode(document.getElementById("txt_cco").value) + " ";
372                        }*/
373                fields += "##";
374                if(fields == "####"){
375                        alert(get_lang("Define some parameters to search!"));
376                        return false;
377                }
378               
379                if(document.getElementById("check_all_msg").checked){
380                        var nm_box = new Array;
381                        for(var i=0; i < EsearchE.all_boxes.length; i++){
382                                nm_box[i] = EsearchE.all_boxes[i] + fields;
383                        }
384                }else{
385                        var nm_box = new Array;
386                        var sel_combo = document.getElementById("sel_search_nm_box1");
387                        if( sel_combo.options.length <= 0){
388                                alert("Defina quais as caixas para busca!");
389                                return false;
390                        }
391                       
392                        for(var i=0; i < sel_combo.options.length; i++){
393                                sel_combo.options[i].selected = true;
394                        }
395                        for(var i=0; i < sel_combo.options.length; i++){
396                                if(sel_combo.options[i].selected == true){
397                                        nm_box[nm_box.length] = sel_combo.options[i].value + fields;
398                                }
399                        }
400                }
401                var handler = function(data){
402                        if(data == "none"){alert(get_lang("None result was found."));}
403                        else if(data == "many results"){alert(get_lang("More than %1 results. Please, try to refine your search.",50));}
404                //      else{EsearchE.mount_result_box(data);}
405                        else{EsearchE.mount_result(data);}
406                }
407                var args   = "$this.imap_functions.search_msg";
408                var params = "condition=" + nm_box;
409                cExecute(args,handler,params);
410        }
411        // clean;
412        searchE.prototype.func_clean = function(){
413                Element('num_search_results').innerHTML = '';
414                // Limpa os campos;
415                for(var i=0; i < this.fields.length; i++){
416                        if(Element("txt" + this.fields[i]) != null){Element("txt" + this.fields[i]).value = "";}
417                }                       
418            if(Element("check_all_msg") != null){Element("check_all_msg").checked = false;}
419
420            EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
421
422            // Limpa a select;         
423            if(document.getElementById("sel_search_nm_box1") != null){
424                    var sel = document.getElementById("sel_search_nm_box1");
425                    if(sel.length > 0){
426                        for(var i=0; i< sel.options.length; i++){
427                                sel.options[i] = null;
428                                i--;
429                        }
430                    }
431                }           
432            if(document.getElementById("table_result") != null){
433                        var cl = document.getElementById("table_result");
434                        cl.parentNode.removeChild(cl);
435                }
436        }
437        // close
438        searchE.prototype.func_close = function(type){
439                Element('num_search_results').innerHTML = '';
440                var _this = this;
441                _this.name_box_search = "";
442                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
443                _this.type = type;
444                _this.searchW['window_search'].close();
445        }
446        // Monta a janela em tela;
447        searchE.prototype.showWindow = function(div){
448
449                if(!this.searchW[div.id]) {
450                        div.style.width = "660px";
451                        div.style.height = "400px";
452                        div.style.visibility = "hidden";
453                        div.style.position = "absolute";
454                        div.style.zIndex = "10003";                     
455                        var title = ':: Pesquisar ::';
456                        var wHeight = div.offsetHeight + "px";
457                        var wWidth =  div.offsetWidth   + "px";
458
459                        win = new dJSWin({                     
460                                id: 'ccList'+div.id,
461                                content_id: div.id,
462                                width: wWidth,
463                                height: wHeight,
464                                title_color: '#3978d6',
465                                bg_color: '#eee',
466                                title: title,                                           
467                                title_text_color: 'white',
468                                button_y_img: '../phpgwapi/images/win_min.gif',
469                                button_x_img: '../phpgwapi/images/winclose.gif',
470                                border: true });
471                        this.searchW[div.id] = win;
472                        win.draw();
473                }else{
474                        var _this = this;
475                        win = this.searchW[div.id];
476                        if((_this.type == "close" && win.state == 0) || win.state == 2){EsearchE.func_clean();}
477                        win.draw();
478                }
479                win.open();     
480        }
481// Cria o objeto
482        var EsearchE;
483        EsearchE = new searchE();
Note: See TracBrowser for help on using the repository browser.