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

Revision 5402, 30.0 KB checked in by angelo, 12 years ago (diff)

Ticket #2452 - Quebra de linha ao incluir destinatario a partir da pesquisa

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