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

Revision 3380, 39.0 KB checked in by brunocosta, 14 years ago (diff)

Ticket #1312 - Restaurada a busca no arquivamento local com códifo da 2.1

  • Property svn:eol-style set to native
  • Property svn:executable set to *
RevLine 
[2]1/**************************************************************************\
[3380]2 Início
[2]3\**************************************************************************/
[832]4        function searchE()
5        {
[2]6                this.searchW   = new Array;
7                this.name_box_search = "";
8                this.all_boxes = new Array;
9                this.type = "";
[1622]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");
[2]13        }
[3380]14
[2]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";
[3380]24                        document.body.appendChild(form_search);
[2]25                }
[3380]26
[2]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";
[3380]34                        div_form_search.style.borderStyle = "outset";
35                        div_form_search.style.borderColor = "black";
36                        div_form_search.style.borderWidth = "1px";
[1622]37                        div_form_search.style.width = "784px";
38                        div_form_search.style.height = "418px";
[2]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);
[156]43                        form_search.appendChild(div_form_search);
[2]44
[1622]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
[3380]68                }
69
[2]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";
[1622]74                                div_button_search.style.marginLeft = "430px";
[2]75                                div_button_search.style.top = "223px";
[1622]76                                div_button_search.style.width = "350px";
[2]77                                div_button_search.style.height = "25px";
[1622]78                                div_button_search.innerHTML = "<table style='width: 100%;' border='0' cellpadding='0' cellspacing='0' align='center'>"+
[2]79                                                                                          "<tr>"+
[1622]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>"+
[2]83                                                                                          "</tr>"+
84                                                                                          "</table>";
85                                form_search.appendChild(div_button_search);
86                }
[3380]87
[2]88                if(!Element("table_layer")){
[67]89                        var table_layer    = "";
[2]90                }
[3380]91
[67]92                if(value == "")
[69]93                        EsearchE.showWindow(Element("window_search"));
[3380]94
[2]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        }
[3380]105
106        searchE.validate_date_field = function(date)
107        {
108
109        }
110
[2]111        //Form
112        searchE.prototype.mount_form = function(value){
113                var form_sch = document.createElement("FORM");
114                form_sch.id  = "form_sch";
[1415]115
[3380]116                form_sch.innerHTML =  '<fieldset style="width:400px; text-align:right; padding: 5px; position:absolute;">'
[1415]117                                                        + '     <legend>'+get_lang('Inform your search in the text fields')+'</legend>'
118                                                        + '     <label>'+get_lang("From")+':</label>'
[1622]119                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_de" size="39">'
[1415]120                                                        + '     <br style="margin-bottom:15px"/>'
121                                                        + '     <label>'+get_lang('To')+':</label>'
[1622]122                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_para" size="39">'
[1415]123                                                        + '     <br style="margin-bottom:15px"/>'
124                                                        + '     <label>'+get_lang('Cc')+':</label>'
[1622]125                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_cc" size="39">'
[1415]126                                                        + '     <br style="margin-bottom:15px"/>'
127                                                        + '     <label>'+get_lang('Subject')+':</label>'
[1622]128                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_ass" size="39">'
[1415]129                                                        + '     <br style="margin-bottom:15px"/>'
130                                                        + '     <label>'+get_lang('Message body')+':</label>'
[3380]131                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_body" size="39">'
[1622]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
[3380]172                                                        + '     <br style="margin-bottom:60px"/>'
[1415]173                                                        + '</fieldset>'
[1622]174                                                        + '<fieldset style="width:350px; padding: 5px; position:absolute; margin-left: 414px">'
[1415]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>'
[3380]182                                                        + ' <div style="float:left;">'
[1415]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>';
[3380]189
[2]190                return form_sch;
191        }
192
193        // Pastas;
194        searchE.prototype.mount_folders = function(){
195                connector.loadScript("TreeS");
196
[69]197                if( Element("div_folders_search") == null){
[2]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 = "";
[69]208                                var dest_div = Element("folders");
[2]209                                dest_div.appendChild(div_folders);
[3380]210                }
[2]211                ttree.make_tree(folders,"div_folders_search","_folders_tree_search","","","","");
212        }
[3380]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;
[3223]226        }
[3380]227        function date_comp_reverse(a,b)
228        {
229                return date_comp(b,a);
230        }
[156]231
[3380]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)
[3223]325                {
[3380]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] != "")
[3223]362                        {
[3380]363                                nw_array[cont] = var_tmp[i];
364                                cont++;
[3223]365                        }
366                }
367
[3380]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                }
[3018]375
[320]376                numBox++;
377                var border_id = create_border(get_lang("Search Results"), "search_" + numBox);
[1604]378                if (!border_id)
379                {
380                    return;
381                }
[832]382                currentTab = border_id;
[1622]383                openTab.content_id[currentTab] = Element('content_id_search_' + numBox);
[3380]384                openTab.type[currentTab] = 1;
[2]385                var table = document.createElement("TABLE");
[320]386                table.id    = "table_resultsearch_" + numBox;
[271]387                table.frame = "void";
388                table.rules = "rows";
389                table.cellPadding = "0";
390                table.cellSpacing = "0";
[667]391                table.className = "table_box";
[72]392
[2]393                var tbody = document.createElement("TBODY");
[832]394                tbody.id    = "tbody_box_" + numBox;
[3380]395
396                for( var i=0; i < nw_array.length; i++){
[2]397                        var tr = document.createElement("TR");
[645]398                        tr.style.height = preferences.line_height;
[1339]399
[3380]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;
427
[1339]428                        // Keep the two lines together please
429                        tr.setAttribute('name',mailbox);
430                        tr.name = mailbox;
431
[3380]432                        if (aux[5].match("U"))
[976]433                                add_className(tr,'tr_msg_unread');
434                        add_className(tr, i%2 != 0 ? 'tr_msg_read2' : 'tr_msg_read');
[1000]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++)
[645]437                        {
[832]438                                var td = document.createElement("TD");
[645]439                                if (j == 0)
440                                {
441                                        td.style.width = "1%";
[3380]442                                        var td1 = '<input type="checkbox" id="'+ border_id +'_check_box_message_'+uid_msg+'"></input>';
443
[645]444                                }
445                                if (j == 1)
446                                {
447                                        td.style.width = "2%";
[3380]448                                        if (aux[6].match('T'))
[832]449                                        {
[3380]450                                                attachNum = parseInt(aux[6].substr(aux[6].indexOf('T')+1));
[832]451                                                td1 = "<img src='templates/"+template+"/images/clip.gif' title='"+attachNum +' '+ get_lang('attachment(s)')+"'>";
452                                        }
453                                        else
454                                                td1 = '';
[645]455                                }
456                                if (j == 2)
457                                {
458                                        td.style.width = "1%";
459                                        td.id = "td_message_answered_"+uid_msg;
[3380]460                                        if (aux[6].match('X'))
[832]461                                                td1 = '<img src=templates/'+template+'/images/forwarded.gif title=Forwarded>';
462                                        else
[3380]463                                                if (aux[6].match('A'))
[832]464                                                        td1 = '<img src=templates/'+template+'/images/answered.gif>';
465                                                else
466                                                        td1 = '';
[645]467                                }
468                                if (j == 3)
469                                {
470                                        td.style.width = "1%";
471                                        td.id = "td_message_important_"+uid_msg;
[3380]472                                        if (aux[6].match("F"))
[832]473                                        {
[976]474                                                add_className(tr, 'flagged_msg');
475                                                td.style.background = "url(templates/"+template+"/images/important.gif) no-repeat center";
[832]476                                        }
477                                        else
478                                                td1 = '';
[645]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                                {
[3380]488                                        td.style.width = "20%";
[832]489                                        td.onclick = _onclick;
[3380]490                                        var nm_box = aux[0].split(cyrus_delimiter);
[645]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";
[3380]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                                        }
[1339]511
[832]512                                        if(proxy_mensagens.is_local_folder(td1)) {
513                                                var td1 = this.aux_local_folder_display(td1);
[689]514                                        }
[645]515                                }
516                                if( j == 6)
517                                {
[3380]518                                        if (aux[1].length > 20)
519                                                aux[1] = aux[1].substr(0,20) + "...";
[832]520                                        td.style.width = "20%";
521                                        td.onclick = _onclick;
522                                        td.setAttribute("NoWrap","true");
523                                        td.style.overflow = "hidden";
[3380]524                                        var td1  =  '<div style="width:100%;overflow:hidden">'+aux[1]+"</div>";
[645]525                                }
526                                if( j == 7)
527                                {
528                                        var subject_encode = url_encode(subject);
529                                        if (! subject_encode)
[3380]530                                                aux[2] = get_lang("no subject") + "...";
531                                        if ( subject.length > 45)
532                                                aux[2] = subject.substr(0,45) + "...";
[832]533                                        td.style.width = "35%";
534                                        td.onclick = _onclick;
535                                        td.setAttribute("NoWrap","true");
536                                        td.style.overflow = "hidden";
[3380]537                                        var td1  = aux[2];
[2]538                                }
[645]539                                if( j == 8)
540                                {
[3380]541                                        td.style.width = "13%";
[645]542                                        td.align = "center";
[832]543                                        td.onclick = _onclick;
[3380]544                                        var td1  = aux[4];
[645]545                                }
546                                if( j == 9)
547                                {
548                                        td.style.width = "10%";
549                                        td.align = "center";
[832]550                                        td.onclick = _onclick;
[3380]551                                        td.setAttribute("NoWrap","true");
552                                        var td1  = aux[5];
[645]553                                }
554                                if (j == 10)
555                                {
[3380]556                                        if (aux[6].match("U"))
[976]557                                                add_className(tr, 'tr_msg_unread');
[3380]558                                        if (aux[7].match("F"))
[976]559                                                add_className(tr, 'flagged_msg');
[645]560                                        var td1 = '';
561                                }
562                                td.innerHTML = td1;
563                                tr.appendChild(td);
[2]564                        }
[569]565                        aux.splice(0,(aux.length));
[271]566
[3380]567                _dragArea.makeDragged(tr, uid_msg, subject, true, mailbox_id);
[271]568                tbody.appendChild(tr);
[2]569                }
570                table.appendChild(tbody);
[832]571
572        var content_search =  Element('content_id_search_' + numBox);
[163]573        var div_scroll_result = document.createElement("DIV");
[320]574        div_scroll_result.id = "divScrollMain_"+numBox;
[163]575        div_scroll_result.style.overflow = "auto";
[3380]576
[67]577                if(is_ie)
[72]578                        Element("border_table").width = "99.5%";
[3380]579
[832]580                // Put header
[67]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";
[156]587                td_element0 = document.createElement("TD");
[3380]588                td_element0.setAttribute("width", "7%");
[156]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";
[163]593                chk_box_element.onclick = function(){select_all_search_messages(this.checked,content_search.id);};
[156]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)
[832]599                                        delete_msgs(current_folder,'selected','null');
[156]600                        }
601                        else
602                        {
603                                if ((e.keyCode) == 46)
[832]604                                        delete_msgs(current_folder,'selected','null');
[156]605                        }
606                };
[3380]607
[156]608                td_element0.appendChild(chk_box_element);
[67]609                td_element1 = document.createElement("TD");
[163]610                td_element1.setAttribute("width", "20%");
[67]611                td_element1.align = "left";
[832]612                if (sort_type == 'SORTBOX')
613                {
[3380]614                        td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX_REVERSE'); delete_border(border_id,false);};
[832]615                        td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
616                }
617                else
618                {
[3380]619                        td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX'); delete_border(border_id,false);};
[832]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                }
[67]625                td_element2 = document.createElement("TD");
[73]626                td_element2.setAttribute("width", "20%");
[67]627                td_element2.align = "left";
[832]628                if (sort_type == 'SORTWHO')
629                {
[3380]630                        td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO_REVERSE'); delete_border(border_id,false);};
[832]631                        td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
632                }
633                else
634                {
[3380]635                        td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO'); delete_border(border_id,false);};
[832]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                }
[67]641                td_element3 = document.createElement("TD");
[645]642                td_element3.setAttribute("width", "35%");
[67]643                td_element3.align = "left";
[832]644                if (sort_type == 'SORTSUBJECT')
645                {
[3380]646                        td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT_REVERSE'); delete_border(border_id,false);};
[832]647                        td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
648                }
649                else
650                {
[3380]651                        td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT'); delete_border(border_id,false);};
[832]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                }
[67]657                td_element4 = document.createElement("TD");
[3380]658                td_element4.setAttribute("width", "12%");
[67]659                td_element4.align = "center";
[832]660                if (sort_type == 'SORTDATE')
661                {
[3380]662                        td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE_REVERSE'); delete_border(border_id,false);};
[832]663                        td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
664                }
665                else
666                {
[3380]667                        td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE'); delete_border(border_id,false);};
[832]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                }
[67]673                td_element5 = document.createElement("TD");
[3380]674                td_element5.setAttribute("width", "8%");
[72]675                td_element5.align = "center";
[832]676                if (sort_type == 'SORTSIZE')
677                {
[3380]678                        td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE_REVERSE'); delete_border(border_id,false);};
[832]679                        td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
680                }
681                else
682                {
[3380]683                        td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE'); delete_border(border_id,false);};
[832]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                }
[156]689                tr_element.appendChild(td_element0);
[67]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);
[163]697                content_search.appendChild(table_element);
[1121]698                /*end of "put header"*/
[3380]699
[1121]700                if (!expresso_offline) {
[1294]701/*                      var span_options = document.createElement("SPAN");
[3380]702                        if (span_options)
[1121]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") +
[1294]710                                '</span>';*/
[1121]711                        div_scroll_result.appendChild(table);
712                        content_search.appendChild(div_scroll_result);
[3380]713                        /*if (span_options)
[1294]714                                content_search.appendChild(span_options);*/
[1121]715                }
716                else {
717                        div_scroll_result.appendChild(table);
718                        content_search.appendChild(div_scroll_result);
719                }
[3223]720                resizeWindow();
[2]721        }
722
[3380]723        searchE.prototype.open_msg = function(mailbox_id, uid_msg, subject){
[2]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"));}
[673]727                        //set_msg_as_read(msgs_to_set[i], false);
[2]728                }
[3380]729                proxy_mensagens.get_msg(uid_msg,mailbox_id,false,handler_get_msg);
[689]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);*/
[2]733
734        }
735
736        // Adiciona caixas postais na busca;
737        searchE.prototype.add_mailboxes = function(){
[69]738                var sel = Element("sel_search_nm_box1");
[689]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{
[3380]747                                name_box_def = get_lang("Inbox");
[689]748                        }
[2]749                }
[689]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                }
[2]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                }
[96]766                var opt = new Option(lang_folder(name_box_def),this.name_box_search,false,true);
[2]767                sel[sel.length] = opt;
768        }
769        // Remove as caixas postais na busca;
770        searchE.prototype.del_mailboxes = function(){
[69]771                var sel = Element("sel_search_nm_box1");
[2]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                }
[3380]780
[2]781        }
782        // todas as caixas
783        searchE.prototype.all_mailboxes = function(){
[69]784                var value = Element("check_all_msg").checked;
[2]785                var cont = parseInt(0);
786                if(value){
787                        if(EsearchE.all_boxes.length > 0){
[3380]788                                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
[2]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;
[69]803                        if(trim(Element("txt_ass").value) != ""){
[3380]804                                fields += "SUBJECT " +  "<=>" +encodeURIComponent(Element("txt_ass").value) + "##";
[2]805                        }
[69]806                        if(trim(Element("txt_body").value) != ""){
[3380]807                                fields += "BODY " + "<=>" + encodeURIComponent(Element("txt_body").value) + "##";
[2]808                        }
[69]809                        if(trim(Element("txt_de").value) != ""){
[3380]810                                fields += "FROM " + "<=>" + encodeURIComponent(Element("txt_de").value) + "##";
[2]811                        }
[69]812                        if(trim(Element("txt_para").value) != ""){
[3380]813                                fields += "TO " + "<=>" + encodeURIComponent(Element("txt_para").value) + "##";
[2]814                        }
[69]815                        if(trim(Element("txt_cc").value) != ""){
[3380]816                                fields += "CC " + "<=>" + encodeURIComponent(Element("txt_cc").value) + "##";
[2]817                        }
[1622]818                        if (trim(Element("since_date").value) != ""){
819                            if (validate_date(Element("since_date").value))
820                            {
[3380]821                                fields += "SINCE " + "<=>" + encodeURIComponent(Element("since_date").value) + "##";
[1622]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                            {
[3380]832                                fields += "BEFORE " + "<=>" + encodeURIComponent(Element("before_date").value) + "##";
[1622]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                            {
[3380]843                                fields += "ON " + "<=>" + encodeURIComponent(Element("on_date").value) + "##";
[1622]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) != ""){
[3380]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                            //}
[1622]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                        }
[2]896                        if(value) {
[3380]897                                fields = "##ALL " +  "<=>" +encodeURIComponent(value) + "##";
[2]898                        }
[69]899
[372]900                if(fields == "##"){
[128]901                        alert(get_lang("Define some search parameters!"));
[2]902                        return false;
903                }
[689]904                var local_folders = new Array();
905                var temp;
[3380]906
[69]907                if(Element("check_all_msg").checked){
[689]908                        this.all_mailboxes();
[2]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                        }
[689]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                        }
[2]919                }else{
920                        var nm_box = new Array;
[69]921                        var sel_combo = Element("sel_search_nm_box1");
[2]922                        if( sel_combo.options.length <= 0){
[118]923                                alert(get_lang("Define the boxes to search!"));
[2]924                                return false;
925                        }
[3380]926
[2]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){
[689]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));
[2]936                                }
937                        }
938                }
939                var handler = function(data){
[3380]940                        var tmp;
941                        var countTmp= new Array();
[1614]942
[3380]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
[2]963                }
964                var args   = "$this.imap_functions.search_msg";
[3380]965                var params = "condition=" + nm_box;
[1121]966                if(expresso_offline)
967                        handler('none');
968                else
969                        cExecute(args,handler,params);
[2]970        }
971        // clean;
972        searchE.prototype.func_clean = function(){
973                // Limpa os campos;
[3380]974                for(var i=0; i < this.txtfields.length; i++){
975                        if(Element(this.txtfields[i]) != null){Element(this.txtfields[i]).value = "";}
976                }
[1622]977
[3380]978                for(i = 0; i < this.selectFields.length; i++)
[1622]979                {
[3380]980                    if (Element(this.selectFields[i]))
981                    {
982                        Element(this.selectFields[i]).selectedIndex = 0;
983                    }
[1622]984                }
[2]985            if(Element("check_all_msg") != null){Element("check_all_msg").checked = false;}
986
987            EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
[75]988                EsearchE.del_mailboxes();
[69]989        }
[2]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]) {
[1622]1002                        div.style.width = "804px";
1003                        div.style.height = "440px";
[2]1004                        div.style.visibility = "hidden";
1005                        div.style.position = "absolute";
[832]1006                        div.style.zIndex = "10003";
[128]1007                        var title = ":: "+ get_lang("Search")+" ::";
[2]1008                        var wHeight = div.offsetHeight + "px";
1009                        var wWidth =  div.offsetWidth   + "px";
[832]1010
1011                        win = new dJSWin({
[2]1012                                id: 'ccList'+div.id,
1013                                content_id: div.id,
1014                                width: wWidth,
1015                                height: wHeight,
1016                                title_color: '#3978d6',
1017                                bg_color: '#eee',
[832]1018                                title: title,
[2]1019                                title_text_color: 'white',
1020                                button_y_img: '../phpgwapi/images/win_min.gif',
1021                                button_x_img: '../phpgwapi/images/winclose.gif',
[3380]1022                                border: true});
[2]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        }
[3380]1033
[689]1034        searchE.prototype.aux_local_folder_display = function(folder) {
[1121]1035                if(!expresso_offline)
1036                        return "(Local) " + lang_folder(folder.substr(6));
1037                else
1038                        return lang_folder(folder.substr(6));
[689]1039        }
[3380]1040
[2]1041// Cria o objeto
1042        var EsearchE;
[569]1043        EsearchE = new searchE();
Note: See TracBrowser for help on using the repository browser.