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

Revision 5258, 29.4 KB checked in by gustavo, 13 years ago (diff)

Ticket #2386 - Falha de validação na pesquisa de destinatários (F9)

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