source: trunk/expressoMail1_2/js/search.js @ 5471

Revision 5471, 43.2 KB checked in by alexandrecorreia, 12 years ago (diff)

Ticket #673 - Novas dialogs com Jquery para o novo visual do expresso.

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