source: trunk/expressoMail1_2/js/jscode/search.js @ 3125

Revision 3125, 35.4 KB checked in by amuller, 14 years ago (diff)

Ticket #1059 - Arrumando problema ao buscar email

Line 
1/**************************************************************************\
2 Início
3\**************************************************************************/
4        function searchE()
5        {
6                this.searchW   = new Array;
7                this.name_box_search = "";
8                this.all_boxes = new Array;
9                this.type = "";
10                this.txtfields = new Array("txt_ass","txt_de","txt_body","txt_para","txt_cc","txt_cco",
11                                        "since_date", "before_date", "on_date");
12                this.selectFields = new Array("flagged", "seen", "answered", "recent");
13        }
14       
15        //Monta os forms dentro da janela;
16        searchE.prototype.showForms = function(value){
17                // Principal
18                if(!Element("window_search")) {
19                        var form_search = document.createElement("DIV");
20                        form_search.style.visibility = 'hidden';
21                        form_search.style.top = '0px';
22                        form_search.style.left = '0px';
23                        form_search.id = "window_search";
24                        document.body.appendChild(form_search);                 
25                }
26               
27                // Pesquisa
28                if(!Element("div_form_search")){
29                        var div_form_search = document.createElement("DIV");
30                        div_form_search.id = "div_form_search";
31                        div_form_search.style.position = "absolute";
32                        div_form_search.style.left = "10px";
33                        div_form_search.style.top  = "10px";
34                        div_form_search.style.width = "784px";
35                        div_form_search.style.height = "418px";
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                        try{
42                                Calendar._TT['WEEKEND'] = '0,6'; // hack
43                                Calendar._TT['DAY_FIRST'] = 'Mostrar %s primeiro';
44                                Calendar.setup({
45                                        inputField  : 'since_date',
46                                        button      : 'since_date-trigger',
47                                        ifFormat    : '%d/%m/%Y',
48                                        daFormat    : '%d/%m/%Y'
49                                        });
50
51                                        Calendar.setup({
52                                        inputField  : 'before_date',
53                                        button      : 'before_date-trigger',
54                                        ifFormat    : '%d/%m/%Y',
55                                        daFormat    : '%d/%m/%Y'
56                                        });
57
58                                        Calendar.setup({
59                                        inputField  : 'on_date',
60                                        button      : 'on_date-trigger',
61                                        ifFormat    : '%d/%m/%Y',
62                                        daFormat    : '%d/%m/%Y'
63                                        });
64                        }catch(e){
65                                expresso.connector.loadScript('../../calendar/js/calendar-setup');
66                        }
67
68                }       
69               
70                if(!Element("div_button_search")){
71                        var div_button_search    = document.createElement("DIV");
72                                div_button_search.id = "div_button_search";
73                                div_button_search.style.position = "absolute";
74                                div_button_search.style.marginLeft = "430px";
75                                div_button_search.style.top = "223px";
76                                div_button_search.style.width = "350px";
77                                div_button_search.style.height = "25px";
78                                div_button_search.innerHTML = "<table style='width: 100%;' border='0' cellpadding='0' cellspacing='0' align='center'>"+
79                                                                                          "<tr>"+
80                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Search') + " onclick='EsearchE.func_search()'></td>"+
81                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Clean') + " onclick='EsearchE.func_clean()'></td>"+
82                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Close') + " onclick='EsearchE.func_close(\"hidden\")'></td>"+
83                                                                                          "</tr>"+
84                                                                                          "</table>";
85                                form_search.appendChild(div_button_search);
86                }
87               
88                if(!Element("table_layer")){
89                        var table_layer    = "";
90                }
91               
92                if(value == "")
93                        EsearchE.showWindow(Element("window_search"));
94       
95                // Cria as caixas postais;
96                EsearchE.mount_folders();
97
98                if(value){
99                        Element("check_all_msg").checked = true;
100                        EsearchE.all_mailboxes();
101                        EsearchE.func_search(value);
102                }
103
104        }
105       
106        //Form
107        searchE.prototype.mount_form = function(value){
108                var form_sch = document.createElement("FORM");
109                form_sch.id  = "form_sch";
110
111                form_sch.innerHTML =  '<fieldset style="width:400px; text-align:right; padding: 5px; position:absolute;">'
112                                                        + '     <legend>'+get_lang('Inform your search in the text fields')+'</legend>'
113                                                        + '     <label>'+get_lang("From")+':</label>'
114                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_de" size="39">'
115                                                        + '     <br style="margin-bottom:15px"/>'
116                                                        + '     <label>'+get_lang('To')+':</label>'
117                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_para" size="39">'
118                                                        + '     <br style="margin-bottom:15px"/>'
119                                                        + '     <label>'+get_lang('Cc')+':</label>'
120                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_cc" size="39">'
121                                                        + '     <br style="margin-bottom:15px"/>'
122                                                        + '     <label>'+get_lang('Subject')+':</label>'
123                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_ass" size="39">'
124                                                        + '     <br style="margin-bottom:15px"/>'
125                                                        + '     <label>'+get_lang('Message body')+':</label>'
126                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_body" size="39">'
127
128                                                        + '     <br style="margin-bottom:30px"/>'
129                                                        + '     <label>'+get_lang("Since Date")+':</label>'
130                                                        + '     <input style="margin-left: 6px;" type="text" id="since_date" size="8">'
131                                                        + '     <img id="since_date-trigger" src="/phpgwapi/templates/default/images/datepopup.gif" title="'+get_lang("Select Date")+'" style="cursor:pointer; cursor:hand;"/>'
132                                                        + '     <label style="margin-left: 20px;">'+get_lang('Before Date')+':</label>'
133                                                        + '     <input style="margin-left: 6px;" type="text" id="before_date" size="8">'
134                                                        + '     <img id="before_date-trigger" src="/phpgwapi/templates/default/images/datepopup.gif" title="'+get_lang("Select Date")+'" style="cursor:pointer; cursor:hand;"/>'
135                                                        + '     <br style="margin-bottom:15px"/>'
136
137                                                        + '     <label>'+get_lang('On Date')+':</label>'
138                                                        + '     <input style="margin-left: 6px;" type="text" id="on_date" size="8">'
139                                                        + '     <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>'
140                                                        + '     <br style="margin-bottom:30px"/>'
141
142                                                        + '     <label>'+get_lang('Flags')+':</label>'
143                                                        + '     <select style="width:15em; margin-left: 6px" name="flagged" id="flagged">'
144                                                        + '     <option value=""/>'
145                                                        + '     <option value="FLAGGED">'+ get_lang("Flagged") +'</option>'
146                                                        + '     <option value="UNFLAGGED">'+ get_lang("Unflagged") +'</option>'
147                                                        + '     </select>'
148                                                        + '     <br style="margin-bottom:15px"/>'
149                                                        + '     <select style="width:15em;" name="seen" id="seen">'
150                                                        + '     <option value=""/>'
151                                                        + '     <option value="SEEN">'+ get_lang("Seen") +'</option>'
152                                                        + '     <option value="UNSEEN">'+ get_lang("Unseen") +'</option>'
153                                                        + '     </select>'
154                                                        + '     <br style="margin-bottom:15px"/>'
155                                                        + '     <select style="width:15em;" name="answered" id="answered">'
156                                                        + '     <option value=""/>'
157                                                        + '     <option value="ANSWERED">'+ get_lang('Answered/Forwarded') +'</option>'
158                                                        + '     <option value="UNANSWERED">'+ get_lang('Unanswered/Unforwarded') +'</option>'
159                                                        + '     </select>'
160                                                        + '     <br style="margin-bottom:15px"/>'
161                                                        + '     <select style="width:15em;" name="recent" id="recent">'
162                                                        + '     <option value=""/>'
163                                                        + '     <option value="RECENT">'+ get_lang('Recent') +'</option>'
164                                                        + '     <option value="OLD">'+ get_lang('Old') +'</option>'
165                                                        + '     </select>'
166
167                                                        + '     <br style="margin-bottom:60px"/>'
168                                                        + '</fieldset>'
169                                                        + '<fieldset style="width:350px; padding: 5px; position:absolute; margin-left: 414px">'
170                                                        + '     <legend>'+get_lang('Search the messages in these folders')+'</legend>'
171                                                        + '     <div id="folders" style="width:160px; height:150px;float:left;margin-bottom:10px;"></div>'
172                                                        + '     <div style="float:left;height:100px;padding-top:50px;margin: 0 3px;">'
173                                                        + '             <input type="button" id="incluir" name="incluir" value=">>" onclick="EsearchE.add_mailboxes()">'
174                                                        + '             <br style="margin-bottom:15px">'
175                                                        + '             <input type="button" id="excluir" name="excluir" value="<<" onclick="EsearchE.del_mailboxes()">'
176                                                        + '     </div>'
177                                                        + ' <div style="float:left;">' 
178                                                        + '      <select multiple id="sel_search_nm_box1" name="sel_search_nm_box1" style="width:140px;height:150px;"></select>'
179                                                        + ' </div>'
180                                                        + '     <br clear="both">'
181                                                        + '     <input type="checkBox" id="check_all_msg" name="check_all_msg" onclick="EsearchE.all_mailboxes()">'
182                                                        + '     <b>'+get_lang('In all the folders')+'</b>'
183                                                        + '</fieldset>';
184               
185                return form_sch;
186        }
187
188        // Pastas;
189        searchE.prototype.mount_folders = function(){
190                expresso.connector.loadScript("jscode/TreeS");
191
192                if( Element("div_folders_search") == null){
193                        var div_folders = document.createElement("DIV");
194                                div_folders.id = "div_folders_search";
195                                div_folders.style.width = "155px";
196                                div_folders.style.height = "152px";
197                                div_folders.style.borderStyle = "outset";
198                                div_folders.style.borderColor = "black";
199                                div_folders.style.borderWidth = "1px";
200                                div_folders.style.background  = "#F7F7F7";
201                                div_folders.style.overflow = "auto";
202                                div_folders.innerHTML = "";
203                                var dest_div = Element("folders");
204                                dest_div.appendChild(div_folders);
205                }               
206                ttree.make_tree(folders,"div_folders_search","_folders_tree_search","","","","");
207        }
208
209        // Form resultado
210        searchE.prototype.mount_result = function(data,sort_type){
211                if (data == undefined)
212                        return;
213                var cont = parseInt(0);
214                //This func returns the comparison between criterias
215                var date_comp = function(a,b){ return a.udate > b.udate;};
216                var date_comp_reverse = function(a,b){ return date_comp(b,a);};
217                var box_comp = function(a,b){   return a.boxname > b.boxname; }
218                var box_comp_reverse = function(a,b){   return box_comp(b,a); }
219                var who_comp = function(a,b){ return a.from > b.from; }
220                var who_comp_reverse = function(a,b){ return who_comp(b,a); }
221                var subject_comp = function(a,b){ return a.subject > b.subject; }
222                var subject_comp_reverse = function(a,b){ return subject_comp(b,a); }
223                var size_comp = function(a,b){ return a.size > b.size; }
224                var size_comp_reverse = function(a,b){ return size_comp(b,a); }
225                switch (sort_type)
226                {
227                        case 'SORTDATE':
228                                data.sort(date_comp);
229                                break;
230                        case 'SORTDATE_REVERSE':
231                                data.sort(date_comp_reverse);
232                                break;
233                        case 'SORTBOX':
234                                data.sort(box_comp);
235                                break;
236                        case 'SORTBOX_REVERSE':
237                                data.sort(box_comp_reverse);
238                                break;
239                        case 'SORTSUBJECT':
240                                data.sort(subject_comp);
241                                break;
242                        case 'SORTSUBJECT_REVERSE':
243                                data.sort(subject_comp_reverse);
244                                break;
245                        case 'SORTWHO':
246                                data.sort(who_comp);
247                                break;
248                        case 'SORTWHO_REVERSE':
249                                data.sort(who_comp_reverse);
250                                break;
251                        case 'SORTSIZE':
252                                data.sort(size_comp);
253                                break;
254                        case 'SORTSIZE_REVERSE':
255                                data.sort(size_comp_reverse);
256                                break;
257                        default:
258                                var showMsg = 1;
259                }
260
261                if( (preferences.search_result_number != '65536') && (data.length > 0) && (data.length >= preferences.search_result_number) ){
262                    data.length = preferences.search_result_number;
263                    write_msg(get_lang("More than %1 results. Please, try to refine your search.",preferences.search_result_number));
264                }
265                else {
266                        write_msg(data.length + " "+ get_lang('results found'));
267                }
268
269                numBox++;
270                var border_id = create_border(get_lang("Search Results"), "search_" + numBox);
271                if (!border_id)
272                {
273                    return;
274                }
275                currentTab = border_id;
276                openTab.content_id[currentTab] = Element('content_id_search_' + numBox);
277                openTab.type[currentTab] = 1;
278                var table = document.createElement("TABLE");
279                table.id    = "table_resultsearch_" + numBox;
280                table.frame = "void";
281                table.rules = "rows";
282                table.cellPadding = "0";
283                table.cellSpacing = "0";
284                table.className = "table_box";
285
286                var tbody = document.createElement("TBODY");
287                tbody.id    = "tbody_box_" + numBox;
288
289                for( var i=0; i < data.length; i++){
290                        var tr = document.createElement("TR");
291                        tr.style.height = preferences.line_height;
292
293                        var aux = data[i];
294                        var mailbox = aux.boxname;
295                        var uid_msg = aux.uid;
296                        var subject = aux.subject;
297                        tr.id = uid_msg+"_s"+global_search;
298
299                        // Keep the two lines together please
300                        tr.setAttribute('name',mailbox);
301                        tr.name = mailbox;
302
303                        if (aux.flag.match("U"))
304                                add_className(tr,'tr_msg_unread');
305                        add_className(tr, i%2 != 0 ? 'tr_msg_read2' : 'tr_msg_read');
306            var _onclick = function () { proxy_mensagens.get_msg(this.parentNode.id,url_encode(this.parentNode.getAttribute('name')),false,show_msg);};
307            for(var j=0 ; j < 10 ; j++)
308                        {
309                                var td = document.createElement("TD");
310                                if (j == 0)
311                                {
312                                        td.style.width = "1%";
313                                        var td1 = '<input type="checkbox" id="check_box_message_'+uid_msg+'"></input>';
314                                       
315                                }
316                                if (j == 1)
317                                {
318                                        td.style.width = "2%";
319                                        if (aux.flag.match('T'))
320                                        {
321                                                attachNum = parseInt(aux.flag.substr(aux.flag.indexOf('T')+1));
322                                                td1 = "<img src='templates/"+template+"/images/clip.gif' title='"+attachNum +' '+ get_lang('attachment(s)')+"'>";
323                                        }
324                                        else
325                                                td1 = '';
326                                }
327                                if (j == 2)
328                                {
329                                        td.style.width = "1%";
330                                        td.id = "td_message_answered_"+uid_msg;
331                                        if (aux.flag.match('X'))
332                                                td1 = '<img src=templates/'+template+'/images/forwarded.gif title=Forwarded>';
333                                        else
334                                                if (aux.flag.match('A'))
335                                                        td1 = '<img src=templates/'+template+'/images/answered.gif>';
336                                                else
337                                                        td1 = '';
338                                }
339                                if (j == 3)
340                                {
341                                        td.style.width = "1%";
342                                        td.id = "td_message_important_"+uid_msg;
343                                        if (aux.flag.match("F"))
344                                        {
345                                                add_className(tr, 'flagged_msg');
346                                                td.style.background = "url(templates/"+template+"/images/important.gif) no-repeat center";
347                                        }
348                                        else
349                                                td1 = '';
350                                }
351                                if (j == 4)
352                                {
353                                        td.style.width = "1%";
354                                        td.id = "td_message_sent_"+uid_msg;
355                                        td1 = '';
356                                }
357                                if (j == 5)
358                                {
359                                        td.style.width = "14%";
360                                        td.onclick = _onclick;
361                                        var nm_box = aux.boxname.split(cyrus_delimiter);
362                                        var td1 = nm_box.pop();
363                                        td.setAttribute("NoWrap","true");
364                                        td.style.overflow = "hidden";
365                                        td.style.color = "#42795b";
366                                        td.style.fontWeight = "bold";
367                                       
368                                        var td1  = get_lang(td1).substr(get_lang(td1).length-1) == "*"?td1:get_lang(td1);
369                                        if ((tmp = translatedFolders.get(td1)))
370                                        {
371                                            td1 = tmp;
372                                        }
373
374                                        if(proxy_mensagens.is_local_folder(td1)) {
375                                                var td1 = this.aux_local_folder_display(td1);
376                                        }
377                                }
378                                if( j == 6)
379                                {
380                                        if (aux.from.length > 29)
381                                                aux.from = aux.from.substr(0,29) + "...";
382                                        td.style.width = "20%";
383                                        td.onclick = _onclick;
384                                        td.setAttribute("NoWrap","true");
385                                        td.style.overflow = "hidden";
386                                        var td1  =  '<div style="width:100%;overflow:hidden">'+aux.from+"</div>";
387                                }
388                                if( j == 7)
389                                {
390                                        var subject_encode = url_encode(subject);
391                                        if (! subject_encode)
392                                                aux.subject = get_lang("no subject") + "...";
393                                        if (aux.subject.length > 70)
394                                                aux.subject = aux.subject.substr(0,70) + "...";
395                                        td.style.width = "35%";
396                                        td.onclick = _onclick;
397                                        td.setAttribute("NoWrap","true");
398                                        td.style.overflow = "hidden";
399                                        var td1  = aux.subject;
400
401                                }
402                                if( j == 8)
403                                {
404                                        td.style.width = "15%";
405                                        td.align = "center";
406                                        td.onclick = _onclick;
407                                        var _dat = new Date(aux.udate*1000);
408                                        var td1 = _dat.getDate()+"/"+_dat.getMonth()+"/"+_dat.getFullYear();
409                                }
410                                if( j == 9)
411                                {
412                                        td.style.width = "10%";
413                                        td.align = "center";
414                                        td.onclick = _onclick;
415                                        var td1  = borkb(aux.size);
416                                }
417                                if (j == 10)
418                                {
419                                        if (aux.flag.match("U"))
420                                                add_className(tr, 'tr_msg_unread');
421                                        if (aux.flag.match("F"))
422                                                add_className(tr, 'flagged_msg');
423                                        var td1 = '';
424                                }
425                                td.innerHTML = td1;
426                                tr.appendChild(td);
427                        }
428                        aux.splice(0,(aux.length));
429
430                _dragArea.makeDragged(tr, uid_msg, subject, true, mailbox);
431                tbody.appendChild(tr);
432                }
433                global_search++; //Tabs from search must not have the same id on its tr's
434               
435                table.appendChild(tbody);
436
437        var content_search =  Element('content_id_search_' + numBox);                   
438        var div_scroll_result = document.createElement("DIV");
439        div_scroll_result.id = "divScrollMain_"+numBox;
440        div_scroll_result.style.overflow = "auto";                     
441       
442                if(is_ie)
443                        Element("border_table").width = "99.5%";
444               
445                // Put header
446                var table_element = document.createElement("TABLE");
447                var tbody_element = document.createElement("TBODY");
448                table_element.setAttribute("id", "table_message_header_box");
449                table_element.className = "table_message_header_box";
450                tr_element = document.createElement("TR");
451                tr_element.className = "message_header";
452                td_element0 = document.createElement("TD");
453                td_element0.setAttribute("width", "1%");
454                chk_box_element = document.createElement("INPUT");
455                chk_box_element.id  = "chkbox_sel_allmsg";
456                chk_box_element.setAttribute("type", "checkbox");
457                chk_box_element.className = "checkbox";
458                chk_box_element.onclick = function(){select_all_search_messages(this.checked,content_search.id);};
459                chk_box_element.onmouseover = function () {this.title=get_lang('Select all messages.')};
460                chk_box_element.onkeydown = function (e){
461                        if (is_ie)
462                        {
463                                if ((window.event.keyCode) == 46)
464                                        delete_msgs(current_folder,'selected','null');
465                        }
466                        else
467                        {
468                                if ((e.keyCode) == 46)
469                                        delete_msgs(current_folder,'selected','null');
470                        }
471                };
472               
473                td_element0.appendChild(chk_box_element);
474                td_element1 = document.createElement("TD");
475                td_element1.setAttribute("width", "20%");
476                td_element1.align = "left";
477                if (sort_type == 'SORTBOX')
478                {
479                        td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX_REVERSE'); delete_border(border_id,false);};
480                        td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
481                }
482                else
483                {
484                        td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX'); delete_border(border_id,false);};
485                        if  (sort_type == 'SORTBOX_REVERSE')
486                                td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
487                        else
488                                td_element1.innerHTML = get_lang("Folder");
489                }
490                td_element2 = document.createElement("TD");
491                td_element2.setAttribute("width", "20%");
492                td_element2.align = "left";
493                if (sort_type == 'SORTWHO')
494                {
495                        td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO_REVERSE'); delete_border(border_id,false);};
496                        td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
497                }
498                else
499                {
500                        td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO'); delete_border(border_id,false);};
501                        if  (sort_type == 'SORTWHO_REVERSE')
502                                td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
503                        else
504                                td_element2.innerHTML = get_lang("who");
505                }
506                td_element3 = document.createElement("TD");
507                td_element3.setAttribute("width", "35%");
508                td_element3.align = "left";
509                if (sort_type == 'SORTSUBJECT')
510                {
511                        td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT_REVERSE'); delete_border(border_id,false);};
512                        td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
513                }
514                else
515                {
516                        td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT'); delete_border(border_id,false);};
517                        if  (sort_type == 'SORTSUBJECT_REVERSE')
518                                td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
519                        else
520                                td_element3.innerHTML = get_lang("subject");
521                }
522                td_element4 = document.createElement("TD");
523                td_element4.setAttribute("width", "15%");
524                td_element4.align = "center";
525                if (sort_type == 'SORTDATE')
526                {
527                        td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE_REVERSE'); delete_border(border_id,false);};
528                        td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
529                }
530                else
531                {
532                        td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE'); delete_border(border_id,false);};
533                        if  (sort_type == 'SORTDATE_REVERSE')
534                                td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
535                        else
536                                td_element4.innerHTML = get_lang("Date");
537                }
538                td_element5 = document.createElement("TD");
539                td_element5.setAttribute("width", "10%");
540                td_element5.align = "center";
541                if (sort_type == 'SORTSIZE')
542                {
543                        td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE_REVERSE'); delete_border(border_id,false);};
544                        td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
545                }
546                else
547                {
548                        td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE'); delete_border(border_id,false);};
549                        if  (sort_type == 'SORTSIZE_REVERSE')
550                                td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
551                        else
552                                td_element5.innerHTML = get_lang("Size");
553                }
554                tr_element.appendChild(td_element0);
555                tr_element.appendChild(td_element1);
556                tr_element.appendChild(td_element2);
557                tr_element.appendChild(td_element3);
558                tr_element.appendChild(td_element4);
559                tr_element.appendChild(td_element5);
560                tbody_element.appendChild(tr_element);
561                table_element.appendChild(tbody_element);
562                content_search.appendChild(table_element);
563                /*end of "put header"*/
564               
565                if (!expresso_offline) {
566/*                      var span_options = document.createElement("SPAN");
567                        if (span_options)
568                                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> | ' +
569                                '<span title="' +
570                                get_lang("Move") +
571                                '" class="message_options" onclick=wfolders.makeWindowNew(\"' +
572                                content_search.id +
573                                '\",\"move_to\",true)>' +
574                                get_lang("Move") +
575                                '</span>';*/
576                        div_scroll_result.appendChild(table);
577                        content_search.appendChild(div_scroll_result);
578                        /*if (span_options)
579                                content_search.appendChild(span_options);*/
580                }
581                else {
582                        div_scroll_result.appendChild(table);
583                        content_search.appendChild(div_scroll_result);
584                }
585                resizeWindow();
586        }
587
588        searchE.prototype.open_msg = function(mailbox, uid_msg, subject){
589                var handler_get_msg = function(data){
590                        if(Element("border_id_" + uid_msg + "_r")){alert(get_lang("This message is already opened!"));}
591                        else{draw_message(data,create_border(url_decode(subject), uid_msg + "_r"));}
592                        //set_msg_as_read(msgs_to_set[i], false);
593                }
594                proxy_mensagens.get_msg(uid_msg,mailbox,false,handler_get_msg);
595                /*var args   = "expressoMail1_2.imap_functions.get_info_msg";
596                var params = "msg_number=" + uid_msg + "&msg_folder=" + mailbox;
597                cExecute(args,handler_get_msg,params);*/
598
599        }
600
601        // Adiciona caixas postais na busca;
602        searchE.prototype.add_mailboxes = function(){
603                var sel = Element("sel_search_nm_box1");
604                if (!proxy_mensagens.is_local_folder(this.name_box_search)) {
605                        var name_box     = this.name_box_search.split(cyrus_delimiter);
606                        if(this.name_box_search == "")
607                                return false;
608                        var name_box_def = "";
609                        if(name_box.length != 1){
610                                name_box_def = name_box[(name_box.length-1)];
611                        }else{
612                                name_box_def = get_lang("Inbox");               
613                        }
614                }
615                else {
616                        if(this.name_box_search=='local_root')
617                                return;
618                        if(this.name_box_search=='local_Inbox')
619                                name_box_def = get_lang("Inbox");
620                        else if(this.name_box_search.indexOf("/")!="-1") {
621                                final_pos = this.name_box_search.lastIndexOf("/");
622                                name_box_def = this.name_box_search.substr(final_pos+1);
623                        }
624                        else
625                                name_box_def = this.name_box_search.substr(6);//Retira o 'local_'
626                }
627                if( sel.length > 0){
628                        for(var i=0; i < sel.options.length; i++){
629                                if(sel.options[i].value == this.name_box_search){
630                                        alert(get_lang('This message is already selected!'));
631                                        return false;
632                                }
633                        }
634                }
635                var opt = new Option(lang_folder(name_box_def),this.name_box_search,false,true);
636                sel[sel.length] = opt;
637        }
638        // Remove as caixas postais na busca;
639        searchE.prototype.del_mailboxes = function(){
640                var sel = Element("sel_search_nm_box1");
641                if(sel.length > 0){
642                        for(var i=0; i < sel.options.length; i++){
643                                if(sel.options[i].selected == true){
644                                        sel.options[i] = null;
645                                        i--;
646                                }
647                        }
648                }
649       
650        }
651        // todas as caixas
652        searchE.prototype.all_mailboxes = function(){
653                var value = Element("check_all_msg").checked;
654                var cont = parseInt(0);
655                if(value){
656                        if(EsearchE.all_boxes.length > 0){
657                                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));                       
658                        }
659                        for(var i=0; i < folders.length; i++){
660                                EsearchE.all_boxes[cont] = folders[i].folder_id;
661                                cont++;
662                        }
663                }else{
664                        EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
665                }
666        }
667
668        // Search;
669        searchE.prototype.func_search = function(value){
670                var fields = "##";
671                        // Verifica se os campos estão preenchidos;
672                        if(trim(Element("txt_ass").value) != ""){
673                                fields += "SUBJECT " +  "<=>" +url_encode(Element("txt_ass").value) + "##";
674                        }
675                        if(trim(Element("txt_body").value) != ""){
676                                fields += "BODY " + "<=>" + url_encode(Element("txt_body").value) + "##";
677                        }
678                        if(trim(Element("txt_de").value) != ""){
679                                fields += "FROM " + "<=>" + url_encode(Element("txt_de").value) + "##";
680                        }
681                        if(trim(Element("txt_para").value) != ""){
682                                fields += "TO " + "<=>" + url_encode(Element("txt_para").value) + "##";
683                        }
684                        if(trim(Element("txt_cc").value) != ""){
685                                fields += "CC " + "<=>" + url_encode(Element("txt_cc").value) + "##";
686                        }
687                        if (trim(Element("since_date").value) != ""){
688                            if (validate_date(Element("since_date").value))
689                            {
690                                fields += "SINCE " + "<=>" + url_encode(Element("since_date").value) + "##";
691                            }
692                            else
693                                {
694                                    alert(get_lang('Invalid date on field %1'), get_lang('Since Date'));
695                                    return false;
696                                }
697                        }
698                        if (trim(Element("before_date").value) != ""){
699                            if (validate_date(Element("before_date").value))
700                            {
701                                fields += "BEFORE " + "<=>" + url_encode(Element("before_date").value) + "##";
702                            }
703                            else
704                                {
705                                    alert(get_lang('Invalid date on field %1'), get_lang('Before Date'));
706                                    return false;
707                                }
708                        }
709                        if(trim(Element("on_date").value) != ""){
710                            if (validate_date(Element("on_date").value))
711                            {
712                                fields += "ON " + "<=>" + url_encode(Element("on_date").value) + "##";
713                            }
714                            else
715                                {
716                                    alert(get_lang('Invalid date on field %1'), get_lang('On Date'));
717                                    return false;
718                                }
719
720                        }
721                        if(trim(Element("flagged").options[Element("flagged").selectedIndex].value) != ""){
722                            if (Element("flagged").options[Element("flagged").selectedIndex].value == "FLAGGED"){
723                                fields += "FLAGGED##";
724                            }
725                            else {
726                                fields += "UNFLAGGED##";
727                            }
728                        }
729                        if(trim(Element("seen").options[Element("seen").selectedIndex].value) != ""){
730                            if (Element("seen").options[Element("seen").selectedIndex].value == "SEEN"){
731                                fields += "SEEN##";
732                            }
733                            else {
734                                fields += "UNSEEN##";
735                            }
736                        }
737                        if(trim(Element("answered").options[Element("answered").selectedIndex].value) != ""){
738                            if (Element("answered").options[Element("answered").selectedIndex].value == "ANSWERED"){
739                                fields += "ANSWERED##";
740                            }
741                            else {
742                                fields += "UNANSWERED##";
743                            }
744                        }
745                        if(trim(Element("recent").options[Element("recent").selectedIndex].value) != ""){
746                            if (Element("answered").options[Element("answered").selectedIndex].value == "RECENT"){
747                                fields += "RECENT##";
748                            }
749                            else {
750                                fields += "OLD##";
751                            }
752                        }
753                        if(value) {
754                                fields = "##ALL " +  "<=>" +url_encode(value) + "##";
755                        }
756
757                if(fields == "##"){
758                        alert(get_lang("Define some search parameters!"));
759                        return false;
760                }
761                var local_folders = new Array();
762                var temp;
763               
764                if(Element("check_all_msg").checked){
765                        this.all_mailboxes();
766                        var nm_box = new Array;
767                        for(var i=0; i < EsearchE.all_boxes.length; i++){
768                                nm_box[i] = EsearchE.all_boxes[i] + fields;
769                        }
770                        if (preferences.use_local_messages == 1) {
771                                temp = expresso_local_messages.list_local_folders();
772                                for (var x in temp) {
773                                        local_folders.push(temp[x][0]);
774                                }
775                        }
776                }else{
777                        var nm_box = new Array;
778                        var sel_combo = Element("sel_search_nm_box1");
779                        if( sel_combo.options.length <= 0){
780                                alert(get_lang("Define the boxes to search!"));
781                                return false;
782                        }
783                       
784                        for(var i=0; i < sel_combo.options.length; i++){
785                                sel_combo.options[i].selected = true;
786                        }
787                        for(var i=0; i < sel_combo.options.length; i++){
788                                if(sel_combo.options[i].selected == true){
789                                        if(!proxy_mensagens.is_local_folder(sel_combo.options[i].value))
790                                                nm_box[nm_box.length] = sel_combo.options[i].value + fields;
791                                        else
792                                                local_folders.push(sel_combo.options[i].value.substr(6));
793                                }
794                        }
795                }
796                var handler = function(data){
797                        var tmp;
798                        if (local_folders.length > 0) {
799                                tmp = expresso_local_messages.search(local_folders, fields);
800                                if (tmp!=false) {
801                                        var tmp2 = tmp.substr(2, data.length - 4);
802                                }
803                        }
804//                      if((data == "none") && (countTmp.length==0)){alert(get_lang("None result was found."));}
805//                      if (preferences.search_result_number == '65536' || (data != 'many results' && countTmp.length < preferences.search_result_number))
806//                        {
807//                            EsearchE.mount_result((data=='none')?tmp:(countTmp.length==0)?data:data+tmp);
808//                        }
809//                        else if (data == 'many results' || countTmp.length >= preferences.search_result_number)
810//                        {
811//                            alert(get_lang("More than %1 results. Please, try to refine your search.",preferences.search_result_number));
812//                        }
813
814                        if ((data == "none") || (data.length==0)){
815                            alert(get_lang("None result was found."));
816                        }
817                        else
818                        {
819                            EsearchE.mount_result(data);
820                        }
821
822                }
823                var args   = "expressoMail1_2.imap_functions.search_msg";
824                var params = "&condition=" + url_encode(nm_box);
825                if(expresso_offline)
826                        handler('none');
827                else
828                        cExecute(args+params,handler);
829        }
830        // clean;
831        searchE.prototype.func_clean = function(){
832                // Limpa os campos;
833            for(var i=0; i < this.txtfields.length; i++){
834                    if(Element(this.txtfields[i]) != null){Element(this.txtfields[i]).value = "";}
835            }
836
837            for(i = 0; i < this.selectFields.length; i++)
838            {
839                if (Element(this.selectFields[i]))
840                {
841                    Element(this.selectFields[i]).selectedIndex = 0;
842                }
843            }
844            if(Element("check_all_msg") != null){Element("check_all_msg").checked = false;}
845
846            EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
847                EsearchE.del_mailboxes();
848        }
849
850        // close
851        searchE.prototype.func_close = function(type){
852                var _this = this;
853                _this.name_box_search = "";
854                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
855                _this.type = type;
856                _this.searchW['window_search'].close();
857        }
858        // Monta a janela em tela;
859        searchE.prototype.showWindow = function(div){
860                if(!this.searchW[div.id]) {
861                        div.style.width = "804px";
862                        div.style.height = "440px";
863                        div.style.visibility = "hidden";
864                        div.style.position = "absolute";
865                        div.style.zIndex = "10003";
866                        var title = ":: "+ get_lang("Search")+" ::";
867                        var wHeight = div.offsetHeight + "px";
868                        var wWidth =  div.offsetWidth   + "px";
869
870                        win = new dJSWin({
871                                id: 'ccList'+div.id,
872                                content_id: div.id,
873                                width: wWidth,
874                                height: wHeight,
875                                title_color: '#3978d6',
876                                bg_color: '#eee',
877                                title: title,
878                                title_text_color: 'white',
879                                button_y_img: '../phpgwapi/images/win_min.gif',
880                                button_x_img: '../phpgwapi/images/winclose.gif',
881                                border: true });
882                        this.searchW[div.id] = win;
883                        win.draw();
884                }else{
885                        var _this = this;
886                        win = this.searchW[div.id];
887                        if((_this.type == "close" && win.state == 0) || win.state == 2){EsearchE.func_clean();}
888                        win.draw();
889                }
890                win.open();     
891        }
892       
893        searchE.prototype.aux_local_folder_display = function(folder) {
894                if(!expresso_offline)
895                        return "(Local) " + lang_folder(folder.substr(6));
896                else
897                        return lang_folder(folder.substr(6));
898        }
899       
900// Cria o objeto
901        var EsearchE;
902        EsearchE = new searchE();
Note: See TracBrowser for help on using the repository browser.