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

Revision 3223, 37.6 KB checked in by amuller, 14 years ago (diff)

Ticket #428 - Implementação da paginação da busca

  • 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.condition = "";
8                this.sort_type = "";
9                this.page = 0;
10                this.name_box_search = "";
11                this.all_boxes = new Array;
12                this.type = "";
13                this.txtfields = new Array("txt_ass","txt_de","txt_body","txt_para","txt_cc","txt_cco",
14                                        "since_date", "before_date", "on_date");
15                this.selectFields = new Array("flagged", "seen", "answered", "recent");
16        }
17       
18        //Monta os forms dentro da janela;
19        searchE.prototype.showForms = function(value){
20                // Principal
21                if(!Element("window_search")) {
22                        var form_search = document.createElement("DIV");
23                        form_search.style.visibility = 'hidden';
24                        form_search.style.top = '0px';
25                        form_search.style.left = '0px';
26                        form_search.id = "window_search";
27                        document.body.appendChild(form_search);                 
28                }
29               
30                // Pesquisa
31                if(!Element("div_form_search")){
32                        var div_form_search = document.createElement("DIV");
33                        div_form_search.id = "div_form_search";
34                        div_form_search.style.position = "absolute";
35                        div_form_search.style.left = "10px";
36                        div_form_search.style.top  = "10px";
37                        div_form_search.style.width = "784px";
38                        div_form_search.style.height = "418px";
39                        div_form_search.style.overflow = "hidden";
40                        div_form_search.innerHTML = "";
41                        var call_form_search = EsearchE.mount_form();
42                        div_form_search.appendChild(call_form_search);
43                        form_search.appendChild(div_form_search);
44
45                        Calendar._TT['WEEKEND'] = '0,6'; // hack
46                        Calendar._TT['DAY_FIRST'] = 'Mostrar %s primeiro';
47                        Calendar.setup({
48                            inputField  : 'since_date',
49                            button      : 'since_date-trigger',
50                            ifFormat    : '%d/%m/%Y',
51                            daFormat    : '%d/%m/%Y'
52                        });
53
54                        Calendar.setup({
55                            inputField  : 'before_date',
56                            button      : 'before_date-trigger',
57                            ifFormat    : '%d/%m/%Y',
58                            daFormat    : '%d/%m/%Y'
59                        });
60
61                        Calendar.setup({
62                            inputField  : 'on_date',
63                            button      : 'on_date-trigger',
64                            ifFormat    : '%d/%m/%Y',
65                            daFormat    : '%d/%m/%Y'
66                        });
67
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                connector.loadScript("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        function openpage(data){
209                delete_border(currentTab,false);
210                EsearchE.mount_result(data);
211        }
212
213        searchE.prototype.show_paging = function(size){
214                if (size > preferences.max_email_per_page)
215                {
216                        if (Element("span_paging"+currentTab)){
217                                Element("span_paging"+currentTab).style.display = '';
218                                Element("span_paging"+currentTab).innerHTML = "";
219                        }
220                        else{
221                                var span_paging = document.createElement('SPAN');
222                                span_paging.id = "span_paging"+currentTab;
223                                Element("div_menu_c3").appendChild(span_paging);
224                        }
225                        if(this.page > 1){
226                                var fLink = document.createElement('A');
227                                fLink.innerHTML = '&lt; &lt;';
228                                fLink.href = 'javascript:EsearchE.page=0;'+
229                                        'cExecute("$this.imap_functions.search_msg",openpage,'+
230                                        '"condition='+this.condition+'&sort_type='+this.sort_type+'&page=0");';
231                                Element("span_paging"+currentTab).appendChild(fLink);
232                        }
233                        if(this.page > 2){
234                                var prevLink = document.createElement('A');
235                                prevLink.innerHTML = '...';
236                                prevLink.href = 'javascript:EsearchE.page='+
237                                        (this.page-1)+';'+
238                                        'cExecute("$this.imap_functions.search_msg",openpage,'+
239                                        '"condition='+this.condition+'&sort_type='+this.sort_type+'&page='+(this.page-1)+'");';
240                                Element("span_paging"+currentTab).appendChild(prevLink);
241                        }
242                        for (var i=(this.page > 2 ? this.page-2 : 0); i <= parseInt(this.page)+4; i+= 1){
243                                if (i*preferences.max_email_per_page > size)
244                                        break;
245                                if (this.page == i)
246                                        Element("span_paging"+currentTab).innerHTML += "<b> "+(this.page+1)+" </b>";
247                                else
248                                {
249                                        var pageLink = document.createElement('A');
250                                        pageLink.innerHTML = (i+1)+" ";
251                                        pageLink.href = 'javascript:EsearchE.page='+i+';'+
252                                                'cExecute("$this.imap_functions.search_msg",openpage,'+
253                                                '"condition='+this.condition+'&sort_type='+this.sort_type+'&page='+this.page+'");';
254                                        Element("span_paging"+currentTab).appendChild(pageLink);
255                                }
256                        }
257                        if (size > preferences.max_email_per_page)
258                        {
259                                var lLink = document.createElement('A');
260                                lLink.innerHTML = '&gt; &gt;';
261                                lLink.href = 'javascript:EsearchE.page='+parseInt(size/preferences.max_email_per_page)+';'+
262                                        'cExecute("$this.imap_functions.search_msg",openpage,'+
263                                        '"condition='+this.condition+'&sort_type='+this.sort_type+'&page=0");';
264                                Element("span_paging"+currentTab).appendChild(lLink);
265                        }
266                }
267
268        }
269        // Form resultado
270        searchE.prototype.mount_result = function(Rdata,sort_type){
271                var data = Rdata['data'];
272                if (data == undefined)
273                        return;
274                if(this.page == 0)
275                        write_msg(Rdata['num_msgs']+" "+get_lang("results found"));
276                var cont = parseInt(0);
277
278                if (typeof(sort_type) != 'undefined')
279                        this.sort_type = sort_type;
280                else
281                        sort_type = this.sort_type;
282
283                numBox++;
284                var border_id = create_border(get_lang("Search Results"), "search_" + numBox);
285                if (!border_id)
286                {
287                    return;
288                }
289                currentTab = border_id;
290                openTab.content_id[currentTab] = Element('content_id_search_' + numBox);
291                openTab.type[currentTab] = 1;
292
293                var table = document.createElement("TABLE");
294                table.id    = "table_resultsearch_" + numBox;
295                table.frame = "void";
296                table.rules = "rows";
297                table.cellPadding = "0";
298                table.cellSpacing = "0";
299                table.className = "table_box";
300
301                var tbody = document.createElement("TBODY");
302                tbody.id    = "tbody_box_" + numBox;
303                for( var i=0; i < data.length; i++){
304                        var tr = document.createElement("TR");
305                        tr.style.height = preferences.line_height;
306                        var aux = data[i];
307                        var mailbox = aux.boxname;
308                        var uid_msg = aux.uid;
309                        var subject = aux.subject;
310                        tr.id = uid_msg+"_s"+global_search;
311
312                        // Keep the two lines together please
313                        tr.setAttribute('name',mailbox);
314                        tr.name = mailbox;
315
316                        if (aux.flag.match("U"))
317                                add_className(tr,'tr_msg_unread');
318                        add_className(tr, i%2 != 0 ? 'tr_msg_read2' : 'tr_msg_read');
319            var _onclick = function () { proxy_mensagens.get_msg(this.parentNode.id,url_encode(this.parentNode.getAttribute('name')),false,show_msg);};
320            for(var j=0 ; j < 10 ; j++)
321                        {
322                                var td = document.createElement("TD");
323                                if (j == 0)
324                                {
325                                        td.style.width = "1%";
326                                        var td1 = '<input type="checkbox" id="check_box_message_'+uid_msg+'"></input>';
327                                       
328                                }
329                                if (j == 1)
330                                {
331                                        td.style.width = "2%";
332                                        if (aux.flag.match('T'))
333                                        {
334                                                attachNum = parseInt(aux.flag.substr(aux.flag.indexOf('T')+1));
335                                                td1 = "<img src='templates/"+template+"/images/clip.gif' title='"+attachNum +' '+ get_lang('attachment(s)')+"'>";
336                                        }
337                                        else
338                                                td1 = '';
339                                }
340                                if (j == 2)
341                                {
342                                        td.style.width = "1%";
343                                        td.id = "td_message_answered_"+uid_msg;
344                                        if (aux.flag.match('X'))
345                                                td1 = '<img src=templates/'+template+'/images/forwarded.gif title=Forwarded>';
346                                        else
347                                                if (aux.flag.match('A'))
348                                                        td1 = '<img src=templates/'+template+'/images/answered.gif>';
349                                                else
350                                                        td1 = '';
351                                }
352                                if (j == 3)
353                                {
354                                        td.style.width = "1%";
355                                        td.id = "td_message_important_"+uid_msg;
356                                        if (aux.flag.match("F"))
357                                        {
358                                                add_className(tr, 'flagged_msg');
359                                                td.style.background = "url(templates/"+template+"/images/important.gif) no-repeat center";
360                                        }
361                                        else
362                                                td1 = '';
363                                }
364                                if (j == 4)
365                                {
366                                        td.style.width = "1%";
367                                        td.id = "td_message_sent_"+uid_msg;
368                                        td1 = '';
369                                }
370                                if (j == 5)
371                                {
372                                        td.style.width = "14%";
373                                        td.onclick = _onclick;
374                                        var nm_box = aux.boxname.split(cyrus_delimiter);
375                                        var td1 = nm_box.pop();
376                                        td.setAttribute("NoWrap","true");
377                                        td.style.overflow = "hidden";
378                                        td.style.color = "#42795b";
379                                        td.style.fontWeight = "bold";
380                                       
381                                        var td1  = get_lang(td1).substr(get_lang(td1).length-1) == "*"?td1:get_lang(td1);
382                                        if ((tmp = translatedFolders.get(td1)))
383                                        {
384                                            td1 = tmp;
385                                        }
386
387                                        if(proxy_mensagens.is_local_folder(td1)) {
388                                                var td1 = this.aux_local_folder_display(td1);
389                                        }
390                                }
391                                if( j == 6)
392                                {
393                                        if (aux.from.length > 29)
394                                                aux.from = aux.from.substr(0,29) + "...";
395                                        td.style.width = "20%";
396                                        td.onclick = _onclick;
397                                        td.setAttribute("NoWrap","true");
398                                        td.style.overflow = "hidden";
399                                        var td1  =  '<div style="width:100%;overflow:hidden">'+aux.from+"</div>";
400                                }
401                                if( j == 7)
402                                {
403                                        var subject_encode = url_encode(subject);
404                                        if (! subject_encode)
405                                                aux.subject = get_lang("no subject") + "...";
406                                        if (aux.subject.length > 70)
407                                                aux.subject = aux.subject.substr(0,70) + "...";
408                                        td.style.width = "35%";
409                                        td.onclick = _onclick;
410                                        td.setAttribute("NoWrap","true");
411                                        td.style.overflow = "hidden";
412                                        var td1  = aux.subject;
413
414                                }
415                                if( j == 8)
416                                {
417                                        td.style.width = "15%";
418                                        td.align = "center";
419                                        td.onclick = _onclick;
420                                        var _dat = new Date(aux.udate*1000);
421                                        var td1 = _dat.getDate()+"/"+(_dat.getMonth()+1)+"/"+_dat.getFullYear();
422                                }
423                                if( j == 9)
424                                {
425                                        td.style.width = "10%";
426                                        td.align = "center";
427                                        td.onclick = _onclick;
428                                        var td1  = borkb(aux.size);
429                                }
430                                if (j == 10)
431                                {
432                                        if (aux.flag.match("U"))
433                                                add_className(tr, 'tr_msg_unread');
434                                        if (aux.flag.match("F"))
435                                                add_className(tr, 'flagged_msg');
436                                        var td1 = '';
437                                }
438                                td.innerHTML = td1;
439                                tr.appendChild(td);
440                        }
441                        aux.splice(0,(aux.length));
442
443                _dragArea.makeDragged(tr, uid_msg, subject, true, mailbox);
444                tbody.appendChild(tr);
445                }
446                global_search++; //Tabs from search must not have the same id on its tr's
447               
448                table.appendChild(tbody);
449
450        var content_search =  Element('content_id_search_' + numBox);
451        var div_scroll_result = document.createElement("DIV");
452        div_scroll_result.id = "divScrollMain_"+numBox;
453        div_scroll_result.style.overflow = "auto";
454       
455                if(is_ie)
456                        Element("border_table").width = "99.5%";
457               
458                // Put header
459                var table_element = document.createElement("TABLE");
460                var tbody_element = document.createElement("TBODY");
461                table_element.setAttribute("id", "table_message_header_box");
462                table_element.className = "table_message_header_box";
463                tr_element = document.createElement("TR");
464                tr_element.className = "message_header";
465                td_element0 = document.createElement("TD");
466                td_element0.setAttribute("width", "1%");
467                chk_box_element = document.createElement("INPUT");
468                chk_box_element.id  = "chk_box_select_all_messages";
469                chk_box_element.setAttribute("type", "checkbox");
470                chk_box_element.className = "checkbox";
471                chk_box_element.onclick = function(){select_all_search_messages(this.checked,content_search.id);};
472                chk_box_element.onmouseover = function () {this.title=get_lang('Select all messages.')};
473                chk_box_element.onkeydown = function (e){
474                        if (is_ie)
475                        {
476                                if ((window.event.keyCode) == 46)
477                                        delete_msgs(current_folder,'selected','null');
478                        }
479                        else
480                        {
481                                if ((e.keyCode) == 46)
482                                        delete_msgs(current_folder,'selected','null');
483                        }
484                };
485               
486                td_element0.appendChild(chk_box_element);
487                td_element1 = document.createElement("TD");
488                td_element1.setAttribute("width", "20%");
489                td_element1.align = "left";
490                if (sort_type == 'SORTBOX')
491                {
492                        td_element1.onclick = function () {
493                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTBOX_REVERSE'); };
494                                var args   = "$this.imap_functions.search_msg";
495                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTBOX_REVERSE";
496                                cExecute(args,handler,params);
497                        };
498                        td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
499                }
500                else
501                {
502                        td_element1.onclick = function () {
503                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTBOX'); };
504                                var args   = "$this.imap_functions.search_msg";
505                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTBOX";
506                                cExecute(args,handler,params);
507                        };
508                        if  (sort_type == 'SORTBOX_REVERSE')
509                                td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
510                        else
511                                td_element1.innerHTML = get_lang("Folder");
512                }
513                td_element2 = document.createElement("TD");
514                td_element2.setAttribute("width", "20%");
515                td_element2.align = "left";
516                if (sort_type == 'SORTWHO')
517                {
518                        td_element2.onclick = function () {
519                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTWHO_REVERSE'); };
520                                var args   = "$this.imap_functions.search_msg";
521                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTWHO_REVERSE";
522                                cExecute(args,handler,params);
523                        };
524                        td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
525                }
526                else
527                {
528                        td_element2.onclick = function () {
529                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTWHO'); };
530                                var args   = "$this.imap_functions.search_msg";
531                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTWHO";
532                                cExecute(args,handler,params);
533                        };
534                        if  (sort_type == 'SORTWHO_REVERSE')
535                                td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
536                        else
537                                td_element2.innerHTML = get_lang("who");
538                }
539                td_element3 = document.createElement("TD");
540                td_element3.setAttribute("width", "35%");
541                td_element3.align = "left";
542                if (sort_type == 'SORTSUBJECT')
543                {
544                        td_element3.onclick = function () {
545                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSUBJECT_REVERSE'); };
546                                var args   = "$this.imap_functions.search_msg";
547                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSUBJECT_REVERSE";
548                                cExecute(args,handler,params);
549                        };
550                        td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
551                }
552                else
553                {
554                        td_element3.onclick = function () {
555                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSUBJECT'); };
556                                var args   = "$this.imap_functions.search_msg";
557                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSUBJECT";
558                                cExecute(args,handler,params);
559                        };
560                        if  (sort_type == 'SORTSUBJECT_REVERSE')
561                                td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
562                        else
563                                td_element3.innerHTML = get_lang("subject");
564                }
565                td_element4 = document.createElement("TD");
566                td_element4.setAttribute("width", "15%");
567                td_element4.align = "center";
568                if (sort_type == 'SORTDATE')
569                {
570                        td_element4.onclick = function () {
571                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTDATE_REVERSE'); };
572                                var args   = "$this.imap_functions.search_msg";
573                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTDATE_REVERSE";
574                                cExecute(args,handler,params);
575                        };
576                        td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
577                }
578                else
579                {
580                        td_element4.onclick = function () {
581                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTDATE'); };
582                                var args   = "$this.imap_functions.search_msg";
583                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTDATE";
584                                cExecute(args,handler,params);
585                        };
586                        if  (sort_type == 'SORTDATE_REVERSE')
587                                td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
588                        else
589                                td_element4.innerHTML = get_lang("Date");
590                }
591                td_element5 = document.createElement("TD");
592                td_element5.setAttribute("width", "10%");
593                td_element5.align = "center";
594                if (sort_type == 'SORTSIZE')
595                {
596                        td_element5.onclick = function () {
597                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSIZE_REVERSE'); };
598                                var args   = "$this.imap_functions.search_msg";
599                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSIZE_REVERSE";
600                                cExecute(args,handler,params);
601                        };
602                        td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
603                }
604                else
605                {
606                        td_element5.onclick = function () {
607                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSIZE'); };
608                                var args   = "$this.imap_functions.search_msg";
609                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSIZE";
610                                cExecute(args,handler,params);
611                        };
612                        if  (sort_type == 'SORTSIZE_REVERSE')
613                                td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
614                        else
615                                td_element5.innerHTML = get_lang("Size");
616                }
617                tr_element.appendChild(td_element0);
618                tr_element.appendChild(td_element1);
619                tr_element.appendChild(td_element2);
620                tr_element.appendChild(td_element3);
621                tr_element.appendChild(td_element4);
622                tr_element.appendChild(td_element5);
623                tbody_element.appendChild(tr_element);
624                table_element.appendChild(tbody_element);
625                content_search.appendChild(table_element);
626                /*end of "put header"*/
627               
628                if (!expresso_offline) {
629/*                      var span_options = document.createElement("SPAN");
630                        if (span_options)
631                                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> | ' +
632                                '<span title="' +
633                                get_lang("Move") +
634                                '" class="message_options" onclick=wfolders.makeWindowNew(\"' +
635                                content_search.id +
636                                '\",\"move_to\",true)>' +
637                                get_lang("Move") +
638                                '</span>';*/
639                        div_scroll_result.appendChild(table);
640                        content_search.appendChild(div_scroll_result);
641                        /*if (span_options)
642                                content_search.appendChild(span_options);*/
643                }
644                else {
645                        div_scroll_result.appendChild(table);
646                        content_search.appendChild(div_scroll_result);
647                }
648                resizeWindow();
649                EsearchE.show_paging(Rdata['num_msgs']);
650
651        }
652
653        searchE.prototype.open_msg = function(mailbox, uid_msg, subject){
654                var handler_get_msg = function(data){
655                        if(Element("border_id_" + uid_msg + "_r")){alert(get_lang("This message is already opened!"));}
656                        else{draw_message(data,create_border(url_decode(subject), uid_msg + "_r"));}
657                        //set_msg_as_read(msgs_to_set[i], false);
658                }
659                proxy_mensagens.get_msg(uid_msg,mailbox,false,handler_get_msg);
660                /*var args   = "$this.imap_functions.get_info_msg";
661                var params = "msg_number=" + uid_msg + "&msg_folder=" + mailbox;
662                cExecute(args,handler_get_msg,params);*/
663
664        }
665
666        // Adiciona caixas postais na busca;
667        searchE.prototype.add_mailboxes = function(){
668                var sel = Element("sel_search_nm_box1");
669                if (!proxy_mensagens.is_local_folder(this.name_box_search)) {
670                        var name_box     = this.name_box_search.split(cyrus_delimiter);
671                        if(this.name_box_search == "")
672                                return false;
673                        var name_box_def = "";
674                        if(name_box.length != 1){
675                                name_box_def = name_box[(name_box.length-1)];
676                        }else{
677                                name_box_def = get_lang("Inbox");               
678                        }
679                }
680                else {
681                        if(this.name_box_search=='local_root')
682                                return;
683                        if(this.name_box_search=='local_Inbox')
684                                name_box_def = get_lang("Inbox");
685                        else if(this.name_box_search.indexOf("/")!="-1") {
686                                final_pos = this.name_box_search.lastIndexOf("/");
687                                name_box_def = this.name_box_search.substr(final_pos+1);
688                        }
689                        else
690                                name_box_def = this.name_box_search.substr(6);//Retira o 'local_'
691                }
692                if( sel.length > 0){
693                        for(var i=0; i < sel.options.length; i++){
694                                if(sel.options[i].value == this.name_box_search){
695                                        alert(get_lang('This message is already selected!'));
696                                        return false;
697                                }
698                        }
699                }
700                var opt = new Option(lang_folder(name_box_def),this.name_box_search,false,true);
701                sel[sel.length] = opt;
702        }
703        // Remove as caixas postais na busca;
704        searchE.prototype.del_mailboxes = function(){
705                var sel = Element("sel_search_nm_box1");
706                if(sel.length > 0){
707                        for(var i=0; i < sel.options.length; i++){
708                                if(sel.options[i].selected == true){
709                                        sel.options[i] = null;
710                                        i--;
711                                }
712                        }
713                }
714       
715        }
716        // todas as caixas
717        searchE.prototype.all_mailboxes = function(){
718                var value = Element("check_all_msg").checked;
719                var cont = parseInt(0);
720                if(value){
721                        if(EsearchE.all_boxes.length > 0){
722                                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));                       
723                        }
724                        for(var i=0; i < folders.length; i++){
725                                EsearchE.all_boxes[cont] = folders[i].folder_id;
726                                cont++;
727                        }
728                }else{
729                        EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
730                }
731        }
732
733        // Search;
734        searchE.prototype.func_search = function(value){
735                var fields = "##";
736                        // Verifica se os campos estão preenchidos;
737                        if(trim(Element("txt_ass").value) != ""){
738                                fields += "SUBJECT " +  "<=>" +url_encode(Element("txt_ass").value) + "##";
739                        }
740                        if(trim(Element("txt_body").value) != ""){
741                                fields += "BODY " + "<=>" + url_encode(Element("txt_body").value) + "##";
742                        }
743                        if(trim(Element("txt_de").value) != ""){
744                                fields += "FROM " + "<=>" + url_encode(Element("txt_de").value) + "##";
745                        }
746                        if(trim(Element("txt_para").value) != ""){
747                                fields += "TO " + "<=>" + url_encode(Element("txt_para").value) + "##";
748                        }
749                        if(trim(Element("txt_cc").value) != ""){
750                                fields += "CC " + "<=>" + url_encode(Element("txt_cc").value) + "##";
751                        }
752                        if (trim(Element("since_date").value) != ""){
753                            if (validate_date(Element("since_date").value))
754                            {
755                                fields += "SINCE " + "<=>" + url_encode(Element("since_date").value) + "##";
756                            }
757                            else
758                                {
759                                    alert(get_lang('Invalid date on field %1'), get_lang('Since Date'));
760                                    return false;
761                                }
762                        }
763                        if (trim(Element("before_date").value) != ""){
764                            if (validate_date(Element("before_date").value))
765                            {
766                                fields += "BEFORE " + "<=>" + url_encode(Element("before_date").value) + "##";
767                            }
768                            else
769                                {
770                                    alert(get_lang('Invalid date on field %1'), get_lang('Before Date'));
771                                    return false;
772                                }
773                        }
774                        if(trim(Element("on_date").value) != ""){
775                            if (validate_date(Element("on_date").value))
776                            {
777                                fields += "ON " + "<=>" + url_encode(Element("on_date").value) + "##";
778                            }
779                            else
780                                {
781                                    alert(get_lang('Invalid date on field %1'), get_lang('On Date'));
782                                    return false;
783                                }
784
785                        }
786                        if(trim(Element("flagged").options[Element("flagged").selectedIndex].value) != ""){
787                            if (Element("flagged").options[Element("flagged").selectedIndex].value == "FLAGGED"){
788                                fields += "FLAGGED##";
789                            }
790                            else {
791                                fields += "UNFLAGGED##";
792                            }
793                        }
794                        if(trim(Element("seen").options[Element("seen").selectedIndex].value) != ""){
795                            if (Element("seen").options[Element("seen").selectedIndex].value == "SEEN"){
796                                fields += "SEEN##";
797                            }
798                            else {
799                                fields += "UNSEEN##";
800                            }
801                        }
802                        if(trim(Element("answered").options[Element("answered").selectedIndex].value) != ""){
803                            if (Element("answered").options[Element("answered").selectedIndex].value == "ANSWERED"){
804                                fields += "ANSWERED##";
805                            }
806                            else {
807                                fields += "UNANSWERED##";
808                            }
809                        }
810                        if(trim(Element("recent").options[Element("recent").selectedIndex].value) != ""){
811                            if (Element("answered").options[Element("answered").selectedIndex].value == "RECENT"){
812                                fields += "RECENT##";
813                            }
814                            else {
815                                fields += "OLD##";
816                            }
817                        }
818                        if(value) {
819                                fields = "##ALL " +  "<=>" +url_encode(value) + "##";
820                        }
821
822                if(fields == "##"){
823                        alert(get_lang("Define some search parameters!"));
824                        return false;
825                }
826                var local_folders = new Array();
827                var temp;
828               
829                if(Element("check_all_msg").checked){
830                        this.all_mailboxes();
831                        var nm_box = new Array;
832                        for(var i=0; i < EsearchE.all_boxes.length; i++){
833                                nm_box[i] = EsearchE.all_boxes[i] + fields;
834                        }
835                        if (preferences.use_local_messages == 1) {
836                                temp = expresso_local_messages.list_local_folders();
837                                for (var x in temp) {
838                                        local_folders.push(temp[x][0]);
839                                }
840                        }
841                }else{
842                        var nm_box = new Array;
843                        var sel_combo = Element("sel_search_nm_box1");
844                        if( sel_combo.options.length <= 0){
845                                alert(get_lang("Define the boxes to search!"));
846                                return false;
847                        }
848                       
849                        for(var i=0; i < sel_combo.options.length; i++){
850                                sel_combo.options[i].selected = true;
851                        }
852                        for(var i=0; i < sel_combo.options.length; i++){
853                                if(sel_combo.options[i].selected == true){
854                                        if(!proxy_mensagens.is_local_folder(sel_combo.options[i].value))
855                                                nm_box[nm_box.length] = sel_combo.options[i].value + fields;
856                                        else
857                                                local_folders.push(sel_combo.options[i].value.substr(6));
858                                }
859                        }
860                }
861                var handler = function(data){
862                        if (data == "none")
863                                alert(get_lang('no results found'));
864                        else
865                                EsearchE.mount_result(data,'SORTDATE');
866
867                }
868                var args   = "$this.imap_functions.search_msg";
869                this.condition = nm_box;
870                var params = "condition=" + nm_box+
871                        "&page=0"+
872                        "&sort_type=SORTDATE";
873                this.page = 0;
874                if(expresso_offline)
875                        handler('none');
876                else
877                        cExecute(args,handler,params);
878        }
879        // clean;
880        searchE.prototype.func_clean = function(){
881                // Limpa os campos;
882            for(var i=0; i < this.txtfields.length; i++){
883                    if(Element(this.txtfields[i]) != null){Element(this.txtfields[i]).value = "";}
884            }
885
886            for(i = 0; i < this.selectFields.length; i++)
887            {
888                if (Element(this.selectFields[i]))
889                {
890                    Element(this.selectFields[i]).selectedIndex = 0;
891                }
892            }
893            if(Element("check_all_msg") != null){Element("check_all_msg").checked = false;}
894
895            EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
896                EsearchE.del_mailboxes();
897        }
898
899        // close
900        searchE.prototype.func_close = function(type){
901                var _this = this;
902                _this.name_box_search = "";
903                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
904                _this.type = type;
905                _this.searchW['window_search'].close();
906        }
907        // Monta a janela em tela;
908        searchE.prototype.showWindow = function(div){
909                if(!this.searchW[div.id]) {
910                        div.style.width = "804px";
911                        div.style.height = "440px";
912                        div.style.visibility = "hidden";
913                        div.style.position = "absolute";
914                        div.style.zIndex = "10003";
915                        var title = ":: "+ get_lang("Search")+" ::";
916                        var wHeight = div.offsetHeight + "px";
917                        var wWidth =  div.offsetWidth   + "px";
918
919                        win = new dJSWin({
920                                id: 'ccList'+div.id,
921                                content_id: div.id,
922                                width: wWidth,
923                                height: wHeight,
924                                title_color: '#3978d6',
925                                bg_color: '#eee',
926                                title: title,
927                                title_text_color: 'white',
928                                button_y_img: '../phpgwapi/images/win_min.gif',
929                                button_x_img: '../phpgwapi/images/winclose.gif',
930                                border: true });
931                        this.searchW[div.id] = win;
932                        win.draw();
933                }else{
934                        var _this = this;
935                        win = this.searchW[div.id];
936                        if((_this.type == "close" && win.state == 0) || win.state == 2){EsearchE.func_clean();}
937                        win.draw();
938                }
939                win.open();     
940        }
941       
942        searchE.prototype.aux_local_folder_display = function(folder) {
943                if(!expresso_offline)
944                        return "(Local) " + lang_folder(folder.substr(6));
945                else
946                        return lang_folder(folder.substr(6));
947        }
948       
949// Cria o objeto
950        var EsearchE;
951        EsearchE = new searchE();
Note: See TracBrowser for help on using the repository browser.