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

Revision 3834, 38.5 KB checked in by thiagoaos, 13 years ago (diff)

Ticket #1634 - Corrigido tooltip e adicionado mascara no calendário da tela de pesquisar email.

  • 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=Forwarded>';
352                                        else
353                                                if (aux.flag.match('A'))
354                                                        td1 = '<img src=templates/'+template+'/images/answered.gif>';
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                                        }
367                                        else
368                                                td1 = '';
369                                }
370                                if (j == 4)
371                                {
372                                        td.style.width = "1%";
373                                        td.id = "td_message_sent_"+uid_msg;
374                                        td1 = '';
375                                }
376                                if (j == 5)
377                                {
378                                        td.style.width = "20%";
379                                        td.onclick = _onclick;
380                                        var nm_box = aux.boxname.split(cyrus_delimiter);
381                                        var td1 = nm_box.pop();
382                                        td.setAttribute("NoWrap","true");
383                                        td.style.overflow = "hidden";
384                                        td.style.color = "#42795b";
385                                        td.style.fontWeight = "bold";
386                                       
387                                        var td1  = get_lang(td1).substr(get_lang(td1).length-1) == "*"?td1:get_lang(td1);
388                                        if ((tmp = translatedFolders.get(td1)))
389                                        {
390                                            td1 = tmp;
391                                        }
392
393                                        if( proxy_mensagens.is_local_folder(td1))
394                                        {
395                                                var td1 = this.aux_local_folder_display(td1);
396                                        }
397                                }
398                                if( j == 6)
399                                {
400                                        if (aux.from.length > 29)
401                                                aux.from = aux.from.substr(0,29) + "...";
402                                        td.style.width = "20%";
403                                        td.onclick = _onclick;
404                                        td.setAttribute("NoWrap","true");
405                                        td.style.overflow = "hidden";
406                                        var td1  =  '<div style="width:100%;overflow:hidden">'+aux.from+"</div>";
407                                }
408                                if( j == 7)
409                                {
410                                        var subject_encode = url_encode(subject);
411                                        if (! subject_encode)
412                                                aux.subject = get_lang("no subject") + "...";
413                                        if (aux.subject.length > 45)
414                                                aux.subject = aux.subject.substr(0,45) + "...";
415                                        td.style.width = "35%";
416                                        td.onclick = _onclick;
417                                        td.setAttribute("NoWrap","true");
418                                        td.style.overflow = "hidden";
419                                        var td1  = aux.subject;
420
421                                }
422                                if( j == 8)
423                                {
424                                        td.style.width = "13%";
425                                        td.align = "center";
426                                        td.onclick = _onclick;
427                                        var _dat = new Date(aux.udate*1000);
428                                        var td1 = _dat.getDate()+"/"+(_dat.getMonth()+1)+"/"+_dat.getFullYear();
429                                }
430                                if( j == 9)
431                                {
432                                        td.style.width = "10%";
433                                        td.align = "center";
434                                        td.onclick = _onclick;
435                                        var td1  = borkb(aux.size);
436                                }
437                                if (j == 10)
438                                {
439                                        if (aux.flag.match("U"))
440                                                add_className(tr, 'tr_msg_unread');
441                                        if (aux.flag.match("F"))
442                                                add_className(tr, 'flagged_msg');
443                                        var td1 = '';
444                                }
445                                td.innerHTML = td1;
446                                tr.appendChild(td);
447                        }
448                        aux.splice(0,(aux.length));
449
450                _dragArea.makeDragged(tr, uid_msg, subject, true, mailbox);
451                tbody.appendChild(tr);
452                }
453                global_search++; //Tabs from search must not have the same id on its tr's
454               
455                table.appendChild(tbody);
456
457        var content_search =  Element('content_id_search_' + numBox);
458        var div_scroll_result = document.createElement("DIV");
459        div_scroll_result.id = "divScrollMain_"+numBox;
460        div_scroll_result.style.overflow = "auto";
461
462                if(is_ie)
463                        Element("border_table").width = "99.5%";
464
465                // Put header
466                var table_element = document.createElement("TABLE");
467                var tbody_element = document.createElement("TBODY");
468                table_element.setAttribute("id", "table_message_header_box");
469                table_element.className = "table_message_header_box";
470                tr_element = document.createElement("TR");
471                tr_element.className = "message_header";
472                td_element0 = document.createElement("TD");
473                td_element0.setAttribute("width", "7%");
474                chk_box_element = document.createElement("INPUT");
475                chk_box_element.id  = "chk_box_select_all_messages";
476                chk_box_element.setAttribute("type", "checkbox");
477                chk_box_element.className = "checkbox";
478                chk_box_element.onclick = function(){select_all_search_messages(this.checked,content_search.id);};
479                chk_box_element.onmouseover = function () {this.title=get_lang('Select all messages.')};
480                chk_box_element.onkeydown = function (e){
481                        if (is_ie)
482                        {
483                                if ((window.event.keyCode) == 46)
484                                        delete_msgs(current_folder,'selected','null');
485                        }
486                        else
487                        {
488                                if ((e.keyCode) == 46)
489                                        delete_msgs(current_folder,'selected','null');
490                        }
491                };
492
493                td_element0.appendChild(chk_box_element);
494                td_element1 = document.createElement("TD");
495                td_element1.setAttribute("width", "20%");
496                td_element1.align = "left";
497                if (sort_type == 'SORTBOX')
498                {
499                        td_element1.onclick = function () {
500                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTBOX_REVERSE'); };
501                                var args   = "$this.imap_functions.search_msg";
502                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTBOX_REVERSE";
503                                cExecute(args,handler,params);
504                        };
505                        td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
506                }
507                else
508                {
509                        td_element1.onclick = function () {
510                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTBOX'); };
511                                var args   = "$this.imap_functions.search_msg";
512                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTBOX";
513                                cExecute(args,handler,params);
514                        };
515                        if  (sort_type == 'SORTBOX_REVERSE')
516                                td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
517                        else
518                                td_element1.innerHTML = get_lang("Folder");
519                }
520                td_element2 = document.createElement("TD");
521                td_element2.setAttribute("width", "20%");
522                td_element2.align = "left";
523                if (sort_type == 'SORTWHO')
524                {
525                        td_element2.onclick = function () {
526                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTWHO_REVERSE'); };
527                                var args   = "$this.imap_functions.search_msg";
528                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTWHO_REVERSE";
529                                cExecute(args,handler,params);
530                        };
531                        td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
532                }
533                else
534                {
535                        td_element2.onclick = function () {
536                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTWHO'); };
537                                var args   = "$this.imap_functions.search_msg";
538                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTWHO";
539                                cExecute(args,handler,params);
540                        };
541                        if  (sort_type == 'SORTWHO_REVERSE')
542                                td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
543                        else
544                                td_element2.innerHTML = get_lang("who");
545                }
546                td_element3 = document.createElement("TD");
547                td_element3.setAttribute("width", "35%");
548                td_element3.align = "left";
549                if (sort_type == 'SORTSUBJECT')
550                {
551                        td_element3.onclick = function () {
552                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSUBJECT_REVERSE'); };
553                                var args   = "$this.imap_functions.search_msg";
554                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSUBJECT_REVERSE";
555                                cExecute(args,handler,params);
556                        };
557                        td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
558                }
559                else
560                {
561                        td_element3.onclick = function () {
562                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSUBJECT'); };
563                                var args   = "$this.imap_functions.search_msg";
564                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSUBJECT";
565                                cExecute(args,handler,params);
566                        };
567                        if  (sort_type == 'SORTSUBJECT_REVERSE')
568                                td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
569                        else
570                                td_element3.innerHTML = get_lang("subject");
571                }
572                td_element4 = document.createElement("TD");
573                td_element4.setAttribute("width", "12%");
574                td_element4.align = "center";
575                if (sort_type == 'SORTDATE')
576                {
577                        td_element4.onclick = function () {
578                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTDATE_REVERSE'); };
579                                var args   = "$this.imap_functions.search_msg";
580                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTDATE_REVERSE";
581                                cExecute(args,handler,params);
582                        };
583                        td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
584                }
585                else
586                {
587                        td_element4.onclick = function () {
588                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTDATE'); };
589                                var args   = "$this.imap_functions.search_msg";
590                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTDATE";
591                                cExecute(args,handler,params);
592                        };
593                        if  (sort_type == 'SORTDATE_REVERSE')
594                                td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
595                        else
596                                td_element4.innerHTML = get_lang("Date");
597                }
598                td_element5 = document.createElement("TD");
599                td_element5.setAttribute("width", "8%");
600                td_element5.align = "center";
601                if (sort_type == 'SORTSIZE')
602                {
603                        td_element5.onclick = function () {
604                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSIZE_REVERSE'); };
605                                var args   = "$this.imap_functions.search_msg";
606                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSIZE_REVERSE";
607                                cExecute(args,handler,params);
608                        };
609                        td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
610                }
611                else
612                {
613                        td_element5.onclick = function () {
614                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSIZE'); };
615                                var args   = "$this.imap_functions.search_msg";
616                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSIZE";
617                                cExecute(args,handler,params);
618                        };
619                        if  (sort_type == 'SORTSIZE_REVERSE')
620                                td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
621                        else
622                                td_element5.innerHTML = get_lang("Size");
623                }
624                tr_element.appendChild(td_element0);
625                tr_element.appendChild(td_element1);
626                tr_element.appendChild(td_element2);
627                tr_element.appendChild(td_element3);
628                tr_element.appendChild(td_element4);
629                tr_element.appendChild(td_element5);
630                tbody_element.appendChild(tr_element);
631                table_element.appendChild(tbody_element);
632                content_search.appendChild(table_element);
633                /*end of "put header"*/
634
635                if (!expresso_offline) {
636/*                      var span_options = document.createElement("SPAN");
637                        if (span_options)
638                                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> | ' +
639                                '<span title="' +
640                                get_lang("Move") +
641                                '" class="message_options" onclick=wfolders.makeWindowNew(\"' +
642                                content_search.id +
643                                '\",\"move_to\",true)>' +
644                                get_lang("Move") +
645                                '</span>';*/
646                        div_scroll_result.appendChild(table);
647                        content_search.appendChild(div_scroll_result);
648                        /*if (span_options)
649                                content_search.appendChild(span_options);*/
650                }
651                else {
652                        div_scroll_result.appendChild(table);
653                        content_search.appendChild(div_scroll_result);
654                }
655                resizeWindow();
656                EsearchE.show_paging(Rdata['num_msgs']);
657
658        }
659
660        searchE.prototype.open_msg = function(mailbox, uid_msg, subject){
661                var handler_get_msg = function(data){
662                        if(Element("border_id_" + uid_msg + "_r")){alert(get_lang("This message is already opened!"));}
663                        else{draw_message(data,create_border(url_decode(subject), uid_msg + "_r"));}
664                        //set_msg_as_read(msgs_to_set[i], false);
665                }
666                proxy_mensagens.get_msg(uid_msg,mailbox,false,handler_get_msg);
667                /*var args   = "$this.imap_functions.get_info_msg";
668                var params = "msg_number=" + uid_msg + "&msg_folder=" + mailbox;
669                cExecute(args,handler_get_msg,params);*/
670
671        }
672
673        // Adiciona caixas postais na busca;
674        searchE.prototype.add_mailboxes = function(){
675                var sel = Element("sel_search_nm_box1");
676                if (!proxy_mensagens.is_local_folder(this.name_box_search)) {
677                        var name_box     = this.name_box_search.split(cyrus_delimiter);
678                        if(this.name_box_search == "")
679                                return false;
680                        var name_box_def = "";
681                        if(name_box.length != 1){
682                                name_box_def = name_box[(name_box.length-1)];
683                        }else{
684                                name_box_def = get_lang("Inbox");
685                        }
686                }
687                else {
688                        if(this.name_box_search=='local_root')
689                                return;
690                        if(this.name_box_search=='local_Inbox')
691                                name_box_def = get_lang("Inbox");
692                        else if(this.name_box_search.indexOf("/")!="-1") {
693                                final_pos = this.name_box_search.lastIndexOf("/");
694                                name_box_def = this.name_box_search.substr(final_pos+1);
695                        }
696                        else
697                                name_box_def = this.name_box_search.substr(6);//Retira o 'local_'
698                }
699                if( sel.length > 0){
700                        for(var i=0; i < sel.options.length; i++){
701                                if(sel.options[i].value == this.name_box_search){
702                                        alert(get_lang('This message is already selected!'));
703                                        return false;
704                                }
705                        }
706                }
707                var opt = new Option(lang_folder(name_box_def),this.name_box_search,false,true);
708                sel[sel.length] = opt;
709        }
710        // Remove as caixas postais na busca;
711        searchE.prototype.del_mailboxes = function(){
712                var sel = Element("sel_search_nm_box1");
713                if(sel.length > 0){
714                        for(var i=0; i < sel.options.length; i++){
715                                if(sel.options[i].selected == true){
716                                        sel.options[i] = null;
717                                        i--;
718                                }
719                        }
720                }
721
722        }
723        // todas as caixas
724        searchE.prototype.all_mailboxes = function(){
725                var value = Element("check_all_msg").checked;
726                var cont = parseInt(0);
727                if(value){
728                        if(EsearchE.all_boxes.length > 0){
729                                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
730                        }
731                        for(var i=0; i < folders.length; i++){
732                                EsearchE.all_boxes[cont] = folders[i].folder_id;
733                                cont++;
734                        }
735                }else{
736                        EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
737                }
738        }
739
740        // Search;
741        searchE.prototype.func_search = function(value){
742                var fields = "##";
743                        // Verifica se os campos estão preenchidos;
744                        if(trim(Element("txt_ass").value) != ""){
745                                fields += "SUBJECT " +  "<=>" +url_encode(Element("txt_ass").value) + "##";
746                        }
747                        if(trim(Element("txt_body").value) != ""){
748                                fields += "BODY " + "<=>" + url_encode(Element("txt_body").value) + "##";
749                        }
750                        if(trim(Element("txt_de").value) != ""){
751                                fields += "FROM " + "<=>" + url_encode(Element("txt_de").value) + "##";
752                        }
753                        if(trim(Element("txt_para").value) != ""){
754                                fields += "TO " + "<=>" + url_encode(Element("txt_para").value) + "##";
755                        }
756                        if(trim(Element("txt_cc").value) != ""){
757                                fields += "CC " + "<=>" + url_encode(Element("txt_cc").value) + "##";
758                        }
759                        if (trim(Element("since_date").value) != ""){
760                            if (validate_date(Element("since_date").value))
761                            {
762                                fields += "SINCE " + "<=>" + url_encode(Element("since_date").value) + "##";
763                            }
764                            else
765                                {
766                                    alert(get_lang('Invalid date on field %1'), get_lang('Since Date'));
767                                    return false;
768                                }
769                        }
770                        if (trim(Element("before_date").value) != ""){
771                            if (validate_date(Element("before_date").value))
772                            {
773                                fields += "BEFORE " + "<=>" + url_encode(Element("before_date").value) + "##";
774                            }
775                            else
776                                {
777                                    alert(get_lang('Invalid date on field %1'), get_lang('Before Date'));
778                                    return false;
779                                }
780                        }
781                        if(trim(Element("on_date").value) != ""){
782                            if (validate_date(Element("on_date").value))
783                            {
784                                fields += "ON " + "<=>" + url_encode(Element("on_date").value) + "##";
785                            }
786                            else
787                                {
788                                    alert(get_lang('Invalid date on field %1'), get_lang('On Date'));
789                                    return false;
790                                }
791
792                        }
793                        if(trim(Element("flagged").options[Element("flagged").selectedIndex].value) != ""){
794                            if (Element("flagged").options[Element("flagged").selectedIndex].value == "FLAGGED"){
795                                fields += "FLAGGED##";
796                            }
797                            else {
798                                fields += "UNFLAGGED##";
799                            }
800                        }
801                        if(trim(Element("seen").options[Element("seen").selectedIndex].value) != ""){
802                            if (Element("seen").options[Element("seen").selectedIndex].value == "SEEN"){
803                                fields += "SEEN##";
804                            }
805                            else {
806                                fields += "UNSEEN##";
807                            }
808                        }
809                        if(trim(Element("answered").options[Element("answered").selectedIndex].value) != ""){
810                            //switch (Element("answered").options[Element("answered").selectedIndex].value){
811                            //    case "FORWARDED":
812                            //        fields += "ANSWERED##DRAFT##";
813                            //        break;
814                            //    case "ANSWERED":
815                            //        fields += "ANSWERED##UNDRAFT";
816                            //        break;
817                            //    case "UNFORWARDED":
818                            //        fields += "UNDRAFT##";
819                            //    case "UNANSWERED":
820                            //        fields += "UNANSWERED##";
821                            //}
822                            if (Element("answered").options[Element("answered").selectedIndex].value == "ANSWERED"){
823                                fields += "ANSWERED##";
824                            }
825                            else {
826                                fields += "UNANSWERED##";
827                            }
828                        }
829                        if(trim(Element("recent").options[Element("recent").selectedIndex].value) != ""){
830                            if (Element("answered").options[Element("answered").selectedIndex].value == "RECENT"){
831                                fields += "RECENT##";
832                            }
833                            else {
834                                fields += "OLD##";
835                            }
836                        }
837                        if(value) {
838                                fields = "##ALL " +  "<=>" +url_encode(value) + "##";
839                        }
840
841                if(fields == "##"){
842                        alert(get_lang("Define some search parameters!"));
843                        return false;
844                }
845                var local_folders = new Array();
846                var temp;
847
848                if(Element("check_all_msg").checked){
849                        this.all_mailboxes();
850                        var nm_box = new Array;
851                        for(var i=0; i < EsearchE.all_boxes.length; i++){
852                                nm_box[i] = EsearchE.all_boxes[i] + fields;
853                        }
854                        if (preferences.use_local_messages == 1) {
855                                temp = expresso_local_messages.list_local_folders();
856                                for (var x in temp) {
857                                        local_folders.push(temp[x][0]);
858                                }
859                        }
860                }else{
861                        var nm_box = new Array;
862                        var sel_combo = Element("sel_search_nm_box1");
863                        if( sel_combo.options.length <= 0){
864                                alert(get_lang("Define the boxes to search!"));
865                                return false;
866                        }
867
868                        for(var i=0; i < sel_combo.options.length; i++){
869                                sel_combo.options[i].selected = true;
870                        }
871                        for(var i=0; i < sel_combo.options.length; i++){
872                                if(sel_combo.options[i].selected == true){
873                                        if(!proxy_mensagens.is_local_folder(sel_combo.options[i].value))
874                                                nm_box[nm_box.length] = sel_combo.options[i].value + fields;
875                                        else
876                                                local_folders.push(sel_combo.options[i].value.substr(6));
877                                }
878                        }
879                }
880                var handler = function(data){
881                        if (data == "none")
882                                alert(get_lang('no results found'));
883                        else
884                                EsearchE.mount_result(data,'SORTDATE');
885
886                }
887                var args   = "$this.imap_functions.search_msg";
888                this.condition = nm_box;
889                var params = "condition=" + nm_box+
890                        "&page=0"+
891                        "&sort_type=SORTDATE";
892                this.page = 0;
893                if(expresso_offline)
894                        handler('none');
895                else
896                        cExecute(args,handler,params);
897        }
898        // clean;
899        searchE.prototype.func_clean = function(){
900                // Limpa os campos;
901                for(var i=0; i < this.txtfields.length; i++){
902                        if(Element(this.txtfields[i]) != null){Element(this.txtfields[i]).value = "";}
903                }
904
905                for(i = 0; i < this.selectFields.length; i++)
906                {
907                    if (Element(this.selectFields[i]))
908                    {
909                        Element(this.selectFields[i]).selectedIndex = 0;
910                    }
911                }
912            if(Element("check_all_msg") != null){Element("check_all_msg").checked = false;}
913
914            EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
915                EsearchE.del_mailboxes();
916        }
917
918        // close
919        searchE.prototype.func_close = function(type){
920                var _this = this;
921                _this.name_box_search = "";
922                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
923                _this.type = type;
924                _this.searchW['window_search'].close();
925        }
926        // Monta a janela em tela;
927        searchE.prototype.showWindow = function(div){
928                if(!this.searchW[div.id]) {
929                        div.style.width = "804px";
930                        div.style.height = "440px";
931                        div.style.visibility = "hidden";
932                        div.style.position = "absolute";
933                        div.style.zIndex = "10003";
934                        var title = ":: "+ get_lang("Search")+" ::";
935                        var wHeight = div.offsetHeight + "px";
936                        var wWidth =  div.offsetWidth   + "px";
937
938                        win = new dJSWin({
939                                id: 'ccList'+div.id,
940                                content_id: div.id,
941                                width: wWidth,
942                                height: wHeight,
943                                title_color: '#3978d6',
944                                bg_color: '#eee',
945                                title: title,
946                                title_text_color: 'white',
947                                button_y_img: '../phpgwapi/images/win_min.gif',
948                                button_x_img: '../phpgwapi/images/winclose.gif',
949                                border: true});
950                        this.searchW[div.id] = win;
951                        win.draw();
952                }else{
953                        var _this = this;
954                        win = this.searchW[div.id];
955                        if((_this.type == "close" && win.state == 0) || win.state == 2){EsearchE.func_clean();}
956                        win.draw();
957                }
958                win.open();     
959        }
960
961        searchE.prototype.aux_local_folder_display = function(folder) {
962                if(!expresso_offline)
963                        return "(Local) " + lang_folder(folder.substr(6));
964                else
965                        return lang_folder(folder.substr(6));
966        }
967
968// Cria o objeto
969        var EsearchE;
970        EsearchE = new searchE();
Note: See TracBrowser for help on using the repository browser.