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

Revision 3033, 35.2 KB checked in by amuller, 14 years ago (diff)

Ticket #1135 - Retirando código que foi perdido no merge

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1/**************************************************************************\
2 Início
3\**************************************************************************/
4        function searchE()
5        {
6                this.searchW   = new Array;
7                this.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                connector.loadScript("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
212                //This func returns the comparison between criterias
213                var date_comp = function(a,b){ return a.udate > b.udate;};
214                var date_comp_reverse = function(a,b){ return date_comp(b,a);};
215                var box_comp = function(a,b){   return a.boxname > b.boxname; }
216                var box_comp_reverse = function(a,b){   return box_comp(b,a); }
217                var who_comp = function(a,b){ return a.from > b.from; }
218                var who_comp_reverse = function(a,b){ return who_comp(b,a); }
219                var subject_comp = function(a,b){ return a.subject > b.subject; }
220                var subject_comp_reverse = function(a,b){ return subject_comp(b,a); }
221                var size_comp = function(a,b){ return a.size > b.size; }
222                var size_comp_reverse = function(a,b){ return size_comp(b,a); }
223
224                switch (sort_type)
225                {
226                        case 'SORTDATE':
227                                data.sort(date_comp);
228                                break;
229                        case 'SORTDATE_REVERSE':
230                                data.sort(date_comp_reverse);
231                                break;
232                        case 'SORTBOX':
233                                data.sort(box_comp);
234                                break;
235                        case 'SORTBOX_REVERSE':
236                                data.sort(box_comp_reverse);
237                                break;
238                        case 'SORTSUBJECT':
239                                data.sort(subject_comp);
240                                break;
241                        case 'SORTSUBJECT_REVERSE':
242                                data.sort(subject_comp_reverse);
243                                break;
244                        case 'SORTWHO':
245                                data.sort(who_comp);
246                                break;
247                        case 'SORTWHO_REVERSE':
248                                data.sort(who_comp_reverse);
249                                break;
250                        case 'SORTSIZE':
251                                data.sort(size_comp);
252                                break;
253                        case 'SORTSIZE_REVERSE':
254                                data.sort(size_comp_reverse);
255                                break;
256                        default:
257                                var showMsg = 1;
258                }
259
260                if(data.length > 0 && showMsg)
261                                write_msg(data.length + " "+ get_lang('results found'));
262
263                numBox++;
264                var border_id = create_border(get_lang("Search Results"), "search_" + numBox);
265                if (!border_id)
266                {
267                    return;
268                }
269                currentTab = border_id;
270                openTab.content_id[currentTab] = Element('content_id_search_' + numBox);
271                openTab.type[currentTab] = 1;
272                var table = document.createElement("TABLE");
273                table.id    = "table_resultsearch_" + numBox;
274                table.frame = "void";
275                table.rules = "rows";
276                table.cellPadding = "0";
277                table.cellSpacing = "0";
278                table.className = "table_box";
279
280                var tbody = document.createElement("TBODY");
281                tbody.id    = "tbody_box_" + numBox;
282
283                for( var i=0; i < data.length; i++){
284                        var tr = document.createElement("TR");
285                        tr.style.height = preferences.line_height;
286                        var aux = data[i];
287                        var mailbox = aux.boxname;
288                        var uid_msg = aux.uid;
289                        var subject = aux.subject;
290                        tr.id = uid_msg+"_s"+global_search;
291
292                        // Keep the two lines together please
293                        tr.setAttribute('name',mailbox);
294                        tr.name = mailbox;
295
296                        if (aux.flag.match("U"))
297                                add_className(tr,'tr_msg_unread');
298                        add_className(tr, i%2 != 0 ? 'tr_msg_read2' : 'tr_msg_read');
299            var _onclick = function () { proxy_mensagens.get_msg(this.parentNode.id,url_encode(this.parentNode.getAttribute('name')),false,show_msg);};
300            for(var j=0 ; j < 10 ; j++)
301                        {
302                                var td = document.createElement("TD");
303                                if (j == 0)
304                                {
305                                        td.style.width = "1%";
306                                        var td1 = '<input type="checkbox" id="check_box_message_'+uid_msg+'"></input>';
307                                       
308                                }
309                                if (j == 1)
310                                {
311                                        td.style.width = "2%";
312                                        if (aux.flag.match('T'))
313                                        {
314                                                attachNum = parseInt(aux.flag.substr(aux.flag.indexOf('T')+1));
315                                                td1 = "<img src='templates/"+template+"/images/clip.gif' title='"+attachNum +' '+ get_lang('attachment(s)')+"'>";
316                                        }
317                                        else
318                                                td1 = '';
319                                }
320                                if (j == 2)
321                                {
322                                        td.style.width = "1%";
323                                        td.id = "td_message_answered_"+uid_msg;
324                                        if (aux.flag.match('X'))
325                                                td1 = '<img src=templates/'+template+'/images/forwarded.gif title=Forwarded>';
326                                        else
327                                                if (aux.flag.match('A'))
328                                                        td1 = '<img src=templates/'+template+'/images/answered.gif>';
329                                                else
330                                                        td1 = '';
331                                }
332                                if (j == 3)
333                                {
334                                        td.style.width = "1%";
335                                        td.id = "td_message_important_"+uid_msg;
336                                        if (aux.flag.match("F"))
337                                        {
338                                                add_className(tr, 'flagged_msg');
339                                                td.style.background = "url(templates/"+template+"/images/important.gif) no-repeat center";
340                                        }
341                                        else
342                                                td1 = '';
343                                }
344                                if (j == 4)
345                                {
346                                        td.style.width = "1%";
347                                        td.id = "td_message_sent_"+uid_msg;
348                                        td1 = '';
349                                }
350                                if (j == 5)
351                                {
352                                        td.style.width = "14%";
353                                        td.onclick = _onclick;
354                                        var nm_box = aux.boxname.split(cyrus_delimiter);
355                                        var td1 = nm_box.pop();
356                                        td.setAttribute("NoWrap","true");
357                                        td.style.overflow = "hidden";
358                                        td.style.color = "#42795b";
359                                        td.style.fontWeight = "bold";
360                                       
361                                        var td1  = get_lang(td1).substr(get_lang(td1).length-1) == "*"?td1:get_lang(td1);
362                                        if ((tmp = translatedFolders.get(td1)))
363                                        {
364                                            td1 = tmp;
365                                        }
366
367                                        if(proxy_mensagens.is_local_folder(td1)) {
368                                                var td1 = this.aux_local_folder_display(td1);
369                                        }
370                                }
371                                if( j == 6)
372                                {
373                                        if (aux.from.length > 29)
374                                                aux.from = aux.from.substr(0,29) + "...";
375                                        td.style.width = "20%";
376                                        td.onclick = _onclick;
377                                        td.setAttribute("NoWrap","true");
378                                        td.style.overflow = "hidden";
379                                        var td1  =  '<div style="width:100%;overflow:hidden">'+aux.from+"</div>";
380                                }
381                                if( j == 7)
382                                {
383                                        var subject_encode = url_encode(subject);
384                                        if (! subject_encode)
385                                                aux.subject = get_lang("no subject") + "...";
386                                        if (aux.subject.length > 70)
387                                                aux.subject = aux.subject.substr(0,70) + "...";
388                                        td.style.width = "35%";
389                                        td.onclick = _onclick;
390                                        td.setAttribute("NoWrap","true");
391                                        td.style.overflow = "hidden";
392                                        var td1  = aux.subject;
393
394                                }
395                                if( j == 8)
396                                {
397                                        td.style.width = "15%";
398                                        td.align = "center";
399                                        td.onclick = _onclick;
400                                        var _dat = new Date(aux.udate*1000);
401                                        var td1 = _dat.getDate()+"/"+(_dat.getMonth()+1)+"/"+_dat.getFullYear();
402                                }
403                                if( j == 9)
404                                {
405                                        td.style.width = "10%";
406                                        td.align = "center";
407                                        td.onclick = _onclick;
408                                        var td1  = borkb(aux.size);
409                                }
410                                if (j == 10)
411                                {
412                                        if (aux.flag.match("U"))
413                                                add_className(tr, 'tr_msg_unread');
414                                        if (aux.flag.match("F"))
415                                                add_className(tr, 'flagged_msg');
416                                        var td1 = '';
417                                }
418                                td.innerHTML = td1;
419                                tr.appendChild(td);
420                        }
421                        aux.splice(0,(aux.length));
422
423                _dragArea.makeDragged(tr, uid_msg, subject, true, mailbox);
424                tbody.appendChild(tr);
425                }
426                global_search++; //Tabs from search must not have the same id on its tr's
427               
428                table.appendChild(tbody);
429
430        var content_search =  Element('content_id_search_' + numBox);
431        var div_scroll_result = document.createElement("DIV");
432        div_scroll_result.id = "divScrollMain_"+numBox;
433        div_scroll_result.style.overflow = "auto";
434       
435                if(is_ie)
436                        Element("border_table").width = "99.5%";
437               
438                // Put header
439                var table_element = document.createElement("TABLE");
440                var tbody_element = document.createElement("TBODY");
441                table_element.setAttribute("id", "table_message_header_box");
442                table_element.className = "table_message_header_box";
443                tr_element = document.createElement("TR");
444                tr_element.className = "message_header";
445                td_element0 = document.createElement("TD");
446                td_element0.setAttribute("width", "1%");
447                chk_box_element = document.createElement("INPUT");
448                chk_box_element.id  = "chk_box_select_all_messages";
449                chk_box_element.setAttribute("type", "checkbox");
450                chk_box_element.className = "checkbox";
451                chk_box_element.onclick = function(){select_all_search_messages(this.checked,content_search.id);};
452                chk_box_element.onmouseover = function () {this.title=get_lang('Select all messages.')};
453                chk_box_element.onkeydown = function (e){
454                        if (is_ie)
455                        {
456                                if ((window.event.keyCode) == 46)
457                                        delete_msgs(current_folder,'selected','null');
458                        }
459                        else
460                        {
461                                if ((e.keyCode) == 46)
462                                        delete_msgs(current_folder,'selected','null');
463                        }
464                };
465               
466                td_element0.appendChild(chk_box_element);
467                td_element1 = document.createElement("TD");
468                td_element1.setAttribute("width", "20%");
469                td_element1.align = "left";
470                if (sort_type == 'SORTBOX')
471                {
472                        td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX_REVERSE'); delete_border(border_id,false);};
473                        td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
474                }
475                else
476                {
477                        td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX'); delete_border(border_id,false);};
478                        if  (sort_type == 'SORTBOX_REVERSE')
479                                td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
480                        else
481                                td_element1.innerHTML = get_lang("Folder");
482                }
483                td_element2 = document.createElement("TD");
484                td_element2.setAttribute("width", "20%");
485                td_element2.align = "left";
486                if (sort_type == 'SORTWHO')
487                {
488                        td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO_REVERSE'); delete_border(border_id,false);};
489                        td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
490                }
491                else
492                {
493                        td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO'); delete_border(border_id,false);};
494                        if  (sort_type == 'SORTWHO_REVERSE')
495                                td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
496                        else
497                                td_element2.innerHTML = get_lang("who");
498                }
499                td_element3 = document.createElement("TD");
500                td_element3.setAttribute("width", "35%");
501                td_element3.align = "left";
502                if (sort_type == 'SORTSUBJECT')
503                {
504                        td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT_REVERSE'); delete_border(border_id,false);};
505                        td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
506                }
507                else
508                {
509                        td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT'); delete_border(border_id,false);};
510                        if  (sort_type == 'SORTSUBJECT_REVERSE')
511                                td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
512                        else
513                                td_element3.innerHTML = get_lang("subject");
514                }
515                td_element4 = document.createElement("TD");
516                td_element4.setAttribute("width", "15%");
517                td_element4.align = "center";
518                if (sort_type == 'SORTDATE')
519                {
520                        td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE_REVERSE'); delete_border(border_id,false);};
521                        td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
522                }
523                else
524                {
525                        td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE'); delete_border(border_id,false);};
526                        if  (sort_type == 'SORTDATE_REVERSE')
527                                td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
528                        else
529                                td_element4.innerHTML = get_lang("Date");
530                }
531                td_element5 = document.createElement("TD");
532                td_element5.setAttribute("width", "10%");
533                td_element5.align = "center";
534                if (sort_type == 'SORTSIZE')
535                {
536                        td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE_REVERSE'); delete_border(border_id,false);};
537                        td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
538                }
539                else
540                {
541                        td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE'); delete_border(border_id,false);};
542                        if  (sort_type == 'SORTSIZE_REVERSE')
543                                td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
544                        else
545                                td_element5.innerHTML = get_lang("Size");
546                }
547                tr_element.appendChild(td_element0);
548                tr_element.appendChild(td_element1);
549                tr_element.appendChild(td_element2);
550                tr_element.appendChild(td_element3);
551                tr_element.appendChild(td_element4);
552                tr_element.appendChild(td_element5);
553                tbody_element.appendChild(tr_element);
554                table_element.appendChild(tbody_element);
555                content_search.appendChild(table_element);
556                /*end of "put header"*/
557               
558                if (!expresso_offline) {
559/*                      var span_options = document.createElement("SPAN");
560                        if (span_options)
561                                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> | ' +
562                                '<span title="' +
563                                get_lang("Move") +
564                                '" class="message_options" onclick=wfolders.makeWindowNew(\"' +
565                                content_search.id +
566                                '\",\"move_to\",true)>' +
567                                get_lang("Move") +
568                                '</span>';*/
569                        div_scroll_result.appendChild(table);
570                        content_search.appendChild(div_scroll_result);
571                        /*if (span_options)
572                                content_search.appendChild(span_options);*/
573                }
574                else {
575                        div_scroll_result.appendChild(table);
576                        content_search.appendChild(div_scroll_result);
577                }
578                resizeWindow();
579        }
580
581        searchE.prototype.open_msg = function(mailbox, uid_msg, subject){
582                var handler_get_msg = function(data){
583                        if(Element("border_id_" + uid_msg + "_r")){alert(get_lang("This message is already opened!"));}
584                        else{draw_message(data,create_border(url_decode(subject), uid_msg + "_r"));}
585                        //set_msg_as_read(msgs_to_set[i], false);
586                }
587                proxy_mensagens.get_msg(uid_msg,mailbox,false,handler_get_msg);
588                /*var args   = "$this.imap_functions.get_info_msg";
589                var params = "msg_number=" + uid_msg + "&msg_folder=" + mailbox;
590                cExecute(args,handler_get_msg,params);*/
591
592        }
593
594        // Adiciona caixas postais na busca;
595        searchE.prototype.add_mailboxes = function(){
596                var sel = Element("sel_search_nm_box1");
597                if (!proxy_mensagens.is_local_folder(this.name_box_search)) {
598                        var name_box     = this.name_box_search.split(cyrus_delimiter);
599                        if(this.name_box_search == "")
600                                return false;
601                        var name_box_def = "";
602                        if(name_box.length != 1){
603                                name_box_def = name_box[(name_box.length-1)];
604                        }else{
605                                name_box_def = get_lang("Inbox");               
606                        }
607                }
608                else {
609                        if(this.name_box_search=='local_root')
610                                return;
611                        if(this.name_box_search=='local_Inbox')
612                                name_box_def = get_lang("Inbox");
613                        else if(this.name_box_search.indexOf("/")!="-1") {
614                                final_pos = this.name_box_search.lastIndexOf("/");
615                                name_box_def = this.name_box_search.substr(final_pos+1);
616                        }
617                        else
618                                name_box_def = this.name_box_search.substr(6);//Retira o 'local_'
619                }
620                if( sel.length > 0){
621                        for(var i=0; i < sel.options.length; i++){
622                                if(sel.options[i].value == this.name_box_search){
623                                        alert(get_lang('This message is already selected!'));
624                                        return false;
625                                }
626                        }
627                }
628                var opt = new Option(lang_folder(name_box_def),this.name_box_search,false,true);
629                sel[sel.length] = opt;
630        }
631        // Remove as caixas postais na busca;
632        searchE.prototype.del_mailboxes = function(){
633                var sel = Element("sel_search_nm_box1");
634                if(sel.length > 0){
635                        for(var i=0; i < sel.options.length; i++){
636                                if(sel.options[i].selected == true){
637                                        sel.options[i] = null;
638                                        i--;
639                                }
640                        }
641                }
642       
643        }
644        // todas as caixas
645        searchE.prototype.all_mailboxes = function(){
646                var value = Element("check_all_msg").checked;
647                var cont = parseInt(0);
648                if(value){
649                        if(EsearchE.all_boxes.length > 0){
650                                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));                       
651                        }
652                        for(var i=0; i < folders.length; i++){
653                                EsearchE.all_boxes[cont] = folders[i].folder_id;
654                                cont++;
655                        }
656                }else{
657                        EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
658                }
659        }
660
661        // Search;
662        searchE.prototype.func_search = function(value){
663                var fields = "##";
664                        // Verifica se os campos estão preenchidos;
665                        if(trim(Element("txt_ass").value) != ""){
666                                fields += "SUBJECT " +  "<=>" +url_encode(Element("txt_ass").value) + "##";
667                        }
668                        if(trim(Element("txt_body").value) != ""){
669                                fields += "BODY " + "<=>" + url_encode(Element("txt_body").value) + "##";
670                        }
671                        if(trim(Element("txt_de").value) != ""){
672                                fields += "FROM " + "<=>" + url_encode(Element("txt_de").value) + "##";
673                        }
674                        if(trim(Element("txt_para").value) != ""){
675                                fields += "TO " + "<=>" + url_encode(Element("txt_para").value) + "##";
676                        }
677                        if(trim(Element("txt_cc").value) != ""){
678                                fields += "CC " + "<=>" + url_encode(Element("txt_cc").value) + "##";
679                        }
680                        if (trim(Element("since_date").value) != ""){
681                            if (validate_date(Element("since_date").value))
682                            {
683                                fields += "SINCE " + "<=>" + url_encode(Element("since_date").value) + "##";
684                            }
685                            else
686                                {
687                                    alert(get_lang('Invalid date on field %1'), get_lang('Since Date'));
688                                    return false;
689                                }
690                        }
691                        if (trim(Element("before_date").value) != ""){
692                            if (validate_date(Element("before_date").value))
693                            {
694                                fields += "BEFORE " + "<=>" + url_encode(Element("before_date").value) + "##";
695                            }
696                            else
697                                {
698                                    alert(get_lang('Invalid date on field %1'), get_lang('Before Date'));
699                                    return false;
700                                }
701                        }
702                        if(trim(Element("on_date").value) != ""){
703                            if (validate_date(Element("on_date").value))
704                            {
705                                fields += "ON " + "<=>" + url_encode(Element("on_date").value) + "##";
706                            }
707                            else
708                                {
709                                    alert(get_lang('Invalid date on field %1'), get_lang('On Date'));
710                                    return false;
711                                }
712
713                        }
714                        if(trim(Element("flagged").options[Element("flagged").selectedIndex].value) != ""){
715                            if (Element("flagged").options[Element("flagged").selectedIndex].value == "FLAGGED"){
716                                fields += "FLAGGED##";
717                            }
718                            else {
719                                fields += "UNFLAGGED##";
720                            }
721                        }
722                        if(trim(Element("seen").options[Element("seen").selectedIndex].value) != ""){
723                            if (Element("seen").options[Element("seen").selectedIndex].value == "SEEN"){
724                                fields += "SEEN##";
725                            }
726                            else {
727                                fields += "UNSEEN##";
728                            }
729                        }
730                        if(trim(Element("answered").options[Element("answered").selectedIndex].value) != ""){
731                            if (Element("answered").options[Element("answered").selectedIndex].value == "ANSWERED"){
732                                fields += "ANSWERED##";
733                            }
734                            else {
735                                fields += "UNANSWERED##";
736                            }
737                        }
738                        if(trim(Element("recent").options[Element("recent").selectedIndex].value) != ""){
739                            if (Element("answered").options[Element("answered").selectedIndex].value == "RECENT"){
740                                fields += "RECENT##";
741                            }
742                            else {
743                                fields += "OLD##";
744                            }
745                        }
746                        if(value) {
747                                fields = "##ALL " +  "<=>" +url_encode(value) + "##";
748                        }
749
750                if(fields == "##"){
751                        alert(get_lang("Define some search parameters!"));
752                        return false;
753                }
754                var local_folders = new Array();
755                var temp;
756               
757                if(Element("check_all_msg").checked){
758                        this.all_mailboxes();
759                        var nm_box = new Array;
760                        for(var i=0; i < EsearchE.all_boxes.length; i++){
761                                nm_box[i] = EsearchE.all_boxes[i] + fields;
762                        }
763                        if (preferences.use_local_messages == 1) {
764                                temp = expresso_local_messages.list_local_folders();
765                                for (var x in temp) {
766                                        local_folders.push(temp[x][0]);
767                                }
768                        }
769                }else{
770                        var nm_box = new Array;
771                        var sel_combo = Element("sel_search_nm_box1");
772                        if( sel_combo.options.length <= 0){
773                                alert(get_lang("Define the boxes to search!"));
774                                return false;
775                        }
776                       
777                        for(var i=0; i < sel_combo.options.length; i++){
778                                sel_combo.options[i].selected = true;
779                        }
780                        for(var i=0; i < sel_combo.options.length; i++){
781                                if(sel_combo.options[i].selected == true){
782                                        if(!proxy_mensagens.is_local_folder(sel_combo.options[i].value))
783                                                nm_box[nm_box.length] = sel_combo.options[i].value + fields;
784                                        else
785                                                local_folders.push(sel_combo.options[i].value.substr(6));
786                                }
787                        }
788                }
789                var handler = function(data){
790                        var tmp;
791
792                        var dataTemp = data.split('=sumResults=');
793                        var sumResults = dataTemp[0];
794
795                        var data = dataTemp[1] ? dataTemp[1] : dataTemp[0];
796
797                        if (local_folders.length > 0) {
798                                tmp = expresso_local_messages.search(local_folders, fields);
799                                if (tmp!=false) {
800                                        var tmp2 = tmp.substr(2, data.length - 4);
801                                        }
802                                }
803                                if((data == "none") || (data.length==0)){alert(get_lang("None result was found."));}
804                                else if(data.length > preferences.search_result_number){alert(get_lang("More than %1 results. Please, try to refine your search.",1000));}
805                        else if(data == "many results"){alert(get_lang("More than %1 results. Please, try to refine your search.",preferences.search_result_number));}
806                        else{EsearchE.mount_result(data);}
807
808                }
809                var args   = "$this.imap_functions.search_msg";
810                var params = "condition=" + nm_box;
811                if(expresso_offline)
812                        handler('none');
813                else
814                        cExecute(args,handler,params);
815        }
816        // clean;
817        searchE.prototype.func_clean = function(){
818                // Limpa os campos;
819            for(var i=0; i < this.txtfields.length; i++){
820                    if(Element(this.txtfields[i]) != null){Element(this.txtfields[i]).value = "";}
821            }
822
823            for(i = 0; i < this.selectFields.length; i++)
824            {
825                if (Element(this.selectFields[i]))
826                {
827                    Element(this.selectFields[i]).selectedIndex = 0;
828                }
829            }
830            if(Element("check_all_msg") != null){Element("check_all_msg").checked = false;}
831
832            EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
833                EsearchE.del_mailboxes();
834        }
835
836        // close
837        searchE.prototype.func_close = function(type){
838                var _this = this;
839                _this.name_box_search = "";
840                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
841                _this.type = type;
842                _this.searchW['window_search'].close();
843        }
844        // Monta a janela em tela;
845        searchE.prototype.showWindow = function(div){
846                if(!this.searchW[div.id]) {
847                        div.style.width = "804px";
848                        div.style.height = "440px";
849                        div.style.visibility = "hidden";
850                        div.style.position = "absolute";
851                        div.style.zIndex = "10003";
852                        var title = ":: "+ get_lang("Search")+" ::";
853                        var wHeight = div.offsetHeight + "px";
854                        var wWidth =  div.offsetWidth   + "px";
855
856                        win = new dJSWin({
857                                id: 'ccList'+div.id,
858                                content_id: div.id,
859                                width: wWidth,
860                                height: wHeight,
861                                title_color: '#3978d6',
862                                bg_color: '#eee',
863                                title: title,
864                                title_text_color: 'white',
865                                button_y_img: '../phpgwapi/images/win_min.gif',
866                                button_x_img: '../phpgwapi/images/winclose.gif',
867                                border: true });
868                        this.searchW[div.id] = win;
869                        win.draw();
870                }else{
871                        var _this = this;
872                        win = this.searchW[div.id];
873                        if((_this.type == "close" && win.state == 0) || win.state == 2){EsearchE.func_clean();}
874                        win.draw();
875                }
876                win.open();     
877        }
878       
879        searchE.prototype.aux_local_folder_display = function(folder) {
880                if(!expresso_offline)
881                        return "(Local) " + lang_folder(folder.substr(6));
882                else
883                        return lang_folder(folder.substr(6));
884        }
885       
886// Cria o objeto
887        var EsearchE;
888        EsearchE = new searchE();
Note: See TracBrowser for help on using the repository browser.