source: sandbox/2.3-MailArchiver/expressoMail1_2/js/search.js @ 6779

Revision 6779, 55.8 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado Expresso(branch 2.3) integrado ao MailArchiver?.

Line 
1/**************************************************************************\
2 Início
3\**************************************************************************/
4        function searchE()
5        {
6                this.totalPages = 1;
7                this.numPages = 5;
8                this.lastPage = 0;
9                this.searchW            = [];
10                this.condition          = "";
11                this.sort_type          = "";
12                //this.page                     = 0;
13                this.name_box_search = "";
14                this.all_boxes          = [];
15                this.type                       = "";
16                this.txtfields          = new Array("txt_ass","txt_de","txt_body","txt_para","txt_cc","txt_cco", "since_date", "before_date", "on_date");
17                this.selectFields       = new Array("flagged", "seen", "answered", "recent");
18                this.localResults   = 0;
19        }
20
21        //Monta os forms dentro da janela;
22        searchE.prototype.showForms = function(value)
23        {
24                // Principal
25                if(!Element("window_search"))
26                {
27                        var form_search = document.createElement("DIV");
28                        form_search.style.visibility = 'hidden';
29                        form_search.style.top = '0px';
30                        form_search.style.left = '0px';
31                        form_search.id = "window_search";
32                        document.body.appendChild(form_search);
33                }
34
35                // Pesquisa
36                if(!Element("div_form_search"))
37                {
38                        var div_form_search = document.createElement("DIV");
39                        div_form_search.id = "div_form_search";
40                        div_form_search.style.position = "absolute";
41                        div_form_search.style.left = "10px";
42                        div_form_search.style.top  = "10px";
43                        div_form_search.style.borderStyle = "outset";
44                        div_form_search.style.borderColor = "black";
45                        div_form_search.style.borderWidth = "1px";
46                        div_form_search.style.width = "784px";
47                        div_form_search.style.height = "418px";
48                        div_form_search.style.overflow = "hidden";
49                        div_form_search.innerHTML = "";
50                        var call_form_search = EsearchE.mount_form();
51                        div_form_search.appendChild(call_form_search);
52                        form_search.appendChild(div_form_search);
53
54                        Calendar._TT['WEEKEND'] = '0,6'; // hack
55                        Calendar._TT['DAY_FIRST'] = 'Mostrar %s primeiro';
56                        Calendar.setup({
57                            inputField  : 'since_date',
58                            button      : 'since_date-trigger',
59                            ifFormat    : '%d/%m/%Y',
60                            daFormat    : '%d/%m/%Y',
61                            overMe      : 'window_search'
62                        });
63
64                        Calendar.setup({
65                            inputField  : 'before_date',
66                            button      : 'before_date-trigger',
67                            ifFormat    : '%d/%m/%Y',
68                            daFormat    : '%d/%m/%Y',
69                            overMe      : 'window_search'
70                        });
71
72                        Calendar.setup({
73                            inputField  : 'on_date',
74                            button      : 'on_date-trigger',
75                            ifFormat    : '%d/%m/%Y',
76                            daFormat    : '%d/%m/%Y',
77                            overMe      : 'window_search'
78                        });
79
80                }
81
82                if(!Element("div_button_search")){
83                        var div_button_search    = document.createElement("DIV");
84                                div_button_search.id = "div_button_search";
85                                div_button_search.style.position = "absolute";
86                                div_button_search.style.marginLeft = "430px";
87                                div_button_search.style.top = "253px";
88                                div_button_search.style.width = "350px";
89                                div_button_search.style.height = "25px";
90                                div_button_search.innerHTML = "<table style='width: 100%;' border='0' cellpadding='0' cellspacing='0' align='center'>"+
91                                                                                          "<tr>"+
92                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Search') + " onclick='EsearchE.func_search()'></td>"+
93                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Clean') + " onclick='EsearchE.func_clean()'></td>"+
94                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Close') + " onclick='EsearchE.func_close(\"hidden\")'></td>"+
95                                                                                          "</tr>"+
96                                                                                          "</table>";
97                                form_search.appendChild(div_button_search);
98                }
99
100                if(!Element("table_layer")){
101                        var table_layer    = "";
102                }
103
104                if(value == "")
105                        EsearchE.showWindow(Element("window_search"));
106
107                // Cria as caixas postais;
108                EsearchE.mount_folders();
109
110                if(value)
111                {
112                        Element("check_all_msg").checked = true;
113                        EsearchE.all_mailboxes();
114                        EsearchE.func_search(value);
115                }
116
117        }
118       
119        //Form
120        searchE.prototype.mount_form = function(value)
121        {
122                var form_sch = document.createElement("FORM");
123                        form_sch.id  = "form_sch";
124
125            form_sch.innerHTML =  '<fieldset style="width:400px; text-align:right; padding: 5px; position:absolute;">'
126                                                + '     <legend>'+get_lang('Inform your search in the text fields')+'</legend>'
127                                                + '     <label>'+get_lang("From")+':</label>'
128                                                + '     <input style="margin-left: 6px;" type="text" id="txt_de" size="39">'
129                                                + '     <br style="margin-bottom:15px"/>'
130                                                + '     <label>'+get_lang('To')+':</label>'
131                                                + '     <input style="margin-left: 6px;" type="text" id="txt_para" size="39">'
132                                                + '     <br style="margin-bottom:15px"/>'
133                                                + '     <label>'+get_lang('Cc')+':</label>'
134                                                + '     <input style="margin-left: 6px;" type="text" id="txt_cc" size="39">'
135                                                + '     <br style="margin-bottom:15px"/>'
136                                                + '     <label>'+get_lang('Subject')+':</label>'
137                                                + '     <input style="margin-left: 6px;" type="text" id="txt_ass" size="39">'
138                                                + '     <br style="margin-bottom:15px"/>'
139                                                + '     <label>'+get_lang('Message body')+':</label>'
140                                                + '     <input style="margin-left: 6px;" type="text" id="txt_body" size="39">'
141
142                                                + '     <br style="margin-bottom:30px"/>'
143                        + '     <label>'+get_lang("Since Date")+':</label>'
144                        + '     <input style="margin-left: 6px;" type="text" id="since_date" size="8" maxlength="10" onkeypress="return dateMask(this, event);">'
145                        + '     <img id="since_date-trigger" src="../phpgwapi/templates/default/images/datepopup.gif" title="'+get_lang("Select Date")+'" style="cursor:pointer; cursor:hand;"/>'
146                        + '     <label style="margin-left: 20px;">'+get_lang('Before Date')+':</label>'
147                        + '     <input style="margin-left: 6px;" type="text" id="before_date" size="8" maxlength="10" onkeypress="return dateMask(this, event);">'
148                        + '     <img id="before_date-trigger" src="../phpgwapi/templates/default/images/datepopup.gif" title="'+get_lang("Select Date")+'" style="cursor:pointer; cursor:hand;"/>'
149                        + '     <br style="margin-bottom:15px"/>'
150
151                        + '     <label>'+get_lang('On Date')+':</label>'
152                        + '     <input style="margin-left: 6px;" type="text" id="on_date" size="8" maxlength="10" onkeypress="return dateMask(this, event);">'
153                        + '     <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>'
154                        + '     <br style="margin-bottom:30px"/>'
155
156                        + '     <label>'+get_lang('Flags')+':</label>'
157                        + '     <select style="width:15em; margin-left: 6px" name="flagged" id="flagged">'
158                        + '     <option value=""/>'
159                        + '     <option value="FLAGGED">'+ get_lang("Flagged") +'</option>'
160                        + '     <option value="UNFLAGGED">'+ get_lang("Unflagged") +'</option>'
161                        + '     </select>'
162                        + '     <br style="margin-bottom:15px"/>'
163                        + '     <select style="width:15em;" name="seen" id="seen">'
164                        + '     <option value=""/>'
165                        + '     <option value="SEEN">'+ get_lang("Seen") +'</option>'
166                        + '     <option value="UNSEEN">'+ get_lang("Unseen") +'</option>'
167                        + '     </select>'
168                        + '     <br style="margin-bottom:15px"/>'
169                        + '     <select style="width:15em;" name="answered" id="answered">'
170                        + '     <option value=""/>'
171                        + '     <option value="ANSWERED">'+ get_lang('Answered/Forwarded') +'</option>'
172                        + '     <option value="UNANSWERED">'+ get_lang('Unanswered/Unforwarded') +'</option>'
173                        + '     </select>'
174                        + '     <br style="margin-bottom:15px"/>'
175                        + '     <select style="width:15em;visibility:hidden;" name="recent" id="recent">'
176                        + '     <option value=""/>'
177                        + '     <option value="RECENT">'+ get_lang('Recent') +'</option>'
178                        + '     <option value="OLD">'+ get_lang('Old') +'</option>'
179                        + '     </select>'
180
181                        + '     <br style="margin-bottom:60px"/>'
182                                                + '</fieldset>'
183                                                + '<fieldset style="width:350px; padding: 5px; position:absolute; margin-left: 414px">'
184                                                + '     <legend>'+get_lang('Search the messages in these folders')+'</legend>'
185                                                + '     <div id="folders" style="width:160px; height:150px;float:left;margin-bottom:10px;"></div>'
186                                                + '     <div style="float:left;height:100px;padding-top:50px;margin: 0 3px;">'
187                                                + '             <input type="button" id="incluir" name="incluir" value=">>" onclick="EsearchE.add_mailboxes()">'
188                                                + '             <br style="margin-bottom:15px">'
189                                                + '             <input type="button" id="excluir" name="excluir" value="<<" onclick="EsearchE.del_mailboxes()">'
190                                                + '     </div>'
191                                                + ' <div style="float:left;">'
192                                                + '      <select multiple id="sel_search_nm_box1" name="sel_search_nm_box1" style="width:140px;height:150px;"></select>'
193                                                + ' </div>'
194                                                + '     <br clear="both">'
195                                                + '     <input type="checkBox" id="check_all_msg" name="check_all_msg" onclick="EsearchE.all_mailboxes()">'
196                                                + '     <label for="check_all_msg"><b>'+get_lang('In all the folders')+'</b></label>'
197                                                + '     <div style="padding:0;margin:0;">'
198                                                + '     <br clear="both">'
199                                                + '     <input type="checkBox" id="local_recursive" name="local_recursive" disabled="disabled">'
200                                                + '     <label for="local_recursive" id="lbl_local_recursive" style="color:grey;"><b>'+get_lang('In local folders recursively')+'</b></label>'
201                                                + '     </div>'                                           
202                                                + '</fieldset>';
203
204                return form_sch;
205        }
206
207        // Pastas;
208        searchE.prototype.mount_folders = function()
209        {
210                connector.loadScript("TreeS");
211
212                if( Element("div_folders_search") == null)
213                {
214                        var div_folders = document.createElement("DIV");
215                                div_folders.id = "div_folders_search";
216                                div_folders.style.width = "155px";
217                                div_folders.style.height = "152px";
218                                div_folders.style.borderStyle = "outset";
219                                div_folders.style.borderColor = "black";
220                                div_folders.style.borderWidth = "1px";
221                                div_folders.style.background  = "#F7F7F7";
222                                div_folders.style.overflow = "auto";
223                                div_folders.innerHTML = "";
224                                var dest_div = Element("folders");
225                                dest_div.appendChild(div_folders);
226                }   
227
228                var tree_folders_search = new dFTree({name: 'search_folders'});
229                //ttree.make_tree(folders,"div_folders_search","_folders_tree_search","","","","");         
230                //ttree.make_tree(folders,"div_folders_search","search_folders","","","","");
231                ttree.make_tree(folders,"div_folders_search","search_folders","","","",false);
232                var drawinginfo = {treeObject: tree_folders_search, treeName: 'search_folders'};
233                expresso_mail_archive.drawdata = drawinginfo;
234
235        }
236       
237        function openpage(data)
238        {
239                var _data                       = [3];
240                var _gears                      = [];
241        var local_folders       = [];
242
243        // Gears - local
244                if (preferences.use_local_messages == 1 && EsearchE.localResults != 0)
245                {
246                        /*temp = expresso_local_messages.list_local_folders();
247                        temp = expresso_mail_archive.listFolders();
248                        for (var x in temp)
249                        {
250                                local_folders.push(temp[x][0]);
251                        }
252                    if ( local_folders.length > 0 )
253                        _gears = expresso_local_messages.search( local_folders, expresso_local_messages.getFilter() );
254                        _data['gears_num_msgs'] = _gears.length;
255                */
256                    _data['gears_num_msgs']     = expresso_mail_archive.search_queryresult.length;
257                }else{
258                    _data['gears_num_msgs']     = 0;
259                }
260
261                _data['data']                   = data['data'];
262                _data['num_msgs']               = data['num_msgs'];
263               
264
265                delete_border( data['currentTab'], false);
266               
267                EsearchE.mount_result(_data);
268        }
269
270        searchE.prototype.show_paging = function(size)
271        {
272                /*if ( preferences.use_local_messages == 1 && expresso_mail_archive.folder)
273                    var is_local_folder_search = true;
274                else
275                    var is_local_folder_search = false;
276                */
277               
278                var span_pg = Element("span_paging"+currentTab);
279
280                if( span_pg == null )
281                {
282                        span_pg         = document.createElement('span');
283                        span_pg.id      = "span_paging"+currentTab;
284                }
285                else
286                        span_pg.innerHTML = "";
287
288                if(size > parseInt(preferences.max_email_per_page)) {
289                    this.totalPages = parseInt(size/preferences.max_email_per_page);
290                    if((size/preferences.max_email_per_page) > this.totalPages)
291                        this.totalPages++;
292                }
293               
294                if(this.page != 0) {
295                    _link = document.createElement("A");
296                    _link.href  = 'javascript:EsearchE.page=0;';
297                    _link.href += 'cExecute("$this.imap_functions.search_msg",openpage,"condition='+this.condition+'&sort_type='+this.sort_type+'&page=0&current_tab='+currentTab+'");';
298                }
299                else {
300                    _link = document.createElement("SPAN");
301                }
302                span_pg.appendChild(_link);
303
304                _link.innerHTML = "&lt;&lt;";
305                _link.title = get_lang("First");
306                span_pg.innerHTML += "&nbsp;";
307
308                if(this.page == this.lastPage + (this.numPages))
309                {
310                    this.lastPage = this.page - 1;
311                }
312                else if((this.lastPage != 0 && this.lastPage == this.page) || this.page == (this.totalPages-1))
313                {
314                    this.lastPage = this.page - (this.numPages - 1);
315                }
316                else if(this.page == 0)
317                {
318                    this.lastPage = 0;
319                }
320
321                if(this.lastPage < 0)
322                    this.lastPage = 0;
323                else if(this.lastPage > 0 && (this.lastPage > (this.totalPages -(this.numPages - 1))))
324                    this.lastPage = this.totalPages -(this.numPages);
325
326                var hasMarked = false;
327                for(i = this.lastPage; i <= this.totalPages; i++)
328                {
329                        if( ( i * preferences.max_email_per_page ) > size)
330                        {
331                                break;
332                        }
333
334                        if( this.page == i || (i == this.totalPages && !hasMarked) )
335                        {
336                                var _link = document.createElement('span');
337                                        _link.setAttribute("style", "font-weight:bold; color:red")
338                                        _link.innerHTML = ( this.page + 1 ) + "&nbsp;&nbsp;";
339                        }
340                        else
341                        {
342                                var _page = i;
343                                var _link = document.createElement('A');
344                                        _link.innerHTML = ( _page + 1 ) + "&nbsp;&nbsp;";
345                                        _link.href  = 'javascript:EsearchE.page='+i+';';
346                                        //if(!is_local_folder_search)
347                                        _link.href += 'cExecute("$this.imap_functions.search_msg",openpage,"condition='+this.condition+'&sort_type='+this.sort_type+'&page='+_page+'&current_tab='+currentTab+'");';
348                                        //else{
349                                            //var offlow = (i*preferences.max_email_per_page)+1;
350                                            //var offtop = (i*preferences.max_email_per_page)*2;
351                                            //var src_offset = eval('({"lowerIndex":"' + offlow + '", "upperIndex":"' + offtop + '"})');                   
352                                            //expresso_mail_archive.querydata = expresso_mail_archive.queryconfig.query(src_offset);
353                                            //var localtabid = currentTab.substr(currentTab.indexOf('local_msg')+9, currentTab.length);
354                                            //window.alert('tab id = ' + currentTab.substr(currentTab.indexOf('local_msg')+9, currentTab.length));
355                                            //_link.href += 'cExecute("$this.imap_functions.search_msg",openpage,"condition='+this.condition+'&sort_type='+this.sort_type+'&page='+_page+'&current_tab='+currentTab+'");';
356                                            //_link.href += "current_page="+i+";kill_current_box(); draw_paging("+expresso_mail_archive.queryresult.length+");expresso_mail_archive.search();alternate_border("+localtabid+"); draw_box(expresso_mail_archive.queryresult, get_current_folder());";
357                                            //_link.href += "expresso_mail_archive.search();delete_border("+localtabid+", false); EsearchE.mount_result(expresso_mail_archive.queryresult, this.sort_type);";
358                                        //}
359                                           
360                        }
361                        _link.innerHTML = "&nbsp;...&nbsp;";
362                        if(i == (this.lastPage + this.numPages))
363                        {
364                            span_pg.appendChild( _link );
365                            break;
366                        }
367                        else if(this.lastPage == 0 || i != this.lastPage)
368                        {
369                            _link.innerHTML = "&nbsp;"+( i + 1 )+"&nbsp;";
370                        }
371                        //span_pg.innerHTML += "&nbsp;";
372
373                        span_pg.appendChild( _link );
374                }
375
376                if(this.page != (this.totalPages - 1)) {
377                    _link = document.createElement("A");
378                    _link.href  = 'javascript:EsearchE.page='+(this.totalPages-1)+';';
379                    _link.href += 'cExecute("$this.imap_functions.search_msg",openpage,"condition='+this.condition+'&sort_type='+this.sort_type+'&page='+(this.totalPages-1)+'&current_tab='+currentTab+'");';
380                }
381                else {
382                    _link = document.createElement("SPAN");
383                }
384
385                span_pg.innerHTML += "&nbsp;";
386                span_pg.appendChild(_link);
387
388                _link.title = get_lang("Last");
389                _link.innerHTML += "&gt;&gt;";
390
391                Element("div_menu_c3").appendChild(span_pg);
392        }
393
394        searchE.prototype.searchFor = function( borderID, sortType )
395        {
396                var border_id   = borderID;
397                var sort_type   = sortType;
398
399                var is_local = border_id.match('.*_local_.*');
400
401                var args   = "$this.imap_functions.search_msg";
402                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type="+sort_type;
403
404                var handler = function( data )
405                {
406                var allMsg                      = [3];
407                var gears                       = [];
408                var local_folders       = [];
409
410                if ( preferences.use_local_messages == 1 && is_local)
411                {
412                    if(sortType.toLowerCase().indexOf("_") == -1){
413                        var sortcrt = sortType.toLowerCase();
414                        var sortord = 'asc';
415                    }
416                    else{
417                        var sortcrt = sortType.toLowerCase().substr(0, sortType.toLowerCase().indexOf("_"));
418                        var sortord = 'desc';
419                    }
420
421                    switch(sortcrt){
422                         case 'sortwho':
423                            var oexpcrt = 'from';
424                            break;
425                         case 'sortsubject':
426                            var oexpcrt = 'subject';
427                            break;
428                         case 'sortsize':
429                            var oexpcrt = 'size';
430                            break;
431                         case 'sortbox':
432                            var oexpcrt = 'folder';
433                            break;                           
434                         default:
435                            var oexpcrt = 'date';
436                            break;
437                    }
438                    var oexporder = eval('({"order":{"' + oexpcrt + '":"' + sortord + '"}})');                   
439                    expresso_mail_archive.querydata = expresso_mail_archive.search_queryconfig.query(oexporder);
440                    expresso_mail_archive.search();
441                    var ma_query_result = expresso_mail_archive.search_queryresult;
442                    //expresso_mail_archive.search(local_folders, fields);
443                    //expresso_local_messages.setSortType('SORTDATE');
444                    //tmp = expresso_local_messages.search( local_folders, fields );
445                    //tmp = expresso_mail_archive.queryresult;                       
446                }
447               
448                if( data['num_msgs'])
449            {
450                allMsg['data']                          = data['data'];
451                allMsg['num_msgs']                      = data['num_msgs'];
452               
453            }
454
455            if (ma_query_result.length > 0)
456            {
457                this.localResults = ma_query_result.length;
458                allMsg['data_gears']                    = ma_query_result;
459            }else{
460                 this.localResults = 0;
461            }           
462                delete_border( border_id, false );     
463                EsearchE.mount_result( allMsg , sort_type );
464                };
465
466                if (is_local)
467                {
468                    eval("handler('none')");
469                }
470                else
471                {
472                    cExecute(args,handler,params);
473                }
474        }
475       
476        searchE.prototype.viewLocalMessage = function()
477        {
478                var data                        = [2];
479                var gears                       = [];
480                var local_folders       = [];
481
482         
483      //MailArchiver - local data
484                if ( preferences.use_local_messages == 1 )
485                {
486                        data['data_gears']      = expresso_mail_archive.search_queryresult;
487                       
488                        data['num_msgs']        = expresso_mail_archive.search_queryresult.length;
489                        write_msg( data['num_msgs'] + " " + get_lang("results found") );
490                        EsearchE.mount_result(data , 'SORTDATE');
491                }
492        }           
493       
494        searchE.prototype.make_tr_message = function(aux,border_id,i) {
495                var tr = document.createElement("TR");
496                if(typeof(preferences.line_height) != 'undefined')
497                        tr.style.height = preferences.line_height;
498
499                var mailbox = aux.boxname;
500                var uid_msg = aux.uid;
501                var subject = aux.subject;
502
503                tr.id = uid_msg+"_s"+numBox;
504
505                // Keep the two lines together please
506                tr.setAttribute('name',mailbox);
507                tr.name = mailbox;
508
509                if ( aux.flag.match("U") )
510                        add_className(tr,'tr_msg_unread');
511
512                add_className(tr, i%2 != 0 ? 'tr_msg_read2' : 'tr_msg_read');
513
514                var _onclick = function()
515                {
516                        proxy_mensagens.get_msg(this.parentNode.id,url_encode(this.parentNode.getAttribute('name')),false,show_msg);
517                };
518
519                for(var j=0 ; j <= 10 ; j++)
520                {
521                        var td = document.createElement("TD");
522                        if (j == 0)
523                        {
524                                td.setAttribute("width", colSizes[1][0]);
525                                var chk_onclick;
526                                if (is_ie)
527                                        chk_onclick = "changeBgColor(window.event,"+uid_msg+");";
528                                else
529                                        chk_onclick = "changeBgColor(event,"+uid_msg+");";
530                                var td1 = '<input type="checkbox" onclick="' + chk_onclick + '" id="check_box_message_'+tr.id+'"></input>';
531
532                        }
533                        if (j == 1)
534                        {
535                                td.setAttribute("width", colSizes[1][1]);
536                                if (aux.flag.match('T'))
537                                {
538                                        attachNum = parseInt(aux.flag.substr(aux.flag.indexOf('T')+1));
539                                        td1 = "<img src='templates/"+template+"/images/clip.gif' title='"+attachNum +' '+ get_lang('attachment(s)')+"'>";
540                                }
541                                else
542                                        td1 = '';
543                        }
544                        if (j == 2)
545                        {
546                                td.setAttribute("width", colSizes[1][2]);
547                                td.id = "td_message_answered_"+uid_msg;
548                                if (aux.flag.match('X'))
549                                        td1 = '<img src=templates/'+template+'/images/forwarded.gif title="'+get_lang('Forwarded')+'">';
550                                else
551                                        if (aux.flag.match('A'))
552                                                td1 = '<img src=templates/'+template+'/images/answered.gif title="'+get_lang('Answered')+'">';
553                                        else
554                                                td1 = '';
555                        }
556                        if (j == 3)
557                        {
558                                td.setAttribute("width", colSizes[1][3]);
559                                td.id = "td_message_important_"+tr.id;
560                                if (aux.flag.match("F"))
561                                {
562                                        add_className(tr, 'flagged_msg');
563                                        td1 = "<img src='templates/"+template+"/images/important.gif' title='"+get_lang('Flagged')+"'>";
564                                }
565                                else
566                                        td1 = '';
567                        }
568                        if (j == 4)
569                        {
570                                td.setAttribute("width", colSizes[1][4]);
571                                td.id = "td_message_sent_"+uid_msg;
572                                td1 = '';
573                        }
574
575                        if ( j == 5 )
576                        {
577                                td.setAttribute("width", colSizes[1][5]);
578                                td.className = "td_resizable";
579                                td.onclick = _onclick;
580                                var nm_box = aux.boxname.split(cyrus_delimiter);
581                                var td1 = nm_box.pop();
582                                td.setAttribute("NoWrap","true");
583                                td.style.overflow = "hidden";
584                                td.style.color = "#42795b";
585                                td.style.fontWeight = "bold";
586
587                                var td1  = get_lang(td1).substr(get_lang(td1).length-1) == "*"?td1:get_lang(td1);
588
589                                                                        td1 = translateFolder(td1);
590
591
592                                if( proxy_mensagens.is_local_folder(td1))
593                                {
594                                        var td1 = this.aux_local_folder_display(td1);
595                                }
596                        }
597
598                        if( j == 6 )
599                        {
600                                if (aux.from.length > 29)
601                                        aux.from = aux.from.substr(0,29) + "...";
602
603                                td.setAttribute("width", colSizes[1][6]);
604                                td.className = "td_resizable";
605                                td.onclick = _onclick;
606                                td.setAttribute("NoWrap","true");
607                                                                        td.style.overflow = "hidden";
608                                var td1  =  '<div style="width:100%;overflow:hidden">'+aux.from+"</div>";
609                        }
610
611                        if( j == 7 )
612                        {
613                                var subject_encode = url_encode(subject);
614
615                                if (! subject_encode)
616                                        aux.subject = get_lang("no subject") + "...";
617                                if (aux.subject.length > 70)
618                                        aux.subject = aux.subject.substr(0,70) + "...";
619
620                                td.setAttribute("width", colSizes[1][7]);
621                                td.className = "td_resizable";
622                                td.onclick = _onclick;
623                                td.setAttribute("NoWrap","true");
624                                td.style.overflow = "hidden";
625
626                                var td1  = aux.subject;
627                        }
628
629                        if( j == 8 )
630                        {
631                                td.setAttribute("width", colSizes[1][8]);
632                                td.className = "td_resizable";
633                                td.align                = "center";
634                                td.onclick              = _onclick;
635                               
636                                var today = new Date();
637                                today.setHours(23);
638                                today.setMinutes(59);
639                                today.setSeconds(59);
640                                today.setMilliseconds(999)
641                                                               
642                                // old local messages can capture headers_msgs.udate as "hh:mm" or "dd/mm/yyyy"
643                                if (aux.udate.toString().match(/\d{2}:\d{2}/) || aux.udate.toString().match(/\d{2}\/\d{2}\/\d{4}/))
644                                {
645                                    //temp_msg_day = aux.msg_day.split('/');                                   
646                                    //temp_msg_hour = aux.msg_hour.split(':');
647                                    //date_msg = new Date(temp_msg_day[2], temp_msg_day[1]-1, temp_msg_day[0], temp_msg_hour[0], temp_msg_hour[1]);
648                                    date_msg = aux.udate;
649                                }
650                                else
651                                {
652                                    // The new date implementation
653                                    // Using offset between user defined timezone and GMT
654                                    // Date object converts time to local timezone, so we have to adjust it
655                                    udate_local = aux.udate*1000 + gmtoffset*1000 + today.getTimezoneOffset()*60*1000;
656                                    date_msg = new Date(udate_local);
657                                }
658
659
660
661
662                                //if( validate_date( aux.udate ) )
663                                if( validate_date( new String(date_msg) ) )
664                                {
665                                        var td1 = date_msg;
666                                }
667                                else
668                                {
669                                        var dt  = new Date( aux.udate * 1000 );
670                                        var td1  = dt.getDate() + "/";
671
672                                        if( !( dt.getMonth() + 1 ).toString().match(/\d{2}/) )
673                                                td1 += "0"+( dt.getMonth() + 1 ) + "/";
674                                        else
675                                                td1 += ( dt.getMonth() + 1 ) + "/";
676
677                                        td1 += dt.getFullYear();
678                                }
679                        }
680
681                        if( j == 9 )
682                        {
683                                td.setAttribute("width", colSizes[1][9]);
684                                td.className = "td_resizable";
685                                td.align = "center";
686                                td.onclick = _onclick;
687                                var td1  = borkb(aux.size);
688                        }
689
690                        if( j == 10 )
691                        {
692                                if (aux.flag.match("U"))
693                                        add_className(tr, 'tr_msg_unread');
694                                if (aux.flag.match("F"))
695                                        add_className(tr, 'flagged_msg');
696                                var td1 = '';
697                        }
698                        if (j<10) {
699                                td.innerHTML = td1;
700                                tr.appendChild(td);
701                        }
702                }
703
704                _dragArea.makeDragged(tr, uid_msg, subject, true, mailbox);
705
706                return tr;
707        }
708
709        // Form resultado
710        searchE.prototype.mount_result = function( Data, sort_type, keep_border )
711        {
712                var data = ( Data['data'] ) ? Data['data'] : Data['data_gears'];
713                if ( data == undefined )
714                        return;
715               
716                var cont = parseInt(0);
717
718                if ( typeof(sort_type) != 'undefined')
719                        this.sort_type = sort_type;
720                else
721                        sort_type = this.sort_type;
722
723                var tab = numBox;
724
725                if ( keep_border ) {
726                        var border_id = currentTab;
727                }
728                else {
729                        tab = count_borders() + 1;
730
731                        if( Data['data'] )
732                                var border_id = create_border(get_lang("Server Results"), "search_" + tab);
733
734                        if( Data['data_gears'])
735                                var border_id = create_border(get_lang("Local Results"), "search_local_msg" + tab);
736                }
737
738                if (!border_id)
739            return;
740
741        currentTab = border_id;
742        openTab.content_id[currentTab] = Element('content_id_search_' + tab);
743        openTab.type[currentTab] = 1;
744                openTab.condition[currentTab] = this.condition;
745
746                if ( keep_border ) {
747                        var content_search =  Element('content_id_' + border_id);
748                        var div_scroll_result = Element("divScrollMain_"+tab);
749                        content_search.removeChild(div_scroll_result);
750                }
751
752                var table = document.createElement("TABLE");
753                        table.id    = "table_resultsearch_" + tab;
754                        table.frame = "void";
755                        table.rules = "rows";
756                        table.cellPadding       = "0";
757                        table.cellSpacing       = "0";
758                        table.className         = "table_box";
759
760                var tbody               = document.createElement("TBODY");
761                        tbody.id        = "tbody_box_" + tab;
762
763                for( var i=0; i < data.length; i++)
764                {
765                        var tr = EsearchE.make_tr_message(data[i],border_id,i);
766
767            tbody.appendChild(tr);
768                }
769               
770                //global_search++; //Tabs from search must not have the same id on its tr's // use numBox instead of this!
771               
772                table.appendChild(tbody);
773
774                var colgr_element = buildColGroup(1);
775                colgr_element.setAttribute("id","colgroup_main_"+tab);
776                table.appendChild(colgr_element);
777
778                var content_search =  Element('content_id_' + border_id);
779                var div_scroll_result = document.createElement("DIV");
780                div_scroll_result.id = "divScrollMain_"+tab;
781                div_scroll_result.style.overflowY = "scroll";
782                div_scroll_result.style.overflowX = "hidden";
783                div_scroll_result.style.width   ="100%";
784       
785                if (is_mozilla){
786                        div_scroll_result.style.overflow = "-moz-scrollbars-vertical";
787                        div_scroll_result.style.width   ="100%";
788                }
789
790                if(is_ie)
791                        Element("border_table").width = "99.5%";
792
793                // Put header
794                var table_element = document.createElement("TABLE");
795                var tbody_element = document.createElement("TBODY");
796                if (is_ie)
797                {
798                        table_element.attachEvent("onmousemove",changeCursorState);
799                        table_element.attachEvent("onmousedown",startColResize);
800                }
801                else {
802                        table_element.addEventListener("mousemove",changeCursorState,false);
803                        table_element.addEventListener("mousedown",startColResize,false);
804                }
805                table_element.setAttribute("id", "table_message_header_box_"+tab);
806                table_element.className = "table_message_header_box";
807                if (!is_ie)
808                        table_element.style.width = "98.8%";
809                table_element.emptyBody = false;
810
811                tr_element = document.createElement("TR");
812                tr_element.className = "message_header";
813                td_element0 = createTDElement(1,0);
814                chk_box_element = document.createElement("INPUT");
815                chk_box_element.id  = "chk_box_select_all_messages";
816                chk_box_element.setAttribute("type", "checkbox");
817                chk_box_element.className = "checkbox";
818                chk_box_element.onclick = function(){select_all_search_messages(this.checked,content_search.id);};
819                chk_box_element.onmouseover = function () {this.title=get_lang('Select all messages.')};
820                chk_box_element.onkeydown = function (e)
821                {
822                        if (is_ie)
823                        {
824                                if ((window.event.keyCode) == 46)
825                                        delete_msgs(current_folder,'selected','null');
826                        }
827                        else
828                        {
829                                if ((e.keyCode) == 46)
830                                        delete_msgs(current_folder,'selected','null');
831                        }
832                };
833
834                td_element0.appendChild(chk_box_element);
835                td_element01 = createTDElement(1,1);
836                td_element02 = createTDElement(1,2);
837                td_element03 = createTDElement(1,3);
838                td_element04 = createTDElement(1,4);
839                td_element1 = createTDElement(1,5,"th_resizable","left");
840               
841                var arrow_ascendant = function(Text)
842                {
843                        return "<b>" + Text + "</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
844                }
845               
846                // Ordernar Pasta
847                if ( sort_type == 'SORTBOX')
848                {
849                        //MailArchiver: Local folders does not order by folder name
850                        if(currentTab.indexOf('search_local')!=-1){
851                            td_element1.innerHTML       = "<b>"+get_lang("Folder")+"</b>";
852                        }
853                        else{
854                       
855                       
856                        if( Data['data'] )
857                        {
858                                td_element1.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTBOX_REVERSE'); };
859                                td_element1.innerHTML   = "<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
860                        }
861                        else
862                        {
863                                td_element1.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTBOX_REVERSE'); };
864                                td_element1.innerHTML   = "<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
865                        }
866                        }
867                }
868                else
869                {
870                   
871                        //MailArchiver: Local folders does not order by folder name
872                        if(currentTab.indexOf('search_local')!=-1){
873                            td_element1.innerHTML       = "<b>"+get_lang("Folder")+"</b>";
874                        }
875                        else{
876                   
877                        if( Data['data'] )
878                        {
879                                td_element1.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTBOX'); };
880                        }
881                        else
882                        {
883                                td_element1.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTBOX'); };
884                        }
885                        td_element1.innerHTML   = ( sort_type == 'SORTBOX_REVERSE' ) ? arrow_ascendant(get_lang("Folder")) : get_lang("Folder");
886                        }
887                }
888               
889                // Ordernar Quem
890                td_element2 = createTDElement(1,6,"th_resizable","left");
891
892                if (sort_type == 'SORTWHO')
893                {
894                        if(Data['data'])
895                        {
896                                td_element2.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTWHO_REVERSE'); };
897                                td_element2.innerHTML   = "<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
898                        }
899                        else
900                        {
901                                td_element2.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTWHO_REVERSE'); };
902                                td_element2.innerHTML   = "<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
903                        }
904                }
905                else
906                {
907                        if( Data['data'] )
908                        {
909                                td_element2.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTWHO'); };
910                        }
911                        else
912                        {
913                                td_element2.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTWHO'); };
914                        }
915                        td_element2.innerHTML   = ( sort_type == 'SORTWHO_REVERSE' ) ? arrow_ascendant(get_lang("who")) : get_lang("who");
916                }
917               
918                // Ordernar Subject
919                td_element3 = createTDElement(1,7,"th_resizable","left");
920               
921                if (sort_type == 'SORTSUBJECT')
922                {
923                        if( Data['data'])
924                        {
925                                td_element3.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTSUBJECT_REVERSE'); };
926                                td_element3.innerHTML   = "<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";                               
927                        }
928                        else
929                        {
930                                td_element3.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTSUBJECT_REVERSE'); };
931                                td_element3.innerHTML   = "<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
932                        }
933                }
934                else
935                {
936                        if( Data['data'] )
937                        {
938                                td_element3.onclick             = function(){ EsearchE.searchFor( border_id, 'SORTSUBJECT'); };
939                        }
940                        else
941                        {
942                                td_element3.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTSUBJECT'); };
943                        }
944                        td_element3.innerHTML   = ( sort_type == 'SORTSUBJECT_REVERSE' ) ? arrow_ascendant(get_lang("subject")) : get_lang("subject");
945                }
946               
947                // Ordernar Data
948                td_element4 = createTDElement(1,8,"th_resizable","center");
949               
950                if ( sort_type == 'SORTDATE' )
951                {
952                        if( Data['data'] )
953                        {
954                                td_element4.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTDATE_REVERSE'); };
955                                td_element4.innerHTML   = "<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
956                        }
957                        else
958                        {
959                                td_element4.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTDATE_REVERSE'); };
960                                td_element4.innerHTML   = "<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
961                        }
962                }
963                else
964                {
965                        if( Data['data'] )
966                        {
967                                td_element4.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTDATE'); };
968                        }
969                        else
970                        {
971                                td_element4.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTDATE'); };
972                        }
973                        td_element4.innerHTML   = ( sort_type == 'SORTDATE_REVERSE' ) ? arrow_ascendant(get_lang("Date")) : get_lang("Date");
974                }                       
975
976                // Ordernar Tamanho
977                td_element5 = createTDElement(1,9,"th_resizable","center");
978               
979                if ( sort_type == 'SORTSIZE' )
980                {
981                        if( Data['data'] )
982                        {
983                                td_element5.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTSIZE_REVERSE'); };
984                                td_element5.innerHTML   = "<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";                         
985                        }
986                        else
987                        {
988                                td_element5.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTSIZE_REVERSE'); };
989                                td_element5.innerHTML   = "<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
990                        }
991                }
992                else
993                {
994                        if( Data['data'] )
995                        {       
996                                td_element5.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTSIZE'); };
997                        }
998                        else
999                        {
1000                                td_element5.onclick             = function(){ EsearchE.searchFor(border_id, 'SORTSIZE'); };
1001                        }
1002                        td_element5.innerHTML   = ( sort_type == 'SORTSIZE_REVERSE' ) ? arrow_ascendant(get_lang("size")) : get_lang("size");
1003                }
1004               
1005                tr_element.appendChild(td_element0);
1006                tr_element.appendChild(td_element01);
1007                tr_element.appendChild(td_element02);
1008                tr_element.appendChild(td_element03);
1009                tr_element.appendChild(td_element04);
1010                tr_element.appendChild(td_element1);
1011                tr_element.appendChild(td_element2);
1012                tr_element.appendChild(td_element3);
1013                tr_element.appendChild(td_element4);
1014                tr_element.appendChild(td_element5);
1015                tbody_element.appendChild(tr_element);
1016                table_element.appendChild(tbody_element);
1017
1018                var colgr_element = buildColGroup(1);
1019                colgr_element.setAttribute("id","colgroup_head_"+tab);
1020                table_element.appendChild(colgr_element);
1021               
1022                if( parseInt( Data['gears_num_msgs'] ) > 0 && !Data['data_gears'])
1023                {
1024                        var _div_gears = document.createElement("div");
1025                                _div_gears.onclick = function(){ EsearchE.viewLocalMessage(); };
1026                                _div_gears.className = 'local-messages-search-warning';
1027                                _div_gears.innerHTML = get_lang("The search has% 1 messages stored locally. Want to see them ? Click here.", Data['gears_num_msgs']);
1028
1029                        content_search.appendChild(_div_gears);         
1030                }               
1031
1032                var _divScroll = document.getElementById("divScrollHead_"+tab);
1033
1034                if(!_divScroll){
1035                        _divScroll = document.createElement("DIV");
1036                        _divScroll.id = "divScrollHead_"+tab;
1037                        _divScroll.style.overflowY = "hidden";
1038                        _divScroll.style.overflowX = "hidden";
1039                        _divScroll.style.width  ="100%";
1040
1041                        if (is_mozilla){
1042                                _divScroll.style.width  ="99.3%";
1043                        }
1044                        _divScroll.appendChild(table_element);
1045                        content_search.appendChild(_divScroll);
1046                }
1047                /*end of "put header"*/
1048                if ( !expresso_offline )
1049                {
1050                        div_scroll_result.appendChild(table);
1051                        content_search.appendChild(div_scroll_result);
1052                }
1053                else
1054                {
1055                        div_scroll_result.appendChild(table);
1056                        content_search.appendChild(div_scroll_result);
1057                }
1058               
1059                resizeWindow();
1060                if(typeof(Data.data_gears)=="undefined")
1061                    EsearchE.show_paging( Data['num_msgs'] );
1062                //else
1063                //    EsearchE.show_paging(Data['gears_num_msgs']);
1064        }
1065
1066        searchE.prototype.open_msg = function(mailbox, uid_msg, subject)
1067        {
1068                var handler_get_msg = function(data)
1069                {
1070                        if( Element("border_id_" + uid_msg + "_r") )
1071                                alert(get_lang("This message is already opened!"));
1072                        else
1073                                draw_message( data, create_border(url_decode(subject), uid_msg + "_r") );
1074                }
1075               
1076                proxy_mensagens.get_msg(uid_msg,mailbox,false,handler_get_msg);
1077        }
1078
1079        // Adiciona caixas postais na busca;
1080        searchE.prototype.add_mailboxes = function()
1081        {
1082                var sel = Element("sel_search_nm_box1");
1083                if (!proxy_mensagens.is_local_folder(this.name_box_search)) {
1084                        var name_box     = this.name_box_search.split(cyrus_delimiter);
1085                        if(this.name_box_search == "")
1086                                return false;
1087                        var name_box_def = "";
1088                        if(name_box.length != 1){
1089                                name_box_def = name_box[(name_box.length-1)];
1090                        }else{
1091                                name_box_def = get_lang("Inbox");
1092                        }
1093                }
1094                else {
1095                        if(this.name_box_search=='local_root'){
1096                          var tmpname = this.name_box_search;
1097                          name_box_def = get_lang('Local folders');
1098                          Element('local_recursive').checked = true;
1099                          Element('local_recursive').disabled = true;
1100                          Element('lbl_local_recursive').style.color = 'gray';
1101                        }
1102                       
1103                        //Local special folders names and others local
1104                        else{
1105                            if((this.name_box_search=='local_inbox') || (this.name_box_search=='local_outbox') || (this.name_box_search=='local_sent') || (this.name_box_search=='local_drafts') || (this.name_box_search=='local_trash')){
1106                                var tmpname = this.name_box_search.split("_")[1];
1107                                name_box_def = get_lang(tmpname) + ' (local)';
1108                            }
1109                            else{
1110                                expresso_mail_archive.getFolderInfo(this.name_box_search.substr(6, this.name_box_search.length));
1111                                name_box_def = expresso_mail_archive.folder.name + ' (local)';//Retira o 'local_'
1112                            }
1113                            //Element('check_recursive_local').style.visibility = 'visible';
1114                            Element('local_recursive').disabled = false;
1115                            Element('local_recursive').checked = false;   
1116                            Element('lbl_local_recursive').style.color = 'black';
1117                        }
1118                               
1119                }
1120                if( sel.length > 0){
1121                        //Disable adding sub folders if all "local folders" have already been added: user should remove it then
1122                        var local_root_flagged = false;
1123                        var local_folder_flagged = false;
1124                       
1125                        for(var i=0; i< sel.options.length; i++){
1126                            if(sel.options[i].value == 'local_root'){
1127                                local_root_flagged = true;
1128                            }
1129                            if((sel.options[i].value != 'local_root') && (sel.options[i].value.indexOf("local_")!=-1)){
1130                                local_folder_flagged = true;
1131                            }                           
1132                        }
1133                   
1134                        for(var i=0; i < sel.options.length; i++){
1135                                if((this.name_box_search.indexOf("local_")!=-1) && (local_root_flagged)){
1136                                    alert(get_lang('Local folders root have already been added!\nIf you intend to search at some specific local folder or\n some local folder list, you must remove the local root folder from the list!'));
1137                                    Element('local_recursive').checked = true;
1138                                    Element('local_recursive').disabled = true;
1139                                    Element('lbl_local_recursive').style.color = 'gray';
1140                                    return false;                                   
1141                                }
1142                                if((this.name_box_search == 'local_root') && (local_folder_flagged)){
1143                                    alert(get_lang('Some local folder(s) have already been added!\nIf you intend to search at all the local folders structure,\n you must remove all the the local folders from the list!'));
1144                                    Element('local_recursive').disabled = false;
1145                                    Element('local_recursive').checked = false;
1146                                    Element('lbl_local_recursive').style.color = 'black';
1147                                    return false;                                   
1148                                }                               
1149                                if(sel.options[i].value == this.name_box_search){
1150                                        alert(get_lang('This message is already selected!'));
1151                                        return false;
1152                                }
1153                        }
1154                }
1155                name_box_def = translateFolder(name_box_def);
1156                var opt = new Option(lang_folder(name_box_def),this.name_box_search,false,true);
1157                sel[sel.length] = opt;
1158        }
1159
1160        //      Remove as caixas postais na busca;
1161        searchE.prototype.del_mailboxes = function()
1162        {
1163                var sel = Element("sel_search_nm_box1");
1164                if(sel.length > 0)
1165                {
1166                        for(var i=0; i < sel.options.length; i++)
1167                        {
1168                                if(sel.options[i].selected == true)
1169                                {
1170                                        sel.options[i] = null;
1171                                        i--;
1172                                }
1173                        }
1174                       
1175                        //MailArchiver: check if there is some local folder inside folder list
1176                        var has_local = false;
1177                       
1178                        for(var i=0; i < sel.options.length; i++)
1179                        {
1180                                if(sel.options[i].value.indexOf("local") != -1){
1181                                    has_local = true;
1182                                    break;
1183                                }
1184
1185                        }
1186                        if(!has_local){
1187                            //Element('check_recursive_local').style.visibility = 'hidden';
1188                            Element('local_recursive').disabled = true;
1189                            Element('local_recursive').checked = false;
1190                            Element('lbl_local_recursive').style.color = 'gray';
1191                        }
1192                }
1193
1194        }
1195
1196        // todas as caixas
1197        searchE.prototype.all_mailboxes = function()
1198        {
1199                var value = Element("check_all_msg").checked;
1200                var cont = parseInt(0);
1201                if(value)
1202                {
1203                        if(EsearchE.all_boxes.length > 0)
1204                        {
1205                                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
1206                        }
1207                        for(var i=0; i < folders.length; i++)
1208                        {
1209                                EsearchE.all_boxes[cont++] = folders[i].folder_id;
1210                        }
1211                }
1212                else
1213                {
1214                        EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
1215                }
1216        }
1217
1218        // Search;
1219        searchE.prototype.func_search = function(value)
1220        {
1221                var fields = "##";
1222                        // Verifica se os campos estão preenchidos;
1223                        if(trim(Element("txt_ass").value) != ""){
1224                                fields += "SUBJECT " +  "<=>" +url_encode(Element("txt_ass").value) + "##";
1225                        }
1226                        if(trim(Element("txt_body").value) != ""){
1227                                fields += "BODY " + "<=>" + url_encode(Element("txt_body").value) + "##";
1228                        }
1229                        if(trim(Element("txt_de").value) != ""){
1230                                fields += "FROM " + "<=>" + url_encode(Element("txt_de").value) + "##";
1231                        }
1232                        if(trim(Element("txt_para").value) != ""){
1233                                fields += "TO " + "<=>" + url_encode(Element("txt_para").value) + "##";
1234                        }
1235                        if(trim(Element("txt_cc").value) != ""){
1236                                fields += "CC " + "<=>" + url_encode(Element("txt_cc").value) + "##";
1237                        }
1238            if (trim(Element("since_date").value) != "")
1239            {
1240                if (validate_date(Element("since_date").value))
1241                {
1242                    fields += "SINCE " + "<=>" + url_encode(Element("since_date").value) + "##";
1243                }
1244                else
1245                {
1246                        alert(get_lang('Invalid date on field %1', get_lang('Since Date')));
1247                        return false;
1248                }
1249            }
1250
1251            if (trim(Element("before_date").value) != "")
1252            {
1253                if (validate_date(Element("before_date").value))
1254                {
1255                    fields += "BEFORE " + "<=>" + url_encode(Element("before_date").value) + "##";
1256                }
1257                else
1258                    {
1259                        alert(get_lang('Invalid date on field %1', get_lang('Before Date')));
1260                        return false;
1261                    }
1262            }
1263
1264            if(trim(Element("on_date").value) != "")
1265            {
1266                if (validate_date(Element("on_date").value))
1267                {
1268                    fields += "ON " + "<=>" + url_encode(Element("on_date").value) + "##";
1269                }
1270                else
1271                {
1272                        alert(get_lang('Invalid date on field %1', get_lang('On Date')));
1273                    return false;
1274                }
1275
1276            }
1277
1278            if(trim(Element("flagged").options[Element("flagged").selectedIndex].value) != "")
1279            {
1280                if (Element("flagged").options[Element("flagged").selectedIndex].value == "FLAGGED")
1281                {
1282                    fields += "FLAGGED##";
1283                }
1284                else
1285                {
1286                    fields += "UNFLAGGED##";
1287                }
1288            }
1289
1290            if(trim(Element("seen").options[Element("seen").selectedIndex].value) != "")
1291            {
1292                if (Element("seen").options[Element("seen").selectedIndex].value == "SEEN")
1293                {
1294                    fields += "SEEN##";
1295                }
1296                else
1297                {
1298                    fields += "UNSEEN##";
1299                }
1300            }
1301           
1302            if(trim(Element("answered").options[Element("answered").selectedIndex].value) != "")
1303            {
1304                if (Element("answered").options[Element("answered").selectedIndex].value == "ANSWERED"){
1305                    fields += "ANSWERED##";
1306                }
1307                else {
1308                    fields += "UNANSWERED##";
1309                }
1310            }
1311           
1312            if(trim(Element("recent").options[Element("recent").selectedIndex].value) != "")
1313            {
1314                if (Element("answered").options[Element("answered").selectedIndex].value == "RECENT")
1315                {
1316                    fields += "RECENT##";
1317                }
1318                else
1319                {
1320                    fields += "OLD##";
1321                }
1322            }
1323
1324            if ( value )
1325            {
1326                                fields = "##ALL " +  "<=>" +url_encode(value) + "##";
1327                        }
1328
1329                if(fields == "##")
1330                {
1331                        alert(get_lang("Define some search parameters!"));
1332                        return false;
1333                }
1334               
1335                var local_folders = new Array();
1336                var temp;
1337
1338                if( Element("check_all_msg").checked )
1339                {
1340                        this.all_mailboxes();
1341                        var nm_box = new Array;
1342                        for(var i=0; i < EsearchE.all_boxes.length; i++)
1343                        {
1344                                nm_box[i] = EsearchE.all_boxes[i] + fields;
1345                        }
1346                        if (preferences.use_local_messages == 1)
1347                        {
1348                                local_folders.push("");
1349                        }
1350                }
1351                else
1352                {
1353                        var nm_box = new Array;
1354                        var sel_combo = Element("sel_search_nm_box1");
1355                       
1356                        if( sel_combo.options.length <= 0)
1357                        {
1358                                alert(get_lang("Define the boxes to search!"));
1359                                return false;
1360                        }
1361
1362                        for(var i=0; i < sel_combo.options.length; i++)
1363                        {
1364                                sel_combo.options[i].selected = true;
1365                        }
1366                       
1367                        for(var i=0; i < sel_combo.options.length; i++)
1368                        {
1369                                if( sel_combo.options[i].selected == true )
1370                                {
1371                                        if(!proxy_mensagens.is_local_folder(sel_combo.options[i].value))
1372                                                nm_box[nm_box.length] = sel_combo.options[i].value + fields;
1373                                        else{
1374                                                var l_recursive = "";
1375                                                (Element('local_recursive').checked) ? l_recursive = "recursive" : l_recursive = "";
1376                                                local_folders.push(sel_combo.options[i].value.substr(6) + '#' + l_recursive);
1377                                        }
1378                                }
1379                        }
1380                }
1381               
1382            var handler = function( data )
1383            {
1384                var allMsg      = [3];
1385                var tmp         = [];
1386                // local data
1387                if ( local_folders.length > 0 ){
1388                    expresso_mail_archive.search(local_folders, fields);
1389                    tmp = expresso_mail_archive.search_queryresult;
1390                    if(tmp == null){
1391                        tmp = new Object();
1392                        tmp.length = 0;
1393                    }
1394                }
1395                var count = data['num_msgs'] ?  data['num_msgs'] : tmp.length > 0 ? tmp.length : "0";
1396                 EsearchE.localResults = tmp.length;
1397                if( data['num_msgs'] )
1398                {
1399                    allMsg['data']              = data['data'];
1400                    allMsg['num_msgs']  = data['num_msgs'];
1401                }
1402
1403                if( tmp.length > 0 )
1404                {
1405                    allMsg['gears_num_msgs'] = tmp.length ;
1406                }
1407
1408                if( data['num_msgs'] == 0 && tmp.length < 0)
1409                {
1410                    alert( get_lang("None result was found.") );
1411                }
1412                else
1413                {
1414                    if(tmp.length > 0 && !data['num_msgs'])
1415                    {
1416                        allMsg['data_gears'] = tmp;
1417                    }
1418                   
1419                     write_msg( count + " " + get_lang("results found") );
1420                    EsearchE.mount_result( allMsg, 'SORTDATE' );
1421                }
1422
1423            }
1424
1425            this.condition      = nm_box;
1426            this.page           = 0;
1427            var args            = "$this.imap_functions.search_msg";
1428            var params          = "condition=" + nm_box+ "&page=0"+ "&sort_type=SORTDATE";
1429
1430            if( expresso_offline )
1431                    handler('none');
1432            else
1433                    cExecute( args, handler, params);
1434           
1435        }
1436        // clean;
1437        searchE.prototype.func_clean = function()
1438        {
1439                // Limpa os campos;
1440                for( var i=0; i < this.txtfields.length; i++ )
1441                {
1442                        if( Element(this.txtfields[i]) != null )
1443                                Element(this.txtfields[i]).value = "";
1444                }
1445
1446        for(i = 0; i < this.selectFields.length; i++)
1447        {
1448            if (Element(this.selectFields[i]))
1449                Element(this.selectFields[i]).selectedIndex = 0;
1450        }
1451       
1452            if( Element("check_all_msg") != null )
1453                Element("check_all_msg").checked = false;
1454
1455            EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
1456                EsearchE.del_mailboxes();
1457               
1458                //Element('check_recursive_local').style.visibility = 'hidden';
1459                Element('local_recursive').disabled = true;
1460                Element('local_recursive').checked = false;
1461        }
1462
1463        // close
1464        searchE.prototype.func_close = function(type)
1465        {
1466                //Element('check_recursive_local').style.visibility = 'hidden';
1467                Element('local_recursive').disabled = true;
1468                Element('local_recursive').checked = false;
1469                var _this = this;
1470                _this.name_box_search = "";
1471                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
1472                _this.type = type;
1473                _this.searchW['window_search'].close();
1474        }
1475        // Monta a janela em tela;
1476        searchE.prototype.showWindow = function(div)
1477        {
1478                if(!this.searchW[div.id])
1479                {
1480                        div.style.width = "804px";
1481                        div.style.height = "440px";
1482                        div.style.visibility = "hidden";
1483                        div.style.position = "absolute";
1484                        div.style.zIndex = "10";
1485                        var title = ":: "+ get_lang("Search")+" ::";
1486                        var wHeight = div.offsetHeight + "px";
1487                        var wWidth =  div.offsetWidth   + "px";
1488
1489                        win = new dJSWin({
1490                                id: 'ccList'+div.id,
1491                                content_id: div.id,
1492                                width: wWidth,
1493                                height: wHeight,
1494                                title_color: '#3978d6',
1495                                bg_color: '#eee',
1496                                title: title,
1497                                title_text_color: 'white',
1498                                button_y_img: '../phpgwapi/images/win_min.gif',
1499                                button_x_img: '../phpgwapi/images/winclose.gif',
1500                                border: true});
1501                        this.searchW[div.id] = win;
1502                        win.draw();
1503                }
1504                else
1505                {
1506                        var _this = this;
1507                        win = this.searchW[div.id];
1508                        if((_this.type == "close" && win.state == 0) || win.state == 2){EsearchE.func_clean();}
1509                        win.draw();
1510                }
1511                win.open();     
1512        }
1513
1514        searchE.prototype.aux_local_folder_display = function(folder)
1515        {
1516                if(!expresso_offline)
1517                        return "(Local) " + lang_folder(folder.substr(6));
1518                else
1519                        return lang_folder(folder.substr(6));
1520        }
1521
1522        searchE.prototype.refresh = function(alert_new_msg){
1523                var handler_refresh = function(data){
1524                        var allMsg      = [3];
1525                        var count       = ( data['num_msgs'] ) ?  data['num_msgs'] : "0";
1526
1527                        if( data['num_msgs'] )
1528                        {
1529                                allMsg['data']          = data['data'];
1530                                allMsg['num_msgs']      = data['num_msgs'];
1531                        }
1532
1533                        if( ( data['num_msgs'] ) == 0 )
1534                        {
1535                                alert( get_lang("None result was found.") );
1536                        }
1537                        else
1538                        {
1539                                if( data['num_msgs'] )
1540                                {
1541                                        write_msg( count + " " + get_lang("results found") );
1542                                        EsearchE.mount_result( allMsg, 'SORTDATE', true );
1543                                }
1544                        }
1545                }
1546
1547                this.condition  = openTab.condition[currentTab];
1548
1549                var sort_type = (this.sort_type ? this.sort_type : 'SORTDATE');
1550
1551                if( expresso_offline )
1552                        handler('none');
1553                else
1554                        cExecute( "$this.imap_functions.search_msg", handler_refresh, "condition="+openTab.condition[currentTab]+"&page="+EsearchE.page+"&sort_type="+sort_type);
1555        }
1556
1557
1558// Cria o objeto
1559        var EsearchE;
1560        EsearchE = new searchE();
Note: See TracBrowser for help on using the repository browser.