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

Revision 3018, 36.1 KB checked in by amuller, 14 years ago (diff)

Ticket #1135 - Aplicando alterações do branches 2.0 no branches 2.2

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