source: trunk/expressoMail1_2/js/jscode/search.js @ 2761

Revision 2761, 36.3 KB checked in by rodsouza, 14 years ago (diff)

Ticket #1073 - Aplica a correção do ticket em questão no trunk

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