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

Revision 3836, 38.6 KB checked in by roberto.santosjunior, 13 years ago (diff)

Ticket #1638 - Tela de Listagem de Pesquisa sem tooltip.

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