Ignore:
Timestamp:
11/03/11 13:24:28 (12 years ago)
Author:
wmerlotto
Message:

Ticket #2305 - Enviando alteracoes, desenvolvidas internamente na Prognus, do modulo ExpressoMail?.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/js/QuickCatalogSearch.js

    r5075 r5134  
    77        } 
    88         
     9        /* showlist */   
    910        emQuickCatalogSearch.prototype.showList = function(data, begin, end, ID, field) 
    1011        { 
     
    1617 
    1718                        keypress_read(data); 
    18             init_results(data); 
    1919            configure_slider(data); 
     20                create_list(data, true); 
    2021            details_results(data); 
    2122                         
    22                     connector.loadScript("ccQuickAdd"); 
    23  
    24             if(preferences.use_shortcuts == '0'){ 
    25                 connector.loadScript("shortcut"); 
    26             } 
    27                  
    2823                id = '1'; 
    2924                _this = this; 
     
    4641         
    4742         
    48     function keypress_read(data)  
    49         { 
    50                 $("#dialog-modal").keypress(function (e)  
    51                 { 
    52                         var keyCode = e.keyCode || e.which, 
    53                         arrow = {left: 37, up: 38, right: 39, down: 40, enter: 13, esc: 27 }; 
     43    /* Leitura das teclas de atalho */     
     44    function keypress_read(data) {       
     45                $("#dialog-modal").keydown(function (e) { 
     46                        var keyCode = e.keyCode; 
     47                        arrow = {left: 37, up: 38, right: 39, down: 40, enter: 13, esc: 27}; 
    5448                        var slider = $( "#slider"  ); 
    5549                        switch (keyCode)  
    5650                        { 
    5751                                case arrow.enter: 
    58                                         add_contact_field(document.getElementsByClassName("ui-selected")[0].getElementsByClassName("name_contact")[0].innerHTML); 
     52                                        if(!search_focus){ 
     53                                                i = $(".ui-selected:last").attr("value") + 1; 
     54                                                add_contact_field($("#contact_" + i).html()); 
     55                                                document.getElementById("busca").value = ""; 
     56                                                $("#dialog-modal").unbind('keydown'); 
    5957                                        $("#dialog-modal").dialog("close"); 
     58                                        } 
    6059                                        break; 
    61                                  
    6260                                case arrow.left: 
    63                                         slider.slider( "value", $( "#slider" ).slider( "value" ) - 1); 
    64                                         create_list(data_);                                      
     61                                        slider.slider("value", $( "#slider" ).slider( "value" ) - 1); 
     62                                        create_list(data_, false);               
    6563                                        break; 
    66                                  
    6764                                case arrow.right: 
    68                                         if( (($( "#slider" ).slider( "value" ))) == Math.ceil(data_.length/7) ) 
    69                                         { 
    70                                                 alert("Não há mais páginas"); 
     65                                        if((($( "#slider" ).slider( "value" ))) == Math.ceil(data_.length/6)) 
    7166                                                break; 
    72                                         } 
    7367                                        slider.slider( "value", $( "#slider" ).slider( "value" ) + 1);                                   
    74                                         create_list(data_);                                              
     68                                        create_list(data_, false);                                                       
    7569                                        break; 
    76                                  
    7770                                case arrow.up: 
    78                                         id_contact = document.getElementsByClassName("ui-selected")[0].value; 
    79                                         if(id_contact == (($( "#slider" ).slider( "value" ) -1)*7)) 
     71                                        show_detail(data_, "up"); 
     72                                        break; 
     73                                case arrow.down: 
     74                                        show_detail(data_, "down"); 
    8075                                                break; 
    81                                         var line_contact = $('li.ui-selected'); 
    82                                         $('li.ui-selected').prev().removeClass("ui-selectee").addClass("ui-selected"); //css('background-color', '#72A9D3'); 
    83                                         line_contact.removeClass("ui-selected").addClass("ui-selectee"); 
    84                                         var details = $("#detalhes_contato").empty();                                  
    85                                                 $( ".ui-selected", this ).each(function() { 
    86                             if(data_['type_catalog'] == 'G') 
    87                             {                                          
    88                                 var extra_fields = (data_['extra_ldap_fields']).split("#");    
    89                                 /* Default fields */ 
    90                                 details.append("<strong>" + utf8_decoder(data_[this.value].cn[0])); 
    91                                 details.append("<br />" + data_[this.value].mail[0]); 
    92                                 details.append("<br /><br /><strong>Matrícula<br />"); 
    93                                 details.append(data_[this.value].employeenumber[0] + "<br />"); 
    94                                 details.append("<br /><strong> Telefone <br />"); 
    95                                 details.append(data_[this.value].telephonenumber[0] + "<br />"); 
    96                                 details.append(data_[this.value].telephonenumber[0]); 
    97                                 for (var i=0; i<extra_fields.length-1; i++) 
    98                                 { 
    99                                     var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);     
    100                                     var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                           
    101                                     if(data_[this.value][valor] != undefined) 
    102                                     {     
    103                                         details.append("<br /><br /><strong>" + campo); 
    104                                         details.append("<br />" + data_[this.value][valor][0]); 
    105                                     } 
    10676                                } 
     77                });      
    10778                                                        } 
    108                             else 
    109                             { 
    110                                     if(data_['type_catalog'] == 'P') 
    111                                     { 
    112                                         /* Default fields */ 
    113                                         details.append("<strong>" + utf8_decoder(data_[this.value].cn)); 
    114                                         details.append("<br />" + data_[this.value].mail); 
    115                                         if(data_[this.value].telephonenumber != "") 
    116                                         { 
    117                                             details.append("<br /><br /><br /><strong> Telefone <br />"); 
    118                                             details.append(data_[this.value].telephonenumber + "<br />");   
     79         
     80         
     81        /* Mostra os detalhes do contato selecionado */ 
     82        function show_detail(data_, direction) { 
     83                id_contact = $(".ui-selected:last").attr("value"); 
     84                if(direction == "down") { 
     85                        if((id_contact == (((((parseInt($( "#slider" ).slider( "value" )) - 1)*6))+6)-1)) || id_contact == data_.length - 1 || data_.length == 1) 
     86                                return;  
     87                        var line_contact = $('li.ui-selected'); 
     88                        $('li.ui-selected').next().addClass("ui-selected");  
     89                        id_contact++; 
    11990                                        } 
     91                else { 
     92                        if(id_contact == (($( "#slider" ).slider( "value" ) -1)*6))  
     93                                return; 
     94                        var line_contact = $('li.ui-selected'); 
     95                        $('li.ui-selected').prev().addClass("ui-selected");  
     96                        id_contact--; 
    12097                                    }  
    121                                     else 
    122                                     { 
     98                line_contact.removeClass("ui-selected").addClass("ui-selectee"); 
     99                var details = $("#detalhes_contato").empty();                                  
     100                switch(data_['type_catalog']) { 
     101                        case 'G': 
    123102                                        var extra_fields = (data_['extra_ldap_fields']).split("#");    
    124                                         /* Default fields */ 
    125                                         details.append("<strong>" + utf8_decoder(data_[this.value].cn)); 
    126                                         details.append("<br />" + data_[this.value].mail); 
    127                                         if(data_[this.value].telephonenumber != "") 
    128                                         { 
    129                                             details.append("<br /><br /><br /><strong> Telefone <br />"); 
    130                                             details.append(data_[this.value].telephonenumber + "<br />");   
     103                                if(preferences.default_fields_quick_search != 0) { 
     104                                        details.append('<p><label class="attribute">' + utf8_decoder(data_[id_contact].cn[0]) + "</label>" + '<span class="value">' + data_[id_contact].mail[0] + '</span></p>'); 
     105                                        details.append('<p><label class="attribute">Telefone </label>' + '<span class="value">' + data_[id_contact].telephonenumber[0] + '</span></p>');            
    131106                                        } 
    132                                         if(data_[this.value].mail[0].length > 1)  
    133                                         { 
    134                                             for (var i=0; i<extra_fields.length-1; i++) 
     107                                for (var i=0; i<=extra_fields.length-1; i++) 
    135108                                            { 
    136109                                                var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);     
    137110                                                var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                           
    138                                                 if(data_[this.value][valor] != undefined) 
    139                                                 {     
    140                                                     details.append("<br /><br /><strong>" + campo); 
    141                                                     details.append("<br />" + data_[this.value][valor][0]); 
     111                                        if(data_[id_contact][valor.toLowerCase()] != undefined) { 
     112                                                var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ; 
     113                                                for(j=0; j<data_[id_contact][valor.toLowerCase()].length; j++) { 
     114                                                        details.append(tmp_campo + '<span class="value">' + data_[id_contact][valor.toLowerCase()][j] + "</span></p>"); 
     115                                                        tmp_campo = ""; 
     116                                            } 
     117                                        } 
     118                                    } 
     119                                        break; 
     120                        case 'P': 
     121                                details.append('<p><label class="attribute">' + utf8_decoder(data_[id_contact].cn) + '</label>' + '<span class="value">' + data_[id_contact].mail + '</span></p>'); 
     122                if(data_[id_contact].telephonenumber != null) 
     123                    details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data_[id_contact].telephonenumber + '</span></p>'); 
     124                                                break;   
     125                        default: 
     126                                var extra_fields = (data_['extra_ldap_fields']).split("#");    
     127                if(preferences.default_fields_quick_search != 0 || data_[id_contact].type_contact == "P") { 
     128                                        details.append('<p><label class="attribute">' + utf8_decoder(data_[id_contact].cn) + '</label>' + '<span class="value">' + data_[id_contact].mail + '</span></p>'); 
     129                                        if(data_[id_contact].telephonenumber != null) 
     130                                                details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data_[id_contact].telephonenumber + '</span></p>'); 
     131                                                        } 
     132                                if(data_[id_contact].mail[0].length > 1) { 
     133                                        for (var i=0; i<=extra_fields.length-1; i++) { 
     134                                                var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);     
     135                                                var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                           
     136                                                if(data_[id_contact][valor.toLowerCase()] != undefined) { 
     137                                                        var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ; 
     138                                                        for(j=0; j<data_[id_contact][valor.toLowerCase()].length; j++) { 
     139                                                                details.append(tmp_campo + '<span class="value">' + data_[id_contact][valor.toLowerCase()][j] + "</span></p>"); 
     140                                                                tmp_campo = ""; 
    142141                                                } 
    143142                                            } 
    144143                                        } 
    145144                                    } 
    146                             } 
    147                                                 }); 
    148                                         break; 
    149                                  
    150                                 case arrow.down: 
    151                                         id_contact = document.getElementsByClassName("ui-selected")[0].value; 
    152                                         if((id_contact == (((((parseInt($( "#slider" ).slider( "value" )) - 1)*7))+7)-1)) || id_contact == data_.length - 2 || data_.length == 1) 
    153                                                 break;   
    154                                         var line_contact = $('li.ui-selected'); 
    155                                         $('li.ui-selected').next().removeClass("ui-selectee").addClass("ui-selected");  
    156                                         line_contact.removeClass("ui-selected").addClass("ui-selectee"); 
    157                                         var details = $("#detalhes_contato").empty();                                  
    158                         $( ".ui-selected", this ).each(function() { 
    159                             if(data_['type_catalog'] == 'G') 
    160                             {                                          
    161                                 var extra_fields = (data_['extra_ldap_fields']).split("#");    
    162                                 /* Default fields */ 
    163                                 details.append("<strong>" + utf8_decoder(data_[this.value].cn[0])); 
    164                                 details.append("<br />" + data_[this.value].mail[0]); 
    165                                 details.append("<br /><br /><strong>Matrícula<br />"); 
    166                                 details.append(data_[this.value].employeenumber[0] + "<br />"); 
    167                                 details.append("<br /><strong> Telefone <br />"); 
    168                                 details.append(data_[this.value].telephonenumber[0] + "<br />"); 
    169                                 details.append(data_[this.value].telephonenumber[0]); 
    170                                 for (var i=0; i<extra_fields.length-1; i++) 
    171                                 { 
    172                                     var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);     
    173                                     var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                           
    174                                     if(data_[this.value][valor] != undefined) 
    175                                     {     
    176                                         details.append("<br /><br /><strong>" + campo); 
    177                                         details.append("<br />" + data_[this.value][valor][0]); 
    178                                     } 
    179                                 } 
    180                                                         } 
    181                             else 
    182                             { 
    183                                     if(data_['type_catalog'] == 'P') 
    184                                     { 
    185                                         /* Default fields */ 
    186                                         details.append("<strong>" + utf8_decoder(data_[this.value].cn)); 
    187                                         details.append("<br />" + data_[this.value].mail); 
    188                                         if(data_[this.value].telephonenumber != "") 
    189                                         { 
    190                                             details.append("<br /><br /><br /><strong> Telefone <br />"); 
    191                                             details.append(data_[this.value].telephonenumber + "<br />");   
    192                                         } 
    193                                     }  
    194                                     else 
    195                                     { 
    196                                         var extra_fields = (data_['extra_ldap_fields']).split("#");    
    197                                         /* Default fields */ 
    198                                         details.append("<strong>" + utf8_decoder(data_[this.value].cn)); 
    199                                         details.append("<br />" + data_[this.value].mail); 
    200                                         if(data_[this.value].telephonenumber != "") 
    201                                         { 
    202                                             details.append("<br /><br /><br /><strong> Telefone <br />"); 
    203                                             details.append(data_[this.value].telephonenumber + "<br />");   
    204                                         } 
    205                                         if(data_[this.value].mail[0].length > 1)  
    206                                         { 
    207                                             for (var i=0; i<extra_fields.length-1; i++) 
    208                                             { 
    209                                                 var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);     
    210                                                 var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                           
    211                                                 if(data_[this.value][valor] != undefined) 
    212                                                 {     
    213                                                     details.append("<br /><br /><strong>" + campo); 
    214                                                     details.append("<br />" + data_[this.value][valor][0]); 
    215                                                 } 
    216                                             } 
    217                                         } 
    218                                     } 
    219                             } 
    220                                                 }); 
    221145                                        break; 
    222146                        } 
    223                 });      
    224147        } 
    225148                         
     
    229152                * Método que cria a lista de contatos 
    230153                */ 
    231                 function create_list(data) 
    232                 { 
     154        function create_list(data, begin, uiValue) { 
     155                var sliderValue = 1; 
     156                if(typeof($( "#slider" ).slider( "value" )) != "object") 
     157                        sliderValue = $( "#slider" ).slider( "value" ); 
     158                if(uiValue) 
     159                        sliderValue = uiValue; 
    233160                                        $("#detalhes_contato").empty(); 
    234                                         var paginas = Math.ceil(data.length/7) - 1;  
     161                var paginas = Math.ceil(data.length/6);  
    235162                                        $("#title_usuarios").html( get_lang("Results") ); 
    236                                         var string_results = $( "#slider" ).slider( "value" ) + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")";  
    237163                        var selectable = $("#selectable"); 
    238164                                                selectable.empty(); 
    239165                        var Ul = document.createElement("ul"); 
     166                for (i=((sliderValue -1)*6)+1; i<(((sliderValue -1)*6)+1)+6; i++) { 
    240167                        var Op = document.createElement("li"); 
    241                                                 for (i=(($( "#slider" ).slider( "value" ) -1)*7)+1; i<((($( "#slider" ).slider( "value" ) -1)*7)+1)+7; i++)  
    242                         { 
    243                                                         if(i >= data.length) 
     168                        if(i > data.length) 
    244169                                                                break; 
    245170                                                        if (data['type_catalog'] != 'G' && (data[i-1].mail == null || data[i-1].mail == "")) 
    246171                                data[i-1].mail = "No mail";  
    247                             if(i == ((($( "#slider" ).slider( "value" ) -1)*7)+1)){ 
     172                                 
     173                        if(i == (((sliderValue -1)*6)+1)) { 
    248174                                                                Op.setAttribute("class", "ui-selected"); 
     175                                Op.setAttribute("className", "ui-selected"); 
    249176                                                        } 
    250177                                                        else {   
    251178                                                                Op.setAttribute("class", "ui-selectee"); 
     179                                Op.setAttribute("className", "ui-selectee"); 
    252180                                                        } 
    253181                                                        var contact_name = utf8_decoder(data[i-1].cn); 
    254                                                         if(contact_name.substring(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase())) != -1)                                                                      
     182                        if(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()) != -1 && data.search_for.indexOf(" ") == -1 && data.search_for.indexOf("@") == -1)                                                                  
    255183                                                                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); 
    256                                                         Op.innerHTML = '<span style="float:right; left:335px; position: absolute; z-index: 100; background-color: #EEE; padding:0"><button onClick="add_contact_field(contact_' + i + '.innerHTML)">+</button><button onClick="remove_contact_field(contact_' + i + '.innerHTML)">x</button></span><div id=contact_' + i + ' onDblClick="add_contact_field(this.innerHTML)"><div class="name_contact"><strong>' + contact_name + '</strong><em>' + utf8_decoder(data[i-1].mail) + '</em></div></div>'; 
     184                        Op.innerHTML = '<span class="menu-control"><button onClick="add_contact_field(document.getElementById(\'contact_' + i + '\').innerHTML)">+</button><button onClick="remove_contact_field(document.getElementById(\'contact_' + i + '\').innerHTML)">x</button></span><div id="contact_' + i + '" onDblClick="add_contact_field(this.innerHTML)"><div class="name_contact"><strong>' + contact_name + '</strong><em>' + utf8_decoder(data[i-1].mail) + '</em></div></div>'; 
    257185                            $(Op).val(i - 1); 
    258                             Ul.appendChild(Op); 
    259                             selectable.append(Ul.innerHTML); 
     186            selectable.append(Op); 
    260187                        } 
    261                         $( "#amount" ).val( string_results ); 
    262                                                 $( "#amount" ).val( $( "#slider" ).slider( "value" ) + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")");    
    263                                                 document.getElementById("amount").focus();       
     188                selectable.append(Ul); 
     189                var first_contact; 
     190                begin ? first_contact = 0 : first_contact = ((sliderValue* 6) -6);                       
     191                if(first_contact == 0) { 
     192                        $(document).ready(function(){ 
     193                                $('#combobox option').each(function(){ 
     194                                        if($(this).val() == preferences.catalog_search){ 
     195                                                $(this).attr('selected',true); 
     196                                        } 
     197                                }); 
     198                        }); 
     199                } 
     200                var details = $("#detalhes_contato").empty();                                  
     201                switch (data['type_catalog']) { 
     202                        case 'G': 
     203                                var extra_fields = (data['extra_ldap_fields']).split("#");    
     204                                if(preferences.default_fields_quick_search != 0) {                               
     205                                        details.append('<p><label class="attribute">' + utf8_decoder(data[first_contact].cn[0]) + "</label>" + '<span class="value">' + data[first_contact].mail[0] + "</span></p>"); 
     206                                        details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[first_contact].telephonenumber[0] + '</span></p>'); 
     207                                } 
     208                                for (var i=0; i<=extra_fields.length-1; i++) { 
     209                                        var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);     
     210                                        var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                           
     211                                        if(data[0][valor.toLowerCase()] != undefined) 
     212                                        { 
     213                                                var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ; 
     214                                                for(j=0; j<data[first_contact][valor.toLowerCase()].length; j++) { 
     215                                                        details.append(tmp_campo + '<span class="value">' + data[first_contact][valor.toLowerCase()][j] + "</span></p>"); 
     216                                                        tmp_campo = ""; 
     217                                                } 
     218                                        } 
     219                                }                        
     220                                break; 
     221                        case 'P': 
     222                                details.append('<p><label class="attribute">' + utf8_decoder(data[first_contact].cn) + '</label>' + '<span class="value">' + data[first_contact].mail + '</span></p>'); 
     223                if(data[first_contact].telephonenumber != null) 
     224                                        details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[first_contact].telephonenumber  + '</span></p>'); 
     225                                break; 
     226                        default: 
     227                                var extra_fields = (data['extra_ldap_fields']).split("#");    
     228                                if(preferences.default_fields_quick_search != 0 || data[first_contact].type_contact == "P") { 
     229                                        details.append('<p><label class="attribute">' + utf8_decoder(data[first_contact].cn) + "</label>" + '<span class="value">' + data[first_contact].mail + "</span></p>"); 
     230                                        if(data[first_contact].telephonenumber != null) 
     231                                                details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[first_contact].telephonenumber + "</span></p>"); 
     232                                } 
     233                                if(data[first_contact].mail != "No mail") { 
     234                                        if(data[first_contact].mail[0].length > 1) { 
     235                                                for (var i=0; i<=extra_fields.length-1; i++) { 
     236                                                        var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);     
     237                                                        var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                           
     238                                                        if(data[first_contact][valor.toLowerCase()] != undefined) { 
     239                                                                var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ; 
     240                                                                for(j=0; j<data[first_contact][valor.toLowerCase()].length; j++) { 
     241                                                                        details.append(tmp_campo + '<span class="value">' + data[first_contact][valor.toLowerCase()][j] + "</span></p>"); 
     242                                                                        tmp_campo = ""; 
     243                                                                }        
     244                                                        }        
     245                                                } 
     246                                        } 
     247                                } 
     248                                break; 
     249                } 
     250                var string_results = sliderValue + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")";                  
     251                $( "#amount-text" ).val( string_results ); 
     252                $("button").button(); 
     253                if(!is_ie) 
     254                        document.getElementById("amount-text").focus();  
     255                $("#selectable li:first button:first").focus(); 
     256                removeFocus(); 
    264257                }        
    265258                 
    266259                 
    267                  
    268                  
    269                  
    270                  
    271                 function details_results(data)  
    272         { 
     260        /* Método que configura os detalhes do resultado da busca */ 
     261        function details_results(data) { 
    273262                                $(function() { 
    274263                    $( "#selectable" ).selectable({ 
     
    276265                                                                var details = $("#detalhes_contato").empty();                                  
    277266                                $( ".ui-selected", this ).each(function() { 
    278                                     if(data['type_catalog'] == 'G') 
    279                                     {                                          
     267                        switch(data['type_catalog']) { 
     268                                                        case 'G': 
    280269                                        var extra_fields = (data['extra_ldap_fields']).split("#");    
    281                                         /* Default fields */ 
    282                                         details.append("<strong>" + utf8_decoder(data[this.value].cn[0])); 
    283                                         details.append("<br />" + data[this.value].mail[0]); 
    284                                         details.append("<br /><br /><strong>Matrícula<br />"); 
    285                                         details.append(data[this.value].employeenumber[0] + "<br />"); 
    286                                         details.append("<br /><strong> Telefone <br />"); 
    287                                         details.append(data[this.value].telephonenumber[0] + "<br />"); 
    288                                         details.append(data[this.value].telephonenumber[0]); 
    289                                         for (var i=0; i<extra_fields.length-1; i++) 
    290                                         { 
     270                                                                if(preferences.default_fields_quick_search != 0) {       
     271                                                                        details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].cn[0]) + "</label>" + '<span class="value">' + data[this.value].mail[0] + "</span></p>"); 
     272                                                                        details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[this.value].telephonenumber[0] + "</span></p>"); 
     273                                                                } 
     274                                                                for (var i=0; i<=extra_fields.length-1; i++) { 
    291275                                            var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);     
    292276                                            var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                           
    293                                             if(data[this.value][valor] != undefined) 
    294                                             {     
    295                                                 details.append("<br /><br /><strong>" + campo); 
    296                                                 details.append("<br />" + data[this.value][valor][0]); 
     277                                                                        if(data[this.value][valor.toLowerCase()] != undefined) { 
     278                                                                                var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ; 
     279                                                                                for(j=0; j<data[this.value][valor.toLowerCase()].length; j++) { 
     280                                                                                        details.append(tmp_campo + '<span class="value">' + data[this.value][valor.toLowerCase()][j] + "</span></p>"); 
     281                                                                                        tmp_campo = ""; 
    297282                                            } 
    298283                                        } 
    299284                                    } 
    300                                     else 
    301                                     { 
    302                                         if(data['type_catalog'] == 'P') 
    303                                         { 
    304                                             /* Default fields */ 
    305                                             details.append("<strong>" + utf8_decoder(data[this.value].cn)); 
    306                                             details.append("<br />" + data[this.value].mail); 
    307                                             if(data[this.value].telephonenumber != "") 
    308                                             { 
    309                                                 details.append("<br /><br /><br /><strong> Telefone <br />"); 
    310                                                 details.append(data[this.value].telephonenumber + "<br />");   
    311                                             } 
    312                                         }  
    313                                         else 
    314                                         { 
     285                                                                break; 
     286                                                        case 'P': 
     287                                                                details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].cn) + "</label>" + '<span class="value">' + data[this.value].mail + "</span></p>"); 
     288                                if(data[this.value].telephonenumber != null) 
     289                                    details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[this.value].telephonenumber + "</span></p>"); 
     290                                                                break; 
     291                                                        default: 
    315292                                                var extra_fields = (data['extra_ldap_fields']).split("#");    
    316                                                 /* Default fields */ 
    317                                                 details.append("<strong>" + utf8_decoder(data[this.value].cn)); 
    318                                                 details.append("<br />" + data[this.value].mail); 
    319                                                 if(data[this.value].telephonenumber != "") 
    320                                                 { 
    321                                                     details.append("<br /><br /><br /><strong> Telefone <br />"); 
    322                                                     details.append(data[this.value].telephonenumber + "<br />");   
     293                                if(preferences.default_fields_quick_search != 0 || data[this.value].type_contact == "P") { 
     294                                                                        details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].cn) + "</label>" + '<span class="value">' + data[this.value].mail + "</span></p>"); 
     295                                                                        if(data[this.value].telephonenumber != null) 
     296                                                                                details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[this.value].telephonenumber + "</span></p>"); 
    323297                                                } 
    324                                                 if(data[this.value].mail[0].length > 1)  
    325                                                 { 
    326                                                     for (var i=0; i<extra_fields.length-1; i++) 
    327                                                     { 
     298                                                                if(data[this.value].mail[0].length > 1) { 
     299                                                                        for (var i=0; i<=extra_fields.length-1; i++) { 
    328300                                                        var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);     
    329301                                                        var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));                                           
    330                                                         if(data[this.value][valor] != undefined) 
    331                                                         {     
    332                                                             details.append("<br /><br /><strong>" + campo); 
    333                                                             details.append("<br />" + data[this.value][valor][0]); 
     302                                                                                if(data[this.value][valor.toLowerCase()] != undefined) { 
     303                                                                                        var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ; 
     304                                                                                        for(j=0; j<data[this.value][valor.toLowerCase()].length; j++) { 
     305                                                                                                details.append(tmp_campo + '<span class="value">' + data[this.value][valor.toLowerCase()][j] + "</span></p>"); 
     306                                                                                                tmp_campo = ""; 
    334307                                                        } 
    335308                                                    } 
    336309                                                } 
    337310                                        } 
     311                                                                break; 
    338312                                    } 
    339313                                                                }); 
     
    345319         
    346320        /*  
    347          * Método que inicializa a tela de contatos  
    348          */ 
    349         function init_results(data) 
    350         {                        
    351                         var Op = null; 
    352                         var Ul = null; 
    353                         var selectable = $("#selectable"); 
    354             selectable.empty(); 
    355             Ul = document.createElement("ul"); 
    356             Op = document.createElement("li"); 
    357                         var limit = data.length < 7 ? data.length : 7; 
    358                         for (i=1; i<=limit; i++)  
    359             { 
    360                                 Op.setAttribute("class", "ui-selectee"); 
    361                                 if(i == 1) 
    362                                         Op.setAttribute("class", "ui-selected"); 
    363                                 var contact_name = utf8_decoder(data[i-1].cn); 
    364                                 if(data['type_catalog'] != 'G' && (data[i-1].mail == null || data[i-1].mail == "")) 
    365                                 { 
    366                                         data[i-1].mail = "No mail";  
    367                                 } 
    368                                  
    369                                 if(contact_name.substring(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase())) != -1)                                                                      
    370                                         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); 
    371                                 Op.innerHTML = '<span style="float:right; left:335px; position: absolute; z-index: 100; background-color: #EEE; padding:0"><button onClick="add_contact_field(contact_' + i + '.innerHTML)">+</button><button onClick="remove_contact_field(contact_' + i + '.innerHTML)">x</button></span><div class="id_contact_field" id=contact_' + i + ' onDblClick="add_contact_field(this.innerHTML)"><div class="name_contact"><strong>' + contact_name + '</strong><em>' + utf8_decoder(data[i-1].mail) + '</em></div></div>'; 
    372                 $(Op).val(i - 1); 
    373                 Ul.appendChild(Op); 
    374                 selectable.append(Ul.innerHTML); 
    375             } 
    376                         $("#adds").html("Foram adicionados " + quantidade_contatos + " contatos."); 
    377         } 
    378          
    379          
    380         /*  
    381321         * Método que configura o slider e os resultados  
    382322         */ 
    383         function configure_slider(data)  
    384         {        
    385                         $("#detalhes_contato").empty(); 
    386             var paginas = Math.ceil(data.length/7);  
     323    function configure_slider(data) {    
     324        var paginas = (Math.ceil(data.length/6));  
    387325            $("#title_usuarios").html( get_lang("Results") ); 
    388326            $(function() { 
     
    392330                                        max: paginas, 
    393331                                        step: 1, 
    394                         slide: function( event, ui )  
    395                         { 
     332                                slide: function( event, ui ) { 
     333                                        create_list(data, false, ui.value);  
    396334                                                                var string_results = ui.value + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")";  
    397                                 var selectable = $("#selectable"); 
    398                                 selectable.empty(); 
    399                                 var Ul = document.createElement("ul"); 
    400                                 var Op = document.createElement("li"); 
    401                                                                 for (i=((ui.value-1)*7)+1; i<(((ui.value-1)*7)+1)+7; i++)  
    402                                 { 
    403                                     if(data['type_catalog'] != 'G' && (data[i-1].mail == null || data[i-1].mail == "")) 
    404                                                                         { 
    405                                                                                 data[i-1].mail = "No mail";  
    406                                                                         }        
    407                                                                         var contact_name = utf8_decoder(data[i].cn); 
    408                                                                         if(contact_name.substring(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase())) != -1)                                                                      
    409                                                                                 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); 
    410                                                                          
    411                                     Op.setAttribute("class", "ui-selectee"); 
    412                                                                         Op.innerHTML = '<span style="float:right; left:335px; position: absolute; z-index: 100; background-color: #EEE; padding:0"><button onClick="add_contact_field(contact_' + i + '.innerHTML)">+</button><button onClick="remove_contact_field(contact_' + i + '.innerHTML)">x</button></span><div class="id_contact_field" id=contact_' + i + ' onDblClick="add_contact_field(this.innerHTML)"><div class="name_contact"><strong>' + contact_name + '</strong><em>' + utf8_decoder(data[i].mail) + '</em></div></div>'; 
    413                                     $(Op).val(i); 
    414                                     Ul.appendChild(Op); 
    415                                     selectable.append(Ul.innerHTML); 
    416                                 } 
    417                                 $( "#amount" ).val( string_results ); 
    418                                                                 $(this).unbind('keypress'); 
    419                                                                 document.getElementById("amount").focus(); 
     335                                        $( "#amount-text" ).val( string_results ); 
    420336                                                } 
    421337                    }); 
    422                     $( "#amount" ).val( $( "#slider" ).slider( "value" ) + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")");          
     338                        $("#selectable li:first button:first").focus(); 
    423339                }); 
    424340        } 
    425341         
     342        var search_focus = false; 
    426343 
    427                  
    428         function checkEnter(e)  
    429                 { 
     344        function setFocus() {search_focus = true;return;} 
     345                 
     346        function removeFocus() {search_focus = false;return;} 
     347                 
     348    function checkEnter(e) { 
    430349                        var kC = window.event ? event.keyCode : 
    431350            e && e.keyCode ? e.keyCode : 
    432351            e && e.which ? e.which : null; 
    433             if (kC) {  
    434                                 //$("#dialog-modal").unbind('keypress'); 
     352        if (kC)  
    435353                                return kC == 13; 
    436                         } 
    437             else{  
     354        else 
    438355                                return false; 
    439356                        } 
    440                 } 
     357         
    441358         
    442359        /*  
    443360         * Faz a busca direto da tela modal   
    444361         */ 
    445         function buscaContato(param) 
    446         { 
    447                         $("#busca").empty(); 
    448                         if(param.length == 0) 
    449             { 
    450                 alert(get_lang("Please enter a parameter to search.")); 
    451                 return false; 
     362    function buscaContato(param) { 
     363                $("#busca, #detalhes_contato, #selectable").empty(); 
     364                if(param.length == 0) { 
     365            alert(get_lang("Please enter a parameter to search")); 
     366            return; 
    452367            } 
    453             if(param.length < preferences.search_characters_number) 
    454             { 
     368                if(param.length < preferences.search_characters_number) { 
    455369                alert(get_lang("parameter must be at least") + " " +  preferences.search_characters_number + " " + get_lang("characters")); 
    456370                return false; 
    457371            } 
    458372            var catalog = $("#combobox").val(); 
    459             var handler_emQuickSearch = function(data)  
    460             { 
     373        var handler_emQuickSearch = function(data) { 
    461374                data_ = data; 
    462                                 if(data_.length > 0) 
    463                 {         
    464                     init_results(data_); 
     375                        if(data_.length > 0) {         
    465376                    configure_slider(data_);     
     377                create_list(data_, true); 
    466378                    details_results(data_); 
    467379                } 
    468                 else 
    469                 { 
     380            else { 
    470381                    $("#detalhes_contato, #selectable").empty(); 
    471382                    configure_slider(data);  
     
    476387                 
    477388         
    478                 quantidade_contatos = 0; 
    479389        /*  
    480390         * Método que adiciona o contato selecionado no campo do email (To, CC, CCo)  
    481391         */ 
    482         function add_contact_field(contact) 
    483         { 
    484                         quantidade_contatos++; 
    485             $("#adds").html("Foram adicionados " + quantidade_contatos + " contatos."); 
     392    function add_contact_field(contact) { 
    486393                        var emailList      = document.getElementById(field_ + "_" + id_).value;  
    487             var contact_parsed = contact.replace(/<\/?[^>]+>/gi, ' '); 
     394                var contact_parsed = contact.replace(/<[\/]*u>/gi, ''); 
     395                contact_parsed     = contact_parsed.replace(/<u[^>]*>/gi, ''); 
     396                contact_parsed     = contact_parsed.replace(/<\/?[^>]+>/gi, ' '); 
    488397            contact_parsed     = contact_parsed.replace(/^\s+|\s+$/gi, "").replace(/\s{2,}/gi, "|"); 
    489398            var tokens_contact = contact_parsed.split("|"); 
    490  
    491399            if (tokens_contact[1].indexOf("(") > 0) 
    492400                tokens_contact[1] = tokens_contact[1].substr(0, (tokens_contact[1].indexOf("("))-2); 
     
    494402                        var final_contact; 
    495403                        if(tokens_contact[2] == undefined) 
    496                                 final_contact = "\"" + tokens_contact[0] + " " + "\" <" + tokens_contact[1] + ">, "; 
     404                        final_contact = "\"" + tokens_contact[0] + "" + "\" <" + tokens_contact[1] + ">, "; 
    497405                        else 
    498406                        {                        
    499407                                if(tokens_contact[3] == undefined)                
    500                                         final_contact =  "\"" + tokens_contact[0] + " " +  tokens_contact[1] + "\" <" + tokens_contact[2] + ">, "; 
     408                                final_contact =  "\"" + tokens_contact[0] + "" +  tokens_contact[1] + "\" <" + tokens_contact[2] + ">, "; 
    501409                                else 
    502                                         final_contact =  "\"" + tokens_contact[0] + " " +  tokens_contact[1] + " " +  tokens_contact[2] + "\" <" + tokens_contact[3] + ">, "; 
     410                                final_contact =  "\"" + tokens_contact[0] + "" +  tokens_contact[1] + "" +  tokens_contact[2] + "\" <" + tokens_contact[3] + ">, "; 
    503411            } 
    504             if (emailList[0] != '"') 
     412        if (emailList[0] != '"' && emailList.indexOf(",") < 0) 
    505413                emailList = emailList.substr(end_); 
     414            if(emailList.lastIndexOf(",") > 0) 
     415                        emailList = emailList.substr(0, emailList.lastIndexOf(",") + 1); 
    506416             
    507             if(emailList.lastIndexOf(",") > 0) 
    508                 emailList = emailList.substr(0, emailList.lastIndexOf(",") + 2); 
    509              
     417                final_contact = final_contact.replace(/\/n/, ""); 
    510418            new_emailList = emailList + final_contact;     
    511419            document.getElementById(field_ + "_" + id_).value = new_emailList; 
     420                 
     421                if (is_ie) {  
     422                        var range= document.getElementById(field_ + "_" + id_).createTextRange();  
     423                        range.collapse(false);  
     424                        range.select();  
     425                } else {  
    512426                        document.getElementById(field_ + "_" + id_).focus();    
     427                }  
     428                 
     429                 
     430                 
    513431                        $(this).unbind('keypress'); 
    514432                        $(this).dialog("close"); 
     
    518436         * Método que remove o contato selecionado no campo do email (To, CC, CCo)  
    519437         */ 
    520                 function remove_contact_field(contact) 
    521                 { 
     438        function remove_contact_field(contact) { 
    522439                        var contact_parsed = contact.replace(/<\/?[^>]+>/gi, ' '); 
    523440            contact_parsed     = contact_parsed.replace(/^\s+|\s+$/gi, "").replace(/\s{2,}/gi, "|"); 
    524                         var tokens_contact = contact_parsed.split("|"); 
    525441                         
     442                var tokens_contact = contact_parsed.split("|");  
    526443                        if (tokens_contact[2].indexOf("(") > 0) 
    527444                tokens_contact[2] = tokens_contact[2].substr(0, (tokens_contact[2].indexOf("("))-2); 
     
    532449                                final_contact =  "\"" + tokens_contact[0] + " " +  tokens_contact[1] + " " +  tokens_contact[2] + "\" <" + tokens_contact[3] + ">"; 
    533450                         
    534                         if(quantidade_contatos ==0) 
    535                         { 
    536                                 alert("Nenhum contato adicionado!"); 
    537                                 return false; 
    538                         } 
    539                          
    540                         var encontrou = false; 
    541                         var emailList = document.getElementById(field_ + "_" + id_).value;  
     451                var exist = false; 
     452                var emailList = $("#" + field_ + "_" + id_).val(); 
    542453                        var emails_adicionados = emailList.split(","); 
    543                         var quantidade_excluidos = 0; 
    544                         for(i=0; i<emails_adicionados.length -1; i++) 
    545                         { 
    546                                 if(emails_adicionados[i].trim() == final_contact) 
    547                                 { 
     454                for(i=0; i<emails_adicionados.length -1; i++) { 
     455                        emails_adicionados[i].replace(/^\s+|\s+$/g, '');  
     456                        if(emails_adicionados[i] == final_contact) { 
    548457                                        emails_adicionados[i] = "%"; 
    549                                         quantidade_excluidos++; 
    550                                         encontrou = true; 
     458                                exist = true; 
    551459                                } 
    552460                        } 
    553                         if (encontrou == false)  
    554                         { 
    555                                 alert("Não pode excluir um contato que ainda não adicionou."); 
     461                if (exist == false)  
    556462                                return false; 
    557                         } 
    558                          
    559                         quantidade_contatos -= quantidade_excluidos; 
    560             $("#adds").html("Foram adicionados " + quantidade_contatos + " contatos."); 
    561                          
    562463                        var novos_contatos = emails_adicionados.join(",");   
    563464            novos_contatos = novos_contatos.replace(/%,/g, ""); 
    564                         document.getElementById(field_ + "_" + id_).value = novos_contatos; 
     465                $("#" + field_ + "_" + id_).val(novos_contatos); 
    565466                } 
    566467         
    567468               
    568         function utf8_decoder ( str_data )  
    569         { 
     469        /* Decoder utf8 */       
     470    function utf8_decoder ( str_data ) { 
    570471            var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0; 
    571              
    572472            str_data += ''; 
    573              
    574             while ( i < str_data.length )  
    575             { 
     473        while ( i < str_data.length ) { 
    576474                c1 = str_data.charCodeAt(i); 
    577                 if (c1 < 128)  
    578                 { 
     475            if (c1 < 128) { 
    579476                    tmp_arr[ac++] = String.fromCharCode(c1); 
    580477                    i++; 
    581                 } else if ((c1 > 191) && (c1 < 224))  
    582                        { 
     478            } else if ((c1 > 191) && (c1 < 224)) { 
    583479                            c2 = str_data.charCodeAt(i+1); 
    584480                            tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); 
     
    596492         
    597493               
    598     function show_help() 
    599         { 
     494        /* Mostra tela de help */        
     495    function show_help() { 
    600496                $(function() { 
    601497                        $( "#dialog-modal_help" ).dialog({ 
    602498                                                resizable: false, 
    603                                                 height: 230, 
    604499                                                width: 540, 
    605500                                                modal: true, 
    606                                                 closeOnEscape: true, 
    607  
     501                                                closeOnEscape: true 
    608502                        }); 
    609503                }); 
     
    611505                   
    612506               
    613         emQuickCatalogSearch.prototype.showWindow = function (div) 
    614         { 
    615                                 $(this).bind('keypress'); 
     507        emQuickCatalogSearch.prototype.showWindow = function (div) { 
     508                $(this).bind('keydown'); 
    616509                                $(function() { 
    617510                    $( "#dialog:ui-dialog" ).dialog( "destroy" );                     
    618511                    $( "#dialog-modal" ).dialog({ 
    619512                                                resizable: false, 
    620                                                 height: 530, 
    621                                                 width: 940, 
     513//                      height: "auto", 
     514                        width: 780, 
    622515                                                modal: true, 
     516                        position: 'bottom', 
    623517                                                closeOnEscape: true, 
    624518                                                close: function (event, ui) { 
    625519                                                        event.stopPropagation(); 
    626                                                         $(this).unbind('keypress'); 
     520                                $(this).unbind('keydown'); 
     521                                if (is_ie) {  
     522                                        var range= document.getElementById(field_ + "_" + id_).createTextRange();  
     523                                        range.collapse(false);  
     524                                        range.select();  
     525                                } else {  
     526                                        document.getElementById(field_ + "_" + id_).focus();     
     527                                }  
     528                        }, 
     529                        open: function () { 
     530                                $("#selectable li:first button:first").focus();     
    627531                                                }, 
    628532                                                focus: function (event, ui) { 
    629                                                         $(this).bind('keypress'); 
     533                                //$(this).unbind('keydown'); 
    630534                                                }, 
    631535                                                beforeClose: function (event, ui) { 
    632                                                         $(this).bind('keypress'); 
     536                                $(this).unbind('keydown'); 
    633537                                                }, 
    634                                                 buttons:{ 
    635                                                         'Fechar' : function(){ 
     538                        buttons:[ 
     539                                                { 
     540                                                        text: "Fechar", 
     541                                                        click: function(){ 
    636542                                                                $("#detalhes_contato, #selectable, #busca").empty(); 
    637543                                                                $(this).dialog("close"); 
     544                                                                                                if (is_ie) {  
     545                                                                                                        var range= document.getElementById(field_ + "_" + id_).createTextRange();  
     546                                                                                                        range.collapse(false);  
     547                                                                                                        range.select();  
     548                                                                                                } else {  
     549                                                                                                                document.getElementById(field_ + "_" + id_).focus();     
    638550                                                        }  
     551                                                                                         }, 
     552                                                        style: "margin-top: -2.1em"  
    639553                                                } 
     554                                        ] 
    640555                                        }); 
    641556                }); 
     557                $(".ui-dialog .ui-dialog-titlebar") 
     558                .append('<a href="#" class="ui-dialog-titlebar-minimize ui-corner-all" role="button"><span class="ui-icon ui-icon-minusthick">minimize</span></a>') 
     559                .find('.ui-dialog-titlebar-minimize').click(function() { 
     560                        $(".ui-dialog-buttonpane, .ui-dialog-content").toggle(); 
     561                        $(".ui-icon-minusthick, .ui-icon-newwin").toggleClass('ui-icon-minusthick').toggleClass('ui-icon-newwin'); 
     562                }); 
    642563         
    643                  
    644                  
    645         if(! div) { 
    646                         alert(get_lang('The list has no participant.')); 
    647                         return; 
    648                 } 
    649                                                          
    650                 if(! this.arrayWin[div.id]) { 
    651                         div.style.width = "700px"; 
    652                         div.style.height = "230px"; 
    653                         var title = get_lang('The results were found in the Global Catalog')+':'; 
    654                         var wHeight = div.offsetHeight + "px"; 
    655                         var wWidth =  div.offsetWidth   + "px"; 
    656                         div.style.width = div.offsetWidth - 5; 
    657  
    658                         win = new dJSWin({                       
    659                                 id: 'QuickCatalogSearch_'+div.id, 
    660                                 content_id: div.id, 
    661                                 width: wWidth, 
    662                                 height: wHeight, 
    663                                 title_color: '#3978d6', 
    664                                 bg_color: '#eee', 
    665                                 title: title,                                            
    666                                 title_text_color: 'white', 
    667                                 button_x_img: '../phpgwapi/images/winclose.gif', 
    668                                 border: true, 
    669                                 onclose: 'QuickCatalogSearch.restoreShortcuts("'+ div.id +'")'}); 
    670  
    671                         this.arrayWin[div.id] = win; 
    672                         win.draw(); 
    673                 } 
    674                 else { 
    675                         win = this.arrayWin[div.id]; 
    676                 } 
    677                 //document.getElementById("window_QuickCatalogSearch").style.visibility = "visible"; 
    678                 //win.open(); 
    679                 //document.getElementById('select_QuickCatalogSearch').focus(); 
    680  
    681                 if(is_ie && (preferences.use_shortcuts == '1')){ 
    682                     shortcut.remove('down'); 
    683                     shortcut.remove('up'); 
    684                     shortcut.remove('return'); 
    685                 } 
    686         } 
    687          
    688         emQuickCatalogSearch.prototype.transfer_result = function (field, ID, begin, end){ 
    689                 cm = document.getElementById('select_QuickCatalogSearch'); 
    690                 option_selected = cm.options[cm.selectedIndex].value + ", "; 
    691                 emailList = document.getElementById(field + "_" + ID).value; 
    692                  
    693                 new_emailList = emailList.substring(0, begin) + option_selected + emailList.substring((parseInt(end) + 2), emailList.length); 
    694                 document.getElementById(field + "_" + ID).value = new_emailList; 
    695                 document.getElementById(field + "_" + ID).focus(); 
    696                 this.arrayWin['window_QuickCatalogSearch_A'].close(); 
    697                 document.getElementById("window_QuickCatalogSearch").style.visibility = "hidden"; 
    698         } 
    699  
    700         emQuickCatalogSearch.prototype.close_QuickSearch_window = function (field, ID){ 
    701                 //document.getElementById('QuickCatalogSearch_window_QuickCatalogSearch').style.display = "none"; 
    702                 document.getElementById(field + "_" + ID).focus(); 
    703                 this.arrayWin['window_QuickCatalogSearch_A'].close(); 
    704                 document.getElementById("window_QuickCatalogSearch").style.visibility = "hidden"; 
    705                 if(typeof shortcut.all_shortcuts['down'] == 'undefined'){ 
    706                     if(is_ie  && (preferences.use_shortcuts == '1')) 
    707                     { 
    708                         shortcut.add("down",function(){select_msg('null', 'down');},{'disable_in_input':false}); 
    709                         shortcut.add("up",function(){select_msg('null', 'up');},{'disable_in_input':false}); 
    710                         shortcut.add("return",function(){ 
    711                             if ( Element('border_id_0').className==='menu-sel' ) 
    712                             { 
    713                                     all_messages = Element('tbody_box').childNodes; 
    714                                     for (var i=0; i < all_messages.length; i++) 
    715                                     { 
    716                                             if ( exist_className(all_messages[i], 'selected_shortcut_msg') ) 
    717                                             { 
    718                                                     Element("td_who_" + all_messages[i].id).onclick(); 
    719                                                     return; 
    720                                             } 
    721                                     } 
    722                             } 
    723                         },{'disable_in_input':true}); 
    724                     } 
    725                 } 
    726         } 
    727  
    728         emQuickCatalogSearch.prototype.restoreShortcuts = function(id) { 
    729  
    730             var search_win = document.getElementById(id); 
    731             if(typeof shortcut.all_shortcuts['down'] == 'undefined'){ 
    732                 if (search_win.style.visibility == 'visible') 
    733                 { 
    734                     shortcut.add("down",function(){select_msg('null', 'down');},{'disable_in_input':false}); 
    735                     shortcut.add("up",function(){select_msg('null', 'up');},{'disable_in_input':false}); 
    736                     shortcut.add("return",function(){ 
    737                         if ( Element('border_id_0').className==='menu-sel' ) 
    738                         { 
    739                                 all_messages = Element('tbody_box').childNodes; 
    740                                 for (var i=0; i < all_messages.length; i++) 
    741                                 { 
    742                                         if ( exist_className(all_messages[i], 'selected_shortcut_msg') ) 
    743                                         { 
    744                                                 Element("td_who_" + all_messages[i].id).onclick(); 
    745                                                 return; 
    746                                         } 
    747                                 } 
    748                         } 
    749                     },{'disable_in_input':true}); 
    750                 } 
    751             } 
    752             search_win.style.visibility = 'hidden'; 
    753  
    754         } 
    755  
    756         emQuickCatalogSearch.prototype.close_window = function(id) { 
    757                 this.arrayWin[id].close(); 
    758                 var group_values = Element('list_values'); 
    759                 var user_values = Element('user_values'); 
    760         } 
    761         emQuickCatalogSearch.prototype.showCatalogList = function (border_id){ 
    762                 var el = Element('catalog_list'); 
    763  
    764                 if(el) { 
    765                         Element('border_id').value = border_id; 
    766                         win = this.arrayWin[el.id]; 
    767                         win.open(); 
    768                         return;          
    769                 } 
    770                 var border_input   = document.createElement("INPUT"); 
    771                 border_input.type  = 'hidden'; 
    772                 border_input.id    = 'border_id'; 
    773                 border_input.value = border_id; 
    774                 document.body.appendChild(border_input); 
    775                 el = document.createElement("DIV");              
    776                 el.id = 'catalog_list'; 
    777                 document.body.appendChild(el);                   
    778                 el.style.visibility = "hidden"; 
    779                 el.style.position = "absolute"; 
    780                 el.style.width = "700px"; 
    781                 el.style.height = is_ie ? "360px" : "375px";             
    782                 el.style.left = "0px"; 
    783                 el.style.top = "0px";                    
    784                 el.innerHTML = "<table border='0' cellpading='0' cellspacing='0' width='100%'>"+ 
    785                                            "<tr><td id='td1' style='cursor:pointer' align='center' onclick='QuickCatalogSearch.select_div(\"tab1\")'><a href='#' class='catalog' onclick='QuickCatalogSearch.select_div(\"tab1\");'>"+get_lang('Global Catalog')+"</a></td>"+ 
    786                                            "<td id='td2' style='background:#cecece;cursor:pointer' onclick='QuickCatalogSearch.select_div(\"tab2\")' align='center'><a href='#' class='catalog' onclick='QuickCatalogSearch.select_div(\"tab2\");'>"+get_lang('Personal Catalog')+"</a></td></tr>"+ 
    787                                            '</table>'+ 
    788                                            '<div id="tab1" align="center"><br>'+ 
    789                                            '<table border="0" cellpading="0" cellspacing="0">'+ 
    790                                            '<tr><td>'+get_lang("Select an organization and click on button <b>Search</b>")+'&nbsp;:</td></tr>'+ 
    791                                         '<tr><td><select style="display:none;width:150px" id="select_catalog" name="select_catalog" onchange="javascript:QuickCatalogSearch.update_organizations();"></select>&nbsp'+ 
    792                                         '<select id="select_organization" style="width:150px" name="select_organization"></select>&nbsp;'+    
    793                                         '<input type="text" id="search_for" name="search_for" value="" size="30" maxlength="30"/>&nbsp;<input type="button" onclick="QuickCatalogSearch.searchCatalogList(true)" class="button" value="'+get_lang('Search')+'">&nbsp;<input style="display:visible" type="button" onclick="QuickCatalogSearch.searchCatalogList(false)" class="button" value="'+get_lang('List All')+'"></td></tr>'+ 
    794                                            '<tr><td><input onclick="javascript:QuickCatalogSearch.changeOptions(this.value)" id="type_l" type="radio" name="type" value="l"/>'+get_lang('Public Lists')+'&nbsp;&nbsp;<input type="radio" id="type_u" name="type" value="u" onclick="javascript:QuickCatalogSearch.changeOptions(this.value)" checked/>'+get_lang('Users')+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+ 
    795                                            '<span style="visibility:hidden;background:#cc4444" id=msg_search>&nbsp;&nbsp;<font face="Verdana" size="1" color="WHITE">'+get_lang('Search in Catalog')+'...</font>&nbsp;</span></td></tr>'+ 
    796                                            '<tr><td>'+ 
    797                                            '<span id="list_span"><select multiple style="display:none;width:580px" size="14" id="list_values"></select></span>'+ 
    798                                            '<span id="user_span"><select multiple style="width:580px" size="14" id="user_values"></select></span>'+ 
    799                                            '</td></tr>'+ 
    800                                            '<tr><td nowrap><center>'+get_lang('Click here to add into the fields')+':&nbsp;<input type="button" class="button" value="'+get_lang('TO')+'" onClick="javascript:QuickCatalogSearch.addContacts(\'to\')">&nbsp;'+ 
    801                                            '<input type="button" class="button" value="'+get_lang('CC')+'" onClick="javascript:QuickCatalogSearch.addContacts(\'cc\')">&nbsp;'+( allow_hidden_copy ?   
    802                            '<input type="button" class="button" value="'+get_lang('CCo')+'" onClick="javascript:QuickCatalogSearch.addContacts(\'cco\')">' : '' )+ 
    803                                            '</center></td></tr><tr><td nowrap><center><input type="button" value="'+get_lang('Close')+'" onClick="javascript:QuickCatalogSearch.close_window(\'catalog_list\')"></center></td></tr>'+ 
    804                                            '</table>'+ 
    805                                            '</div>'+ 
    806                                            '<div style="display:none" id="tab2" align="center">'+ 
    807                                            '<br><br><br>'+ 
    808                                            '<table border="0" cellpading="0" cellspacing="0">'+ 
    809                                            '<tr><td>'+get_lang("Select the type of contact that you want to view")+'&nbsp;:</td></tr>'+ 
    810                                            '<tr><td><input onclick="javascript:QuickCatalogSearch.changeOptions(this.value)" type="radio" name="type" value="p"/>' + get_lang('People') + '&nbsp;&nbsp;<input type="radio" name="type" value="g" onclick="javascript:QuickCatalogSearch.changeOptions(this.value)"/>' + get_lang('Groups') + ' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+ 
    811                                            '<tr><td>'+ 
    812                                            '<span id="personal_span"><select multiple style="width:580px" size="14" id="list_personal"></select></span>'+ 
    813                                            '<span id="groups_span"><select multiple style="display:none;width:580px" size="14" id="list_groups"></select></span>'+ 
    814                                            '</td></tr>'+ 
    815                                            '<tr><td nowrap><center>'+get_lang('Click here to add into the fields')+':&nbsp;<input type="button" class="button" value="'+get_lang('TO')+'" onClick="javascript:QuickCatalogSearch.addContacts(\'to1\')">&nbsp;'+ 
    816                                            '<input type="button" class="button" value="'+get_lang('CC')+'" onClick="javascript:QuickCatalogSearch.addContacts(\'cc1\')">&nbsp;'+ ( allow_hidden_copy ?  
    817                            '<input type="button" class="button" value="'+get_lang('CCo')+'" onClick="javascript:QuickCatalogSearch.addContacts(\'cco1\')">' : '' )+ 
    818                                            '</center></td></tr><tr><td nowrap><center><input type="button" value="'+get_lang('Close')+'" onClick="javascript:QuickCatalogSearch.close_window(\'catalog_list\')"></center></td></tr>'+ 
    819                                            '</table>'+ 
    820                                            '</div>'; 
    821  
    822                 var title = get_lang('Search in the Global Catalog'); 
    823                 var wHeight = el.offsetHeight - (is_ie ? 10 : 0) + "px"; 
    824                 var wWidth =  el.offsetWidth   + "px"; 
    825                 el.style.width = el.offsetWidth; 
    826                  
    827                 Element('search_for').onkeypress = function (e) { 
    828                         if ((is_ie && (window.event.keyCode == 13)) || (!is_ie && e.keyCode == 13)) { 
    829                                 QuickCatalogSearch.searchCatalogList(true); 
    830                         } 
    831                 }; 
    832  
    833                 win = new dJSWin({                       
    834                         id: 'win_'+el.id, 
    835                         content_id: el.id, 
    836                         width: wWidth, 
    837                         height: wHeight, 
    838                         title_color: '#3978d6', 
    839                         bg_color: '#eee', 
    840                         title: title,                                            
    841                         title_text_color: 'white', 
    842                         button_x_img: '../phpgwapi/images/winclose.gif', 
    843                         border: true}); 
    844                          
    845                 this.arrayWin[el.id] = win;              
    846                 win.draw(); 
    847                 win.open(); 
    848  
    849                 var handler_catalogs = function(data){ 
    850                         var user_catalog = get_lang("Global Catalog"); 
    851                         if(data.length > 1) { 
    852                                 Element('select_catalog').style.display = ''; 
    853                                 for(i = 0; i < data.length; i++) {               
    854                                         Element('select_catalog').options[i] = new Option(data[i],i); 
    855                                         if(user_catalog.toUpperCase() == data[i].toUpperCase()) 
    856                                                 Element('select_catalog').options[i].selected = true; 
    857                                 } 
    858                         } 
    859                 } 
    860                 cExecute ("$this.ldap_functions.get_catalogs", handler_catalogs);                
    861                  
    862                 this.update_organizations(); 
    863                 var handler_cc_contacts= function(data){ 
    864                         if(data && data.length > 0){ 
    865                                 var aux = data.split(","); 
    866                                 for(var i=0; i< aux.length; i++){ 
    867                                         QuickCatalogSearch.cc_contacts[QuickCatalogSearch.cc_contacts.length] = aux[i];                          
    868                                 } 
    869                         } 
    870                 } 
    871                 cExecute("$this.db_functions.get_cc_contacts",handler_cc_contacts); 
    872  
    873                 var handler_cc_groups = function(data){ 
    874                         if(data && data.length > 0){ 
    875                                 var aux = data.split(","); 
    876                                 for(var i=0; i < data.length; i++){ 
    877                                         QuickCatalogSearch.cc_groups[QuickCatalogSearch.cc_groups.length] = aux[i];                                                              
    878                                 }        
    879                         } 
    880                 } 
    881                 cExecute("$this.db_functions.get_cc_groups",handler_cc_groups); 
    882          
    883         } 
    884          
    885         emQuickCatalogSearch.prototype.select_div = function(element){ 
    886                 if(element == 'tab1'){ 
    887                    Element('tab1').style.display = ''; 
    888                    Element('tab2').style.display = 'none'; 
    889                    Element('td1').style.background = '#eee';     
    890                    Element('td2').style.background = '#cecece'; 
    891                 } 
    892                 if(element == 'tab2'){ 
    893                    Element('tab1').style.display = 'none'; 
    894                    Element('tab2').style.display = ''; 
    895                    Element('td1').style.background = '#cecece'; 
    896                    Element('td2').style.background = '#eee';                
    897  
    898                 } 
    899         } 
    900          
    901         emQuickCatalogSearch.prototype.load_catalog = function(){ 
    902          
    903                 var _this = this; 
    904                 var content = new Array; 
    905                 var select = Element('list_personal').style.display == 'none'? Element('list_groups'): Element('list_personal'); 
    906                  
    907                 if(Element('list_personal').style.display == 'none'){ 
    908                         content = _this.cc_groups; 
    909                 }else{ 
    910                         content = _this.cc_contacts; 
    911                 } 
    912                 if(select.options.length > 0){ 
    913                         for(var i=0; i < select.options.length; i++){ 
    914                                 select.options[i] = null; 
    915                                 i--; 
    916                         } 
    917                 } 
    918                 for(var i=0; i < content.length; i++){ 
    919                         if(content[i] != undefined){ 
    920                                 var aux = content[i].split(";"); 
    921                                 var opt = new Option(aux[0] + ' (' + aux[1] + ')','"' + aux[0] + '" ' + '<' + aux[1] + '>',false,false); 
    922                                 select[select.length] = opt; 
    923                         } 
    924                 } 
    925                 content.splice(0,(content.lenght)); 
    926         } 
    927  
    928         emQuickCatalogSearch.prototype.update_organizations = function(){ 
    929                 while(Element('select_organization').options.length > 0) { 
    930                         Element('select_organization').remove(0); 
    931                 } 
    932                 var handler_org = function(data){ 
    933                         Element('select_organization').options[0] = new Option(get_lang('all'),'all'); 
    934                         if (data != null){ 
    935                                 var user_organization = Element('user_organization').value; 
    936                                 for(x = 0; x < data.length; x++) { 
    937                                         Element('select_organization').options[x+1] = new Option(data[x].toUpperCase(),data[x]); 
    938                                         if(user_organization.toUpperCase() == data[x].toUpperCase()) 
    939                                                 Element('select_organization').options[x+1].selected = true; 
    940                                 } 
    941                         } 
    942                 }                
    943                 cExecute ("$this.ldap_functions.get_organizations&referral=false&catalog="+Element('select_catalog').value, handler_org);                
    944         } 
    945  
    946         emQuickCatalogSearch.prototype.changeOptions = function(type){   
    947  
    948                 switch(type){ 
    949                         case 'u': 
    950                                 Element('list_values').style.display = 'none'; 
    951                                 Element('user_values').style.display = ''; 
    952                                 break; 
    953                          
    954                         case 'l':                
    955                                 Element('user_values').style.display = 'none'; 
    956                                 Element('list_values').style.display = '';               
    957                                 break; 
    958  
    959                         case 'p': 
    960                                 Element('list_personal').style.display = ''; 
    961                                 Element('list_groups').style.display = 'none' 
    962                                 QuickCatalogSearch.load_catalog();                               
    963                                 break; 
    964                          
    965                         case 'g': 
    966                                 Element('list_personal').style.display = 'none'; 
    967                                 Element('list_groups').style.display = '' 
    968                                 QuickCatalogSearch.load_catalog(); 
    969                                 break; 
    970                 } 
    971  
    972         } 
    973  
    974         emQuickCatalogSearch.prototype.addContacts = function(field) { 
    975                  
    976                 var border_id   = Element('border_id').value; 
    977                 var select              = Element('user_values').style.display == 'none' ? Element('list_values') : Element('user_values'); 
    978                 if(field == "to1" || field == "cc1" || field == "cco1"){ 
    979                         field = field.substr(0,field.length - 1); 
    980                         var select = Element('list_personal').style.display == 'none' ? Element('list_groups') : Element('list_personal'); 
    981                 } 
    982                 var fieldOpener = Element(field+"_"+border_id); 
    983                 var not_selected = true; 
    984                  
    985                 for (i = 0 ; i < select.length ; i++) { 
    986                         if (select.options[i].selected && select.options[i].value != '-1') { 
    987                                 if(fieldOpener.value.length > 0 && (fieldOpener.value.lastIndexOf(',') != (fieldOpener.value.length - 1))){ 
    988                                         fieldOpener.value += ","; 
    989                                 } 
    990                                 fieldOpener.value += select.options[i].value + ","; 
    991                                 not_selected = false; 
    992                                 select.options[i].selected = false; 
    993                         } 
    994                 } 
    995                  
    996                 if(not_selected) 
    997                         return false; 
    998                          
    999                 if(field != 'to'){ 
    1000                         a_link = Element("a_"+field+"_link_"+border_id); 
    1001                         if(a_link) 
    1002                                 a_link.onclick(); 
    1003                 } 
    1004         } 
    1005          
    1006         emQuickCatalogSearch.prototype.searchCatalogList = function (itemSearch){ 
    1007  
    1008                 if(itemSearch && Element('search_for').value.length < preferences.search_characters_number){ 
    1009                         alert(get_lang('Your search argument must be longer than %1 characters.', preferences.search_characters_number)); 
    1010                         Element('search_for').focus(); 
    1011                         return false; 
    1012                 } 
    1013                 var organization = Element('select_organization').value;                 
    1014                 var search               = itemSearch ? Element('search_for').value : ''; 
    1015                 var catalog              = Element('select_catalog').value; 
    1016  
    1017                 var handler_searchResults = function(data){ 
    1018                         Element('msg_search').style.visibility = 'hidden'; 
    1019                         if(data.error){ 
    1020                                 alert(get_lang('More than %1 results. Please, try to refine your search.',data.maxResult)); 
    1021                                 return false; 
    1022                         }else if(data.users.length == 0 && data.groups.length == 0){ 
    1023                                 alert(get_lang('None result was found.')); 
    1024                         } 
    1025  
    1026                          
    1027                         var group = Element('list_span'); 
    1028                         var user  = Element('user_span');        
    1029                         if(is_ie){ 
    1030                                 group.innerHTML = ''; 
    1031                                 user.innerHTML = ''; 
    1032                         } 
    1033                         else { 
    1034                                 group = Element('list_values'); 
    1035                                 user  = Element('user_values');  
    1036                                 for(var i = 0;i < group.options.length; i++)                             
    1037                                         group.options[i--] = null; 
    1038                                 for(var i = 0;i < user.options.length; i++)                              
    1039                                         user.options[i--] = null; 
    1040                         } 
    1041  
    1042                         var arr         = new Array(data.maxResult); 
    1043  
    1044                         for(i = 0; data.groups && i < data.groups.length; i++) { 
    1045                                 // Maneiras diferentes de se montar uma tag OPTION, pois no IE o objeto Option é muito lento. 
    1046                                 if(is_ie) 
    1047                                         arr[i] = '<option value="'+'&quot;'+data.groups[i].name+'&quot; &lt;'+data.groups[i].email+'&gt;">'+data.groups[i].name+' ('+data.groups[i].email+')'+'</option>'; 
    1048                                 else 
    1049                                         group.options[i] = new Option(data.groups[i].name+' ('+data.groups[i].email+')','"'+data.groups[i].name+'" <'+data.groups[i].email+'>'); 
    1050                         } 
    1051          
    1052                          
    1053                         if(is_ie) 
    1054                                 group.innerHTML = '<select multiple style="display:none;width:580px" size="14" id="list_values">'+ arr.join() +'</select>'; 
    1055  
    1056                         arr = new Array(data.maxResult); 
    1057                          
    1058                         for(i = 0; data.users && i < data.users.length; i++) { 
    1059                         /*******************************************************************************************/ 
    1060                         /* O resultado pratico do bloco de codigo a seguir eh a exibicao dos valores em tela, 
    1061                         ja que vai verificar se o departamento e o email estao vazios ou nulos e a partir dai o 
    1062                         resultado apresentado em tela sera exibido de maneira mais apresentavel; 
    1063                         */ 
    1064                                 //verifica se departamento eh null ou nao; 
    1065                                 var department = data.users[i].department ? " - " + data.users[i].department : ""; 
    1066                                 //verifica se email eh null ou nao; 
    1067                                 var email = data.users[i].email ? data.users[i].email : ""; 
    1068  
    1069                                 // Maneiras diferentes de se montar uma tag OPTION, pois no IE o objeto Option é muito lento. 
    1070                                 if(is_ie) 
    1071                                         arr[i] = '<option value="'+'&quot;'+data.users[i].name+'&quot; &lt;'+email+'&gt;">'+data.users[i].name+' ('+email+')'+department+'</option>'; 
    1072                                 else { 
    1073                                         user.options[i] = new Option(data.users[i].name+' ('+email+')'+department,'"'+data.users[i].name+'" <'+email+'>'); // incluido data.users[i].department para exibir setor na opcao "Pesquisar" do email; 
    1074                                 } 
    1075                         } 
    1076          
    1077                         if(is_ie) 
    1078                                 user.innerHTML = '<select multiple style="width:580px" size="14" id="user_values">'+ arr.join() +'</select>'; 
    1079  
    1080                         // Display entries found. 
    1081                         var type = (data.groups.length > 0 && data.users.length == 0) ? 'l' : 'u'; 
    1082                         Element("type_"+type).checked = true; 
    1083                         QuickCatalogSearch.changeOptions(type); 
    1084                 } 
    1085  
    1086                 Element('msg_search').style.visibility = 'visible'; 
    1087                 cExecute ("$this.ldap_functions.catalogsearch&organization="+organization+"&search_for="+search+"&catalog="+catalog, handler_searchResults); 
     564                $("#dialog-modal button, input.button").button();                                
    1088565        } 
    1089566 
    1090567         
    1091 /* Build the Object */ 
     568        /* Build the Object */ 
    1092569        //QuickCatalogSearch; 
    1093570        QuickCatalogSearch = new emQuickCatalogSearch(); 
Note: See TracChangeset for help on using the changeset viewer.