source: trunk/expressoMail1_2/js/QuickCatalogSearch.js @ 5786

Revision 5786, 31.3 KB checked in by angelo, 12 years ago (diff)

Ticket #2561 - Tornar clicaveis icones de lupa apresentados na tela de busca f9 e na nova agenda

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