source: sandbox/2.4.1-3/expressoMail1_2/js/QuickCatalogSearch.js @ 6422

Revision 6422, 30.7 KB checked in by gustavo, 12 years ago (diff)

Ticket #2768 - icone de mais informacoes para contatos pessoais

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1        function emQuickCatalogSearch ()
2        {
3                this.arrayWin = new Array();
4                this.el;
5                this.cc_contacts = new Array();
6                this.cc_groups  = new Array();
7        }
8       
9        $(document).ready(function(){
10                $('#combobox option').each(function(){
11                        if($(this).val() == preferences.catalog_search){
12                                $(this).attr('selected',true);
13                        }
14                });
15        });       
16        /* showlist */ 
17        emQuickCatalogSearch.prototype.showList = function(data, begin, end, ID, field)
18        {
19                data_  = data; 
20                id_    = ID;
21        field_ = field;
22        begin_ = begin;
23        end_   = end;
24                content = $("#content_id_"+ID);
25               
26                keypress_read(data);
27                configure_slider(data);
28                create_list(data, true);
29                details_results(data);
30
31        this.showWindow();     
32        }
33     
34         
35    /* Leitura das teclas de atalho */   
36    function keypress_read(data) {     
37                $("#dialog-modal").unbind('keydown').keydown(function (e) {
38                        var keyCode = e.keyCode;
39                        arrow = {left: 37, up: 38, right: 39, down: 40, enter: 13, esc: 27, space: 32};
40                        var slider = $( "#slider" );
41                        switch (keyCode)
42                        {
43                                case arrow.enter:                                       
44                                        if(!search_focus){
45                                                i = $(".ui-selected:last").attr("value") + 1;
46                                                if($("#actions_"+i).clone().find(".ui-button-text").text() == '+')
47                                                        add_contact_field(document.getElementById("contact_"+i).innerHTML, document.getElementById("actions_"+i), "contact_"+i);
48                                                else{
49                                                        remove_contact_field(document.getElementById("contact_"+i).innerHTML, document.getElementById("actions_"+i), "contact_"+i);
50                                                }
51                                                document.getElementById("busca").value = "";
52                                                //Evita que o campo "para" receba o enter
53                                                e.preventDefault();
54                                                $("#dialog-modal").dialog("close");
55                                        }
56                                        if (is_webkit){
57                                                //Posiciona o cursor no final do texto no Chrome
58                                                var txt_area = document.getElementById('to_'+id_);
59                                                var len = txt_area.value.length;
60                                                txt_area.setSelectionRange(len, len);
61                                        }
62                                        break;
63                                case arrow.left:
64                                        if(!search_focus){
65                                                slider.slider("value", $( "#slider" ).slider( "value" ) - 1);
66                                                create_list(data_, false);     
67                                        }
68                                        break;
69                                case arrow.right:
70                                        if(!search_focus){
71                                                if((($( "#slider" ).slider( "value" ))) == Math.ceil(data_.length/6))
72                                                        break;
73                                                slider.slider( "value", $( "#slider" ).slider( "value" ) + 1);                                 
74                                                create_list(data_, false);                                                     
75                                        }
76                                        break;
77                                case arrow.up:
78                                        if(!search_focus){
79                                                show_detail(data_, "up");
80                                        }
81                                        break;
82                                case arrow.down:
83                                        if(!search_focus){
84                                                show_detail(data_, "down");
85                                        }
86                                        break;
87                                case arrow.space:
88
89                                        if(!search_focus){
90                                                i = $(".ui-selected:last").attr("value") + 1;
91                                                if($("#actions_"+i).clone().find(".ui-button-text").text() == '+')
92                                                {
93                                                        add_contact_field(document.getElementById("contact_"+i).innerHTML, document.getElementById("actions_"+i), "contact_"+i);
94                                                }else{
95                                                        remove_contact_field(document.getElementById("contact_"+i).innerHTML, document.getElementById("actions_"+i), "contact_"+i);
96                                                }
97                                                document.getElementById("busca").value = "";
98                                        }
99                                        break;
100                        }
101                });     
102        }
103       
104       
105        /* Mostra os detalhes do contato selecionado */
106        function show_detail(data_, direction) {
107                id_contact = $(".ui-selected:last").attr("value");
108                if(direction == "down") {
109                        if((id_contact == (((((parseInt($( "#slider" ).slider( "value" )) - 1)*6))+6)-1)) || id_contact == data_.length - 1 || data_.length == 1)
110                                return;
111                        var line_contact = $('li.ui-selected');
112                        $('li.ui-selected').next().addClass("ui-selected");
113                        id_contact++;
114                }
115                else {
116                        if(id_contact == (($( "#slider" ).slider( "value" ) -1)*6))
117                                return;
118                        var line_contact = $('li.ui-selected');
119                        $('li.ui-selected').prev().addClass("ui-selected");
120                        id_contact--;
121                }                                       
122                line_contact.removeClass("ui-selected").addClass("ui-selectee");
123                var details = $("#detalhes_contato").empty();   
124                switch(data_['type_catalog']) {
125                        case 'G':
126                                if(data['extra_ldap_fields'] != undefined){
127                                        if(data['extra_ldap_fields'].length != 0)
128                                                var extra_fields = (data['extra_ldap_fields']).split("#");   
129                                        else
130                                                var extra_fields = []; 
131                                }else
132                                        var extra_fields = []; 
133                                if(preferences.default_fields_quick_search != 0) {
134                                        details.append('<p><label class="attribute">' + utf8_decoder(data_[id_contact].cn[0]) + "</label>" + '<span class="value">' + (data_[id_contact].mail ? data_[id_contact].mail[0] : "") + '</span></p>');
135                                        if((data_[id_contact].telephonenumber ? data_[id_contact].telephonenumber[0] : ""))
136                                                details.append('<p><label class="attribute">Telefone </label>' + '<span class="value">' + (data_[id_contact].telephonenumber ? data_[id_contact].telephonenumber[0] : "") + '</span></p>');           
137                                }
138                                for (var i=0; i<=extra_fields.length-1; i++)
139                                {
140                                        var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);   
141                                        var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                         
142                                        if(data_[id_contact][valor.toLowerCase()] != undefined) {
143                                                var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ;
144                                                for(j=0; j<data_[id_contact][valor.toLowerCase()].length; j++) {
145                                                        details.append(tmp_campo + '<span class="value">' + data_[id_contact][valor.toLowerCase()][j] + "</span></p>");
146                                                        tmp_campo = "";
147                                                }
148                                        }
149                                }
150                                break;
151                        case 'P':
152                                if(utf8_decoder(data_[id_contact].cn) == 'undefined')
153                                        details.append('<p><label class="attribute">' + utf8_decoder(data_[id_contact].title) + '</label>' + '<span class="value">' + data_[id_contact].short_name + '</span></p>');
154                                else
155                                        details.append('<p><label class="attribute">' + utf8_decoder(data_[id_contact].cn) + '</label>' + '<span class="value">' + data_[id_contact].mail + '</span></p>');
156                if(data_[id_contact].telephonenumber != null)
157                    details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data_[id_contact].telephonenumber + '</span></p>');
158                                break;
159                        default:
160                                if(data['extra_ldap_fields'] != undefined){
161                                        if(data['extra_ldap_fields'].length != 0)
162                                                var extra_fields = (data['extra_ldap_fields']).split("#");   
163                                        else
164                                                var extra_fields = [];   
165                                }else{
166                                        var extra_fields = [];   
167                                }
168                if(preferences.default_fields_quick_search != 0 || data_[id_contact].type_contact == "P") {
169                                        if(utf8_decoder(data_[id_contact].cn) == 'undefined')
170                                                details.append('<p><label class="attribute">' + utf8_decoder(data_[id_contact].title) + '</label>' + '<span class="value">' + data_[id_contact].short_name + '</span></p>');
171                                        else
172                                                details.append('<p><label class="attribute">' + utf8_decoder(data_[id_contact].cn) + '</label>' + '<span class="value">' + data_[id_contact].mail + '</span></p>');
173                                        if(data_[id_contact].telephonenumber != null)
174                                                details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data_[id_contact].telephonenumber + '</span></p>');
175                                }       
176                                if(data_[id_contact].mail[0] == 'undefined')
177                                        break;
178                                if(data_[id_contact].mail[0].length > 1) {
179                                        for (var i=0; i<=extra_fields.length-1; i++) {
180                                                var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);   
181                                                var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                         
182                                                if(data_[id_contact][valor.toLowerCase()] != undefined) {
183                                                        var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ;
184                                                        for(j=0; j<data_[id_contact][valor.toLowerCase()].length; j++) {
185                                                                details.append(tmp_campo + '<span class="value">' + data_[id_contact][valor.toLowerCase()][j] + "</span></p>");
186                                                                tmp_campo = "";
187                                                        }
188                                                }
189                                        }
190                                }
191                        break;
192                }                               
193        }
194
195                       
196        /*
197        * Método que cria a lista de contatos
198        */
199        function create_list(data, begin, uiValue) {
200                var sliderValue = 1;
201                if(typeof($( "#slider" ).slider( "value" )) != "object")
202                        sliderValue = $( "#slider" ).slider( "value" );
203                if(uiValue)
204                        sliderValue = uiValue;
205                $("#detalhes_contato").empty();
206                var paginas = Math.ceil(data.length/6);
207                $("#title_usuarios").html( get_lang("Results") );
208        var selectable = $("#selectable");
209                selectable.empty();
210                var acento = data.search_for;
211        var Ul = document.createElement("ul");
212                var caracteresInvalidos = 'àèìòùâêîôûäëïöüáéíóúãõÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÁÉÍÓÚÃÕ';
213                var caracteresValidos =   'aeiouaeiouaeiouaeiouaoAEIOUAEIOUAEIOUAEIOUAO';       
214               
215                var i = new Number();
216                var j = new Number();
217                var cString = new String();
218                var varRes = '';
219
220                for (i = 0; i < data.search_for.length; i++) {
221                        cString = data.search_for.substring(i, i + 1);
222                        for (j = 0; j < caracteresInvalidos.length; j++) {
223                                if (caracteresInvalidos.substring(j, j + 1) == cString){
224                                        cString = caracteresValidos.substring(j, j + 1);
225                                }
226                        }
227                        varRes += cString;
228                }
229                data.search_for = varRes;
230               
231                for (i=((sliderValue -1)*6)+1; i<(((sliderValue -1)*6)+1)+6; i++) {
232                        var Op = document.createElement("li");
233                        if(i > data.length)
234                                break;
235                        if (data['type_catalog'] != 'G' && (data[i-1].mail == null || data[i-1].mail == ""))
236                                data[i-1].mail = get_lang("No mail");
237                               
238                        if(i == (((sliderValue -1)*6)+1)) {
239                                Op.setAttribute("class", "ui-selected");
240                                Op.setAttribute("className", "ui-selected");
241                        }       
242                        else { 
243                                Op.setAttribute("class", "ui-selectee");
244                                Op.setAttribute("className", "ui-selectee");
245                        }
246                        var contact_name = utf8_decoder(data[i-1].cn);
247                        if(contact_name == 'undefined'){
248                                contact_name = utf8_decoder(data[i-1].title);
249                                if(contact_name != 'undefined'){
250                                        data[i-1].mail = data[i-1].short_name;
251                                }
252                        }
253                        var exist = "add_contact_field";
254                        var signal = "+";
255                        var btnClass = "add";
256                        emails_adicionados = "";
257                        var emailList = content.find(field_).filter("input").parent().find("div input");
258                        //      var array = content.find(".to-tr").find(".box");
259                        $.each(emailList, function(index, value){
260                                emails_adicionados += $(value).val() + ",";
261                        });
262                        emails_adicionados = emails_adicionados.split(",");
263                        for(aux=0; aux<emails_adicionados.length -1; aux++) {
264                                if(emails_adicionados[aux].match(/<([^<]*)>[\s]*$/)){
265                                        if(emails_adicionados[aux].match(/<([^<]*)>[\s]*$/)[1].toLowerCase() == (utf8_decoder(data[i-1].mail)).toLowerCase()){
266                                                emails_adicionados[aux] = "%";
267                                                exist = "remove_contact_field";
268                                                signal = "x";
269                                                btnClass = "remove";
270                                        }
271                                }else{
272                                        if(emails_adicionados[aux].toLowerCase() == (utf8_decoder(data[i-1].mail)).toLowerCase()){
273                                                emails_adicionados[aux] = "%";
274                                                exist = "remove_contact_field";
275                                                signal = "x";
276                                                btnClass = "remove";
277                                        }
278                                }
279                        }
280                       
281                        if(contact_name.toLowerCase().indexOf(acento.toLowerCase()) != -1 && acento.indexOf(" ") == -1 && acento.indexOf("@") == -1)                                                                   
282                                contact_name = contact_name.substring(0, contact_name.toLowerCase().indexOf(acento.toLowerCase())) + "<u>" + contact_name.substr(contact_name.toLowerCase().indexOf(acento.toLowerCase()), acento.length) + "</u>" + contact_name.substring(contact_name.toLowerCase().indexOf(acento.toLowerCase()) + acento.length);
283                        else if(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()) != -1 && data.search_for.indexOf(" ") == -1 && data.search_for.indexOf("@") == -1)                                                                   
284                                contact_name = contact_name.substring(0, contact_name.toLowerCase().indexOf(data.search_for.toLowerCase())) + "<u>" + contact_name.substr(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()), data.search_for.length) + "</u>" + contact_name.substring(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()) + data.search_for.length);
285                        var line = '<span class="menu-control"><button class="'+btnClass+'" id="actions_'+i+'" onClick="'+exist+'(document.getElementById(\'contact_' + i + '\').innerHTML, this, \'contact_' + i + '\')">'+ signal +'</button></span><div id="contact_' + i + '" onDblClick="'+exist+'(this.innerHTML, document.getElementById(\'actions_'+i+'\'), \'contact_' + i + '\')"><div class="name_contact"><strong class="name">' + contact_name + '</strong><em class="email">' + ((utf8_decoder(data[i-1].mail) != undefined)? (utf8_decoder(data[i-1].mail) == 'undefined' ? get_lang("No mail") : utf8_decoder(data[i-1].mail)) : get_lang("No mail")) + '</em></div></div>';
286                        Op.innerHTML = line;
287            $(Op).val(i - 1);
288            selectable.append(Op);
289                        $("#contact_"+i).click(function(){
290                                document.getElementById("amount-text").focus();
291                        });
292        }
293                selectable.append(Ul);
294                var first_contact;
295                begin ? first_contact = 0 : first_contact = ((sliderValue* 6) -6);                     
296                var details = $("#detalhes_contato").empty();   
297               
298                switch (data['type_catalog']) {
299                        case 'G':
300                                if(data['extra_ldap_fields']){
301                                        if(data['extra_ldap_fields'].length != 0)
302                                                var extra_fields = (data['extra_ldap_fields']).split("#");   
303                                        else
304                                                var extra_fields = [];   
305                                }else
306                                        var extra_fields = [];   
307                                if(preferences.default_fields_quick_search != 0) {                             
308                                        details.append('<p><label class="attribute">' + utf8_decoder(data[first_contact].cn[0]) + "</label>" + '<span class="value">' + (data[first_contact].mail ? data[first_contact].mail[0] : "") + "</span></p>");
309                                        if(data[first_contact].telephonenumber)
310                                                details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + (data[first_contact].telephonenumber ? data[first_contact].telephonenumber[0] : "") + '</span></p>');
311                                }
312                                for (var i=0; i<=extra_fields.length-1; i++) {
313                                        var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);   
314                                        var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                         
315                                        if(data[0][valor.toLowerCase()] != undefined)
316                                        {
317                                                var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ;
318                                                for(j=0; j<data[first_contact][valor.toLowerCase()].length; j++) {
319                                                        details.append(tmp_campo + '<span class="value">' + utf8_decoder(data[first_contact][valor.toLowerCase()][j]) + "</span></p>");
320                                                        tmp_campo = "";
321                                                }
322                                        }
323                                }                       
324                                break;
325                        case 'P':
326                                if(utf8_decoder(data[first_contact].cn) != 'undefined')
327                                        details.append('<p><label class="attribute">' + utf8_decoder(data[first_contact].cn) + '</label>' + '<span class="value">' + data[first_contact].mail + '</span></p>');
328                                else
329                                        details.append('<p><label class="attribute">' + utf8_decoder(data[first_contact].title) + '</label>' + '<span class="value">' + data[first_contact].short_name + '</span></p>');
330                if(data[first_contact].telephonenumber != null)
331                                        details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[first_contact].telephonenumber  + '</span></p>');
332                                break;
333                        default:       
334                                if(data['extra_ldap_fields']){
335                                        if(data['extra_ldap_fields'].length != 0)
336                                                var extra_fields = (data['extra_ldap_fields']).split("#");   
337                                        else
338                                                var extra_fields = [];   
339                                }else
340                                        var extra_fields = [];   
341                                if(preferences.default_fields_quick_search != 0 || data[first_contact].type_contact == "P") {
342                                        if(utf8_decoder(data[first_contact].cn) != 'undefined')
343                                                details.append('<p><label class="attribute">' + utf8_decoder(data[first_contact].cn) + '</label>' + '<span class="value">' + data[first_contact].mail + '</span></p>');
344                                        else
345                                                details.append('<p><label class="attribute">' + utf8_decoder(data[first_contact].title) + '</label>' + '<span class="value">' + data[first_contact].short_name + '</span></p>');
346                                        if(data[first_contact].telephonenumber != null)
347                                                details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[first_contact].telephonenumber + "</span></p>");
348                                }
349                                if( data[first_contact].type_contact == "G") {
350                                        if(data[first_contact].mail[0].length > 1) {
351                                                for (var i=0; i<=extra_fields.length-1; i++) {
352                                                        var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);   
353                                                        var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                         
354                                                        if(data[first_contact][valor.toLowerCase()] != undefined) {
355                                                                var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ;
356                                                                for(j=0; j<data[first_contact][valor.toLowerCase()].length; j++) {
357                                                                        details.append(tmp_campo + '<span class="value">' + utf8_decoder(data[first_contact][valor.toLowerCase()][j]) + "</span></p>");
358                                                                        tmp_campo = "";
359                                                                }       
360                                                        }       
361                                                }
362                                        }
363                                }
364                                break;
365                }
366                var string_results = sliderValue + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")";                 
367                $( "#amount-text" ).val( string_results );
368                $("button").button();
369                //$("button.remove").button({icons:{primary:"ui-icon-close"}, text: false});
370                //$("button.add").button({icons:{primary:"ui-icon-plus"}, text: false});
371                if(!is_ie)
372                        document.getElementById("amount-text").focus();
373                $("#selectable li:first").focus();
374                removeFocus();
375        }       
376               
377               
378        /* Método que configura os detalhes do resultado da busca */
379        function details_results(data) {
380                $(function() {
381                        $( "#selectable" ).selectable({
382                                stop: function() {
383                                        var details = $("#detalhes_contato").empty();                                 
384                    $( ".ui-selected", this ).each(function() {
385                                                if(data.length > 0){
386                                                        switch(data['type_catalog']) {
387                                                                case 'G':
388                                                                        if(data['extra_ldap_fields'] != undefined){
389                                                                                if(data['extra_ldap_fields'].length != 0)
390                                                                                        var extra_fields = (data['extra_ldap_fields']).split("#");   
391                                                                                else
392                                                                                        var extra_fields = [];   
393                                                                        }else
394                                                                                var extra_fields = [];   
395                                                                        if(preferences.default_fields_quick_search != 0) {     
396                                                                                details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].cn[0]) + "</label>" + '<span class="value">' + (data[this.value].mail ? data[this.value].mail[0] : "")+ "</span></p>");
397                                                                                if(data[this.value].telephonenumber )
398                                                                                        details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + (data[this.value].telephonenumber ? data[this.value].telephonenumber[0] : "")+ "</span></p>");
399                                                                        }
400                                                                        for (var i=0; i<=extra_fields.length-1; i++) {
401                                                                                var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);   
402                                                                                var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                         
403                                                                                if(data[this.value][valor.toLowerCase()] != undefined) {
404                                                                                        var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ;
405                                                                                        for(j=0; j<data[this.value][valor.toLowerCase()].length; j++) {
406                                                                                                details.append(tmp_campo + '<span class="value">' + utf8_decoder(data[this.value][valor.toLowerCase()][j]) + "</span></p>");
407                                                                                                tmp_campo = "";
408                                                                                        }
409                                                                                }
410                                                                        }
411                                                                        break;
412                                                                case 'P':
413                                                                        if(utf8_decoder(data[this.value].cn) == 'undefined')
414                                                                                details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].title) + "</label>" + '<span class="value">' + data[this.value].short_name + "</span></p>");
415                                                                        else
416                                                                                details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].cn) + "</label>" + '<span class="value">' + data[this.value].mail + "</span></p>");
417                                                                        if(data[this.value].telephonenumber != null)
418                                                                                details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[this.value].telephonenumber + "</span></p>");
419                                                                        break;
420                                                                default:
421                                                                        if(data['extra_ldap_fields'].length != 0)
422                                                                                var extra_fields = (data['extra_ldap_fields']).split("#");   
423                                                                        else
424                                                                                var extra_fields = [];     
425                                                                        if(preferences.default_fields_quick_search != 0 || data[this.value].type_contact == "P") {
426                                                                                if(utf8_decoder(data[this.value].cn) == 'undefined')
427                                                                                        details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].title) + "</label>" + '<span class="value">' + data[this.value].short_name + "</span></p>");
428                                                                                else
429                                                                                        details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].cn) + "</label>" + '<span class="value">' + data[this.value].mail + "</span></p>");
430                                                                                if(data[this.value].telephonenumber != null)
431                                                                                        details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[this.value].telephonenumber + "</span></p>");
432                                                                        }
433                                                                        if(data[this.value].mail[0] == 'undefined')
434                                                                                        break;
435                                                                        if(data[this.value].mail[0] != get_lang("No mail")) {
436                                                                                if(data[this.value].mail[0].length > 1) {
437                                                                                        for (var i=0; i<=extra_fields.length-1; i++) {
438                                                                                                var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);   
439                                                                                                var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                         
440                                                                                                if(data[this.value][valor.toLowerCase()] != undefined) {
441                                                                                                        var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ;
442                                                                                                        for(j=0; j<data[this.value][valor.toLowerCase()].length; j++) {
443                                                                                                                details.append(tmp_campo + '<span class="value">' + utf8_decoder(data[this.value][valor.toLowerCase()][j]) + "</span></p>");
444                                                                                                                tmp_campo = "";
445                                                                                                        }
446                                                                                                }
447                                                                                        }
448                                                                                }
449                                                                        }
450                                                                        break;
451                                                        }
452                                                }
453                                        });
454                                }
455            });
456        });
457    }
458     
459         
460    /*
461    * Método que configura o slider e os resultados
462    */
463    function configure_slider(data) {   
464        var paginas = (Math.ceil(data.length/6));
465        $("#title_usuarios").html( get_lang("Results") );
466        $(function() {
467            $( "#slider" ).slider({
468                                value:1,
469                                min: 1,
470                                max: paginas,
471                                step: 1,
472                                slide: function( event, ui ) {
473                                        create_list(data, false, ui.value);
474                                        var string_results = ui.value + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")";           
475                                        $( "#amount-text" ).val( string_results );
476                                }
477            });
478                        $("#selectable li:first button:first").focus();
479                });
480    }
481       
482        var search_focus = false;
483               
484        function setFocus() {search_focus = true;return;}
485       
486        function removeFocus() {search_focus = false;return;}
487               
488    function checkEnter(e) {
489                var kC = window.event ? event.keyCode :
490        e && e.keyCode ? e.keyCode :
491        e && e.which ? e.which : null;
492        if (kC)
493                        return kC == 13;
494        else
495                        return false;
496        }
497       
498               
499    /*
500     * Faz a busca direto da tela modal 
501     */
502    function buscaContato(param) {
503                $("#busca, #detalhes_contato, #selectable").empty();
504                if(param.length == 0) {
505            alert(get_lang("Please enter a parameter to search"));
506            return;
507        }           
508                if(param.length < preferences.search_characters_number) {
509            alert(get_lang("parameter must be at least") + " " +  preferences.search_characters_number + " " + get_lang("characters"));
510            return false;
511        }
512        var catalog = $("#combobox").val();
513        var handler_emQuickSearch = function(data) {
514            data_ = data;
515                        if(data_.length > 0) {     
516                                configure_slider(data_);
517                                create_list(data, true);
518                                details_results(data_);
519            }
520            else {
521                                $("#detalhes_contato, #selectable").empty();
522                                var selectable = $("#selectable");
523                                var Ul = document.createElement("ul");
524                                Ul.onclick = function(){
525                                };
526                                var Op = document.createElement("li");
527                                Op.innerHTML = '<span class="menu-control"></span><div id="no_results"><div class="name_contact"><strong class="name">Nenhum Resultado Encontrado</strong></div></div>';
528                                selectable.append(Op);
529                                selectable.append(Ul);
530                                var string_results = "0 " + get_lang("of") + " 0 (0 "  + get_lang("Results") + ")";             
531                                $( "#amount-text" ).val( string_results );
532                                details_results(data);
533                configure_slider(data);
534            }
535        }
536        cExecute ("$this.ldap_functions.quicksearchcontact&search_for="+param+"&field=TO&ID=0&catalog="+catalog, handler_emQuickSearch);
537    }
538               
539        function verifyEmails(emailAux, contato) {     
540                var contact_id = contato.split("_");           
541                if(contact_id[1] != 0)
542                {
543                        var ini = parseInt((contact_id[1]/6).toFixed(0));
544                        if(ini != 0 && ini != 1){
545                                ini = ini * 6;
546                                var fim = ini+1;
547                        }
548                        else{
549                                ini = 1;
550                                var fim = ini;
551                        }
552                        fim = fim +5;
553                        var contact2 = "";
554                        for(aux = ini; aux <= fim; aux++){
555                                if(contact_id[1] != aux){
556                                        if($("#"+contact_id[0]+"_"+aux).find('.email').text() == emailAux){
557                                                contact2 = contact_id[0]+"_"+aux;
558                                                var button = document.getElementById("actions_"+aux);
559                                                var div = document.getElementById(contact2);
560                                                if($("#actions_"+aux).find('.ui-button-text').text() == '+'){
561                                                        button.onclick = function(){
562                                                                remove_contact_field(div.innerHTML, button, contact2);
563                                                        };
564                                                        div.ondblclick = function(){
565                                                                remove_contact_field(div.innerHTML, button, contact2);
566                                                        };
567                                                        $("#actions_"+aux).find('.ui-button-text').text('x');
568                                                }
569                                                else{
570                                                        button.onclick = function(){
571                                                                add_contact_field(div.innerHTML, button, contact2);
572                                                        };
573                                                        div.ondblclick = function(){
574                                                                add_contact_field(div.innerHTML, button, contact2);
575                                                        };
576                                                        $("#actions_"+aux).find('.ui-button-text').text('+');
577                                                }
578                                        }
579                                }
580                        }
581                }
582        }
583    /*
584    * Método que adiciona o contato selecionado no campo do email (To, CC, CCo)
585    */
586    function add_contact_field(contact, button, divs) {
587       
588                var nome = $(contact).clone().find('.name').text();
589                var email = $(contact).clone().find('.email').text();
590                if(email == get_lang("No mail")){
591                        alert(get_lang("It is not possible to add this contact as a recipient because it does not have email"));
592                        if(!is_ie)
593                                document.getElementById("amount-text").focus();
594                        return;
595                }
596                verifyEmails(email, divs);
597                final_contact = "\""+nome +"\" <"+email+">";
598
599                final_contact = final_contact.replace(/\/n/, "");
600                if(data_[parseInt(divs.split("_")[1])-1].type_contact == "G"){
601                        var ldap_id = preferences.expressoMail_ldap_identifier_recipient;
602                        if(ldap_id){
603                                draw_email_box(
604                                        (data_[parseInt(divs.split("_")[1])-1][ldap_id.toLowerCase()] ? data_[parseInt(divs.split("_")[1])-1][ldap_id.toLowerCase()][0] : final_contact)
605                                        , content.find(field_).filter("input")
606                                );
607                        }else{
608                                draw_email_box(final_contact, content.find(field_).filter("input"));
609                        }
610                }else{
611                        draw_email_box(data_[0].id_contact, content.find(field_).filter("input"), true);
612                }
613                button.onclick = function(){
614                        remove_contact_field(document.getElementById(divs).innerHTML, button, divs);
615                };
616                var div = document.getElementById(divs);
617                div.ondblclick = function(){
618                        remove_contact_field(div.innerHTML, button, divs);
619                };
620                button.innerHTML = '<span class="ui-button-text" style="">x</span>';
621    }
622               
623               
624        /*
625    * Método que remove o contato selecionado no campo do email (To, CC, CCo)
626    */
627        function remove_contact_field(contact, button, divs) {
628                var email = $(contact).clone().find('.email').text();
629                var array = content.find(field_).parent().find("div input");
630                $.each(array, function(index, value){
631                        var validated_email = $(value).val();
632                        if(validated_email.match(/<([^<]*)>[\s]*$/)){
633                                if(validated_email.match(/<([^<]*)>[\s]*$/)[1].toLowerCase() == email.toLowerCase()) {
634                                        $(value).parent().remove();
635                                }
636                        }
637                });
638       
639                button.onclick = function(){
640                        add_contact_field(document.getElementById(divs).innerHTML, button, divs);
641                };
642                var div = document.getElementById(divs);
643                div.ondblclick = function(){
644                        add_contact_field(div.innerHTML, button, divs);
645                };
646                button.innerHTML = '<span class="ui-button-text" style="">+</span>';
647        }
648       
649         
650        /* Decoder utf8 */     
651    function utf8_decoder ( str_data ) {
652        var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0;     
653        str_data += '';   
654        while ( i < str_data.length ) {
655            c1 = str_data.charCodeAt(i);
656            if (c1 < 128) {
657                                tmp_arr[ac++] = String.fromCharCode(c1);
658                i++;
659            } else if ((c1 > 191) && (c1 < 224)) {
660                        c2 = str_data.charCodeAt(i+1);
661                        tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
662                        i += 2;
663                      } else {
664                                c2 = str_data.charCodeAt(i+1);
665                                c3 = str_data.charCodeAt(i+2);
666                                tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
667                                i += 3;
668                             }
669        }
670        return tmp_arr.join('');
671    }
672       
673   
674        /* Mostra tela de help */       
675    function show_help() {
676                $(function() {
677                        $( "#dialog-modal_help" ).dialog({
678                                                resizable: false,
679                                                width: 540,
680                                                modal: true,
681                                                closeOnEscape: true,
682                                                close : function (event, ui) {
683                                                                        $( "#amount-text" ).focus();
684                                                                        event.stopPropagation();
685                                                                }
686                        });
687                });
688        }       
689       
690        $("#dialog-modal_help").live("dialogclose", function(){
691                if(!is_ie)
692                        $( "#amount-text" ).focus();
693        });
694
695         
696        emQuickCatalogSearch.prototype.showWindow = function () {
697                $(this).bind('keydown');
698                $(function() {
699        $( "#dialog:ui-dialog" ).dialog( "destroy" );                   
700        $( "#dialog-modal" ).dialog({
701                        resizable: false,
702//                      height: "auto",
703                        width: 780,
704                        modal: true,
705                        position: 'bottom',
706                        closeOnEscape: true,
707                        close: function (event, ui) {
708                                event.stopPropagation();
709                                $(this).unbind('keydown');
710                                if (is_ie) {
711                                        var range= content.find(field_).createTextRange();
712                                        range.collapse(false);
713                                        range.select();
714                                } else {
715                                        content.find(field_).focus();   
716                                }
717                        },
718                        open: function () {
719                                removeFocus();
720                                $("#selectable li:first").focus();
721                                document.getElementById("amount-text").focus();
722                        },
723                        focus: function (event, ui) {
724                                //$(this).unbind('keydown');
725                        },
726                        beforeClose: function (event, ui) {
727                                $(this).unbind('keydown');
728                        },
729                        buttons:[
730                                                {
731                                                        text: "Fechar",
732                                                        click: function(){
733                                                                                                $("#detalhes_contato, #selectable, #busca").empty();
734                                                                                                $(this).dialog("close");
735                                                                                                if (is_ie) {
736                                                                                                        var range= content.find(field_).createTextRange();
737                                                                                                        range.collapse(false);
738                                                                                                        range.select();
739                                                                                                } else {
740                                                                                                        content.find(field_).focus();   
741                                                                                                }
742                                                                                         },
743                                                        style: "margin-top: -2.1em"
744                                                }
745                                        ]
746                        });
747        });
748                $(".ui-dialog .ui-dialog-titlebar")
749                .append('<a href="#" class="ui-dialog-titlebar-minimize ui-corner-all" role="button"><span class="ui-icon ui-icon-minusthick">minimize</span></a>')
750                .find('.ui-dialog-titlebar-minimize').click(function() {
751                        $(".ui-dialog-buttonpane, .ui-dialog-content").toggle();
752                        $(".ui-icon-minusthick, .ui-icon-newwin").toggleClass('ui-icon-minusthick').toggleClass('ui-icon-newwin');
753                });
754                $("#dialog-modal .ui-icon-search").click(function (){buscaContato($('#busca').val());});                                               
755                $("#dialog-modal button, input.button").button();
756}
757
758       
759        /* Build the Object */
760        //QuickCatalogSearch;
761        QuickCatalogSearch = new emQuickCatalogSearch();
Note: See TracBrowser for help on using the repository browser.