source: trunk/contactcenter/js/cc.js @ 5236

Revision 5236, 94.7 KB checked in by gustavo, 12 years ago (diff)

Ticket #2365 - Campos desalinhados ao pesquisar por contatos do Ldap no ContactCenter?

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1  /******************************************************************************\
2  * eGroupWare - Contacts Center                                                                                                *
3  * http://www.egroupware.org                                                                                                   *
4  * Written by:                                                                                                                                 *
5  *  - Raphael Derosso Pereira <raphaelpereira@users.sourceforge.net>                   *
6  *  - Jonas Goes <jqhcb@users.sourceforge.net>                                                                 *
7  *  sponsored by Thyamad - http://www.thyamad.com                                                              *
8  * -------------------------------------------------------------------------   *
9  *  This program is free software; you can redistribute it and/or modify it    *
10  *  under the terms of the GNU General Public License as published by the              *
11  *  Free Software Foundation; either version 2 of the License, or (at your             *
12  *  option) any later version.                                                                                                 *
13  \******************************************************************************/
14
15/***********************************************\
16*                      TODO                     *
17\***********************************************/
18
19/*
20 * function setHeightSpace ()
21 *
22 */
23
24/***********************************************\
25*                   CONSTANTS                   *
26\***********************************************/
27
28var CC_STATUS_FULL_ADD = 2;
29var CC_STATUS_QUICK_ADD = 1;
30
31var CC_card_image_width = 245;
32var CC_card_image_height = 130;
33var CC_card_extra = 16;
34
35
36/***********************************************\
37*               GLOBALS VARIABLES               *
38\***********************************************/
39
40var owners = new Array();
41var flag_compartilhado = false;
42var qtd_compartilhado = 0;
43
44var CC_visual = 'table';
45/* Cards Variables */
46var CC_actual_letter = 'a';
47var CC_last_letter = 'a';
48var CC_actual_page = 1;
49var CC_npages = 0;
50var CC_max_cards = new Array();
51var CC_conn_count=0;
52
53var CC_old_icon_w = 0;
54var CC_old_icon_h = 0;
55
56/* Tabs Variables */
57var CC_last_tab = 0;
58
59/* Pseudo-Semafores */
60var CC_tree_available = false;
61var CC_full_add_const = false;
62var CC_full_add_photo = false;
63
64var CC_last_height = window.innerHeight;
65var CC_last_width = window.innerWidth;
66
67/* Contact Full Info */
68var CC_contact_full_info;
69var CC_br_index;
70
71/* Addresses Variables */
72var CC_addr_last_selected = 0;
73
74/* Connections Variables */
75var CC_conn_last_selected = 0;
76
77/* Grupos inicialmente selecionados */
78var CC_initial_selected_grps = new Array();
79
80/***********************************************\
81 *           FULL ADD/EDIT FUNCTIONS           *
82\***********************************************/
83
84function createPhotoFrame()
85{
86        photo_frame = document.createElement('iframe');
87        document.body.appendChild(photo_frame);
88
89        if (is_ie)
90        {
91                photo_form  = photo_frame.contentWindow.document.createElement('form');
92                photo_input = photo_frame.contentWindow.document.createElement('input');
93        }
94        else
95        {
96                 photo_form  = photo_frame.contentDocument.createElement('form');
97                 photo_input = photo_frame.contentDocument.createElement('input');
98        }
99
100        photo_frame.id = 'cc_photo_frame';
101        photo_frame.style.position = 'absolute';
102        //photo_frame.style.visibility = 'hidden';
103        photo_frame.style.top = '600px';
104        photo_frame.style.left = '0px';
105
106        photo_form.id = 'cc_photo_form';
107        photo_form.method = 'POST';
108        photo_form.enctype = 'multipart/form-data';
109
110        photo_input.id = 'cc_photo_input';
111        photo_input.type = 'file';
112
113        if (is_ie)
114        {
115                photo_frame.contentWindow.document.body.appendChild(photo_form);
116        }
117        else
118        {
119                photo_frame.contentDocument.body.appendChild(photo_form);
120        }
121        photo_form.appendChild(photo_input);
122
123}
124
125/********* Full Add Auxiliar Functions ****************/
126function selectOption (id, option)
127{
128        var obj = Element(id);
129        var max = obj.options.length;
130
131        if (option == undefined)
132        {
133                obj.selectedIndex = 0;
134        }
135        else
136        {
137                for (var i = 0; i < max; i++)
138                {
139                        if (obj.options[i].value == option)
140                        {
141                                obj.selectedIndex = i;
142                                break;
143                        }
144                }
145        }
146}
147
148function selectRadio (id, index)
149{
150        var obj = Element(id);
151        var max = obj.options.length;
152        for (var i = 0; i < max; i++)
153        {
154                i == index ? obj.options[i].checked = true : obj.options[i].checked = false;
155        }
156}
157
158function clearSelectBox(obj, startIndex)
159{
160        var nOptions = obj.options.length;
161
162        for (var i = nOptions - 1; i >= startIndex; i--)
163        {
164                obj.removeChild(obj.options[i]);
165        }
166}
167/********** Open/Close FullAdd *************/
168function openFullAdd(){
169        // Build the FullAdd Window.
170        if(!fullAddWin && !is_ie)
171                __f();
172
173        resetFullAdd();
174        populateFullAddConst();
175        fullAddWin.open();
176        tabs._showTab('cc_contact_tab_0');
177        Element("cc_conn_type_1").checked = false;
178        Element("cc_conn_type_2").checked = false;
179        Element("cc_conn_type_sel").disabled = true;
180        Element("cc_conn_type_sel").selectedIndex = 0;
181        Element("cc_contact_sharing").style.display = 'none';
182}
183
184function openFullAddShared(){
185        if (flag_compartilhado)
186        {
187                if(!fullAddWin && !is_ie)
188                        __f();
189
190                resetFullAdd();
191                populateFullAddConst();
192                fullAddWin.open();
193                tabs._showTab('cc_contact_tab_0');
194                Element("cc_conn_type_1").checked = false;
195                Element("cc_conn_type_2").checked = false;
196                Element("cc_conn_type_sel").disabled = true;
197                Element("cc_conn_type_sel").selectedIndex = 0;
198                Element("cc_contact_sharing").align = 'center';
199                Element("cc_contact_sharing").style.display = 'block';
200                Element("cc_contact_shared_types").disabled = true;
201                populateSharingSelect();
202        } else
203        {
204                if(qtd_compartilhado != 0)
205                {
206                        ccTree.select(0.2);
207                        ccTree.setCatalog(0.2);
208                        if(!fullAddWin && !is_ie)
209                                __f();
210                        resetFullAdd();
211                        populateFullAddConst();
212                        fullAddWin.open();
213                        tabs._showTab('cc_contact_tab_0');
214                        Element("cc_conn_type_1").checked = false;
215                        Element("cc_conn_type_2").checked = false;
216                        Element("cc_conn_type_sel").disabled = true;
217                        Element("cc_conn_type_sel").selectedIndex = 0;
218                        Element("cc_contact_sharing").aling = 'center';
219                        Element("cc_contact_sharing").style.display = 'block';
220                        Element("cc_contact_shared_types").disabled = true;
221                        populateSharingSelect();
222                } else
223                        showMessage(Element('cc_msg_err_shared').value);
224        }
225}
226
227function closeFullAdd(){
228        fullAddWin.close();
229}
230/******** Contact details ***********/
231function openContactDetails(id){
232        // Build the ContactDetails Window.
233        if((typeof(contactdetailsWin) == 'undefined') && !is_ie)
234                __cdWin();
235
236        contactdetailsWin.open();
237       
238        populateContactDetails(id);
239}
240
241function populateContactDetails(id)
242{
243        var handler = function(responseText)
244        {
245                var fieldsDiv = Element('id_cc_contact_details_fields');
246                var data = unserialize(responseText);
247                //alert(responseText);
248                fieldsDiv.innerHTML = "";
249                if (data && data.length > 0)
250                {
251                        //fieldsDiv.innerHTML = "";
252                        var table = document.createElement("table");
253                        table.border=0;
254                        //table.style.borderBottom = '1px solid #999';
255                        //table.cellSpacing = '0';
256                        table.width = '480px';
257                        var attr_name_size = '50%';
258                        var attr_value_size = '50%';
259                        for(i = 0; i < data.length; i++)
260                        {
261                                var row = table.insertRow(i);
262                                if ((i % 2) == 0)
263                                        row.setAttribute('class', 'row_off');
264                                else
265                                        row.setAttribute('class', 'row_on');
266                                //row.style.borderBottom = '1px solid #999';
267                                attr_name = row.insertCell(0);
268                                attr_value = row.insertCell(1);
269                                attr_name.style.width = attr_name_size;
270                                attr_value.style.width = attr_value_size;
271                                attr_name.innerHTML = data[i]['name'];
272                                if (data[i]['type'] == 'text')
273                                        attr_value.innerHTML = data[i]['value'];
274                                else
275                                {
276                                        var multivalue_div = document.createElement("div");
277                                        multivalue_div.style.overflow = 'auto';
278                                        multivalue_div.style.height = '100px';
279                                        multivalue_div.style.border = '1px solid #999';
280                                        //multivalue_div.style.backgroundColor = 'transparent';
281                                        for (j = 0; j < data[i]['value'].length; j++)
282                                        {
283                                                multivalue_div.appendChild(document.createTextNode(data[i]['value'][j]));
284                                                multivalue_div.appendChild(document.createElement("br"));
285                                        }
286                                        attr_value.appendChild(multivalue_div);
287                                }       
288                        }
289                        fieldsDiv.appendChild(table);
290                }
291                else
292                        fieldsDiv.innerHTML = Element('cc_contact_details_no_fields').value;
293        };
294        Connector.newRequest('populateContactDetails', '../index.php?menuaction=contactcenter.ui_data.data_manager&method=get_contact_details&id=' + id, 'GET', handler);
295}
296
297function closeContactDetails(){
298        contactdetailsWin.close();
299}
300/********** New Contact *************/
301function newContact(){
302        openFullAdd();
303}
304function newSharedContact(){
305        openFullAddShared();
306}
307/************ Edit Contact *************/
308function editContact (id){
309        openFullAdd();
310        populateFullEdit(id,'bo_people_catalog');
311}
312function editSharedContact (id){
313        openFullAdd();
314        populateFullEdit(id,'bo_shared_people_manager');
315}
316/************ Edit Group *************/
317function editGroup(id){
318        populateEditGroup(id);
319        ccAddGroup.window.open();
320}
321
322function editSharedGroup(id,shared){
323        populateEditSharedGroup(id, shared);   
324}
325
326/*
327        Updates all the constant fields in the
328        full add window, like Prefixes, Suffixes,
329        Countries and Types
330*/
331
332function populateSharingSelect()
333{
334        var handler = function(responseText)
335        {
336                var data = unserialize(responseText);
337                        var sharers = Element('cc_contact_shared_types');
338
339                if (typeof(data) != 'object')
340            {
341                showMessage(Element('cc_msg_err_contacting_server').value);
342                fullAddWin.close();
343                                return;
344            }else{
345                                sharers.disabled = false;
346                                j = 1;
347                                for (var i in data)
348                                {
349                                                sharers.options[j] = new Option(data[i]['cn'], i);
350                                                owners[j] = i;
351                                                j++;
352                                }
353                                return;
354                 }
355        };
356        Connector.newRequest('populateSharingSelect', '../index.php?menuaction=contactcenter.ui_data.data_manager&method=get_list_owners_perms_add', 'POST', handler);
357}
358
359function populateFullAddConst()
360{
361        CC_full_add_const = false;
362
363        setTimeout('populateFullAddConstAsync()', 10);
364}
365
366function populateFullAddConstAsync()
367{
368        var handler = function(responseText)
369        {
370                //Element('cc_debug').innerHTML = responseText;
371                var data = unserialize(responseText);
372                var i = 1;
373                var j;
374
375                if (typeof(data) != 'object')
376                {
377                        showMessage(Element('cc_msg_err_contacting_server').value);
378                        return;
379                }
380
381                /* Populate Prefixes */
382                for (j in data[0])
383                {
384                        Element('cc_pd_prefix').options[i] = new Option(data[0][j], j);
385                        i++;
386                }
387
388                /* Populate Suffixes */
389                i = 1;
390                for (j in data[1])
391                {
392                        Element('cc_pd_suffix').options[i] = new Option(data[1][j], j);
393                        i++;
394                }
395
396                /* Populate Addresses Types */
397                i = 1;
398                for (j in data[2])
399                {
400                        Element('cc_addr_types').options[i] = new Option(data[2][j], j);
401                        i++;
402                }
403
404                /* Populate Countries */
405                i = 1;
406                for (j in data[3])
407                {
408                        Element('cc_addr_countries').options[i] = new Option(data[3][j], j);
409
410                        if (j == 'BR' || j == 'br')
411                        {
412                                CC_br_index = i;
413                        }
414
415                        i++;
416                }
417
418                /* Populate Connection Types */
419                /*
420                 * Código não funcional com o expresso.
421                 */
422                /*i = 1;
423                for (j in data[4])
424                {
425                        Element('cc_conn_type').options[i] = new Option(data[4][j], j);
426                        i++;
427                }*/
428               
429                /* Populate Relations Types */
430                /*
431                 * Código conflitante com a modificação de seleção de grupos durante
432                 * a criação de um novo contato. Também foi verificado que este código não
433                 * é funcional.
434                 */
435                /*
436                i = 0;
437                for (j in data[5])
438                {
439                        Element('cc_rels_type').options[i] = new Option(data[5][j], j);
440                        i++;
441                }*/
442               
443                /* Populate available groups */
444                i = 0;
445                var grupos = data[5];
446                for (var grupo in grupos)
447                {
448                        Element('id_grps_available').options[i] = new Option(grupos[grupo]['title'], grupos[grupo]['id_group']);
449                        i++;
450                }
451
452                CC_full_add_const = true;
453
454        };
455
456        Connector.newRequest('populateFullAddConst', CC_url+'get_contact_full_add_const', 'GET', handler);
457}
458
459/*
460 * Função que faz a seleção do grupo.
461 * Autor: Luiz Carlos Viana Melo - Prognus
462 */
463function selectGroup()
464{
465        grps_avail = Element('id_grps_available');
466        grps_selec = Element('id_grps_selected');
467       
468        for (i = 0; i < grps_avail.length; i++)
469        {
470                if (grps_avail.options[i].selected) {
471                        isSelected = false;
472
473                        for(var j = 0;j < grps_selec.options.length; j++) {                                                                                                                                                     
474                                if(grps_selec.options[j].value === grps_avail.options[i].value){
475                                        isSelected = true;
476                                        break; 
477                                }
478                        }
479
480                        if(!isSelected){
481
482                                option = document.createElement('option');
483                                option.value = grps_avail.options[i].value;
484                                option.text = grps_avail.options[i].text;
485                                option.selected = false;
486                                grps_selec.options[grps_selec.options.length] = option;
487                                                                               
488                        }
489                                                                                       
490                }
491        }
492       
493        for (j =0; j < grps_avail.options.length; j++)
494                grps_avail.options[j].selected = false;
495}
496
497/*
498 * Função que remove um grupo selecionado.
499 * Autor: Luiz Carlos Viana Melo - Prognus
500 */
501function deselectGroup()
502{
503        grps_selec = Element('id_grps_selected');
504
505        for(var i = 0;i < grps_selec.options.length; i++)                               
506                if(grps_selec.options[i].selected)
507                        grps_selec.options[i--] = null;
508}
509
510function populateFullEdit (id,catalog)
511{
512        var handler = function(responseText)
513        {
514                //Element('cc_debug').innerHTML = responseText;
515                var data = unserialize(responseText);
516
517                if (typeof(data) != 'object' || data['result'] != 'ok')
518                {
519                        showMessage(Element('cc_msg_err_contacting_server').value);
520                        return;
521                }
522
523                resetFullAdd();
524
525                CC_contact_full_info = data;
526                Element('cc_full_add_contact_id').value = data['cc_full_add_contact_id'];
527                populatePersonalData(data['personal']);
528                populateContactGroups(data['groups']);
529                //populateRelations(data['relations']);
530        };
531        Connector.newRequest('populateFullEdit', '../index.php?menuaction=contactcenter.ui_data.data_manager&method=get_full_data&id=' + id + "&catalog="+catalog, 'GET', handler);
532}
533
534/*
535 * Função que preenche a lista de grupos a qual o contato pertence.
536 * Autor: Luiz Carlos Viana Melo - Prognus
537 */
538function populateContactGroups(groupsData)
539{
540        groups_selected = Element('id_grps_selected');
541        var i = 0;
542        CC_initial_selected_grps = new Array();
543        for (var group in groupsData)
544        {
545                var id_group = groupsData[group]['id_group'];
546                option = document.createElement('option');
547                option.value = id_group;
548                option.text = groupsData[group]['title'];
549                option.selected = false;
550                groups_selected.options[i++] = option;
551                CC_initial_selected_grps[id_group] = new Array();
552                CC_initial_selected_grps[id_group]['id_group'] = id_group;
553                CC_initial_selected_grps[id_group]['title'] = groupsData[group]['title'];
554                CC_initial_selected_grps[id_group]['short_name'] = groupsData[group]['short_name'];
555        }
556}
557
558function populateEditGroup (id)
559{
560        populateEditSharedGroup(id,false);
561}
562
563function populateEditSharedGroup(id,shared) {
564        var handler = function(responseText)
565        {                       
566                var data = unserialize(responseText);
567
568                Element('group_id').value = data['id_group'];                                                           
569                var options_contact_list = Element('span_contact_list');
570                var select_contact_list = '<select id="contact_list" multiple name="contact_list[]" style="width:280px" size="10">';
571                select_contact_list += data['contact_list'] + "</select>";
572                options_contact_list.innerHTML = select_contact_list;
573               
574                if(data['id_group']) {
575                        Element('title').value =  data['title'];       
576                        if(data['contact_in_list']) {                                   
577                                for(i = 0; i < data['contact_in_list'].length; i++) {                           
578                                        option = document.createElement('option');
579                                        option.value = data['contact_in_list'][i]['id_connection'];
580                                        option.text = data['contact_in_list'][i]['names_ordered']+' ('+data['contact_in_list'][i]['connection_value']+')';                             
581                                        Element('contact_in_list').options[Element('contact_in_list').options.length] = option;
582                                }
583                        }               
584                       
585                        Element('title').value =  data['title'];
586                }
587                               
588                if (typeof(data) != 'object' || data['result'] != 'ok')
589                {
590                        showMessage(Element('cc_msg_err_contacting_server').value);
591                        return;
592                }
593                ccAddGroup.setSelectedSourceLevel(ccTree.actualLevel);
594                ccAddGroup.openEditWindow();
595        };
596               
597        id = typeof(id) == 'undefined' ? id = 0 :  id;
598       
599        ccAddGroup.clear(true);                 
600        if(!shared)
601                Connector.newRequest('populateEditGroup', '../index.php?menuaction=contactcenter.ui_data.data_manager&method=get_group&id='+id, 'GET', handler);
602        else
603                Connector.newRequest('populateEditGroup', '../index.php?menuaction=contactcenter.ui_data.data_manager&method=get_group&id='+id+'&shared_from='+shared, 'GET', handler);
604}
605
606
607
608function resetFullAdd()
609{
610        /* Groups */
611        gprs_selected = Element('id_grps_selected');
612        for (j =0; j < gprs_selected.options.length; j++) {
613                gprs_selected.options[j].selected = false;
614                gprs_selected.options[j--] = null;
615        }
616        /* Clear information container */
617        CC_contact_full_info = new Array();
618
619        /* Clear Fields */
620        Element('cc_full_add_form_personal').reset();
621        Element('cc_full_add_form_addrs').reset();
622        if(Element('cc_contact_type').value=='advanced')
623                Element('cc_full_add_form_corporative').reset();
624        /* Personal Data */
625        Element('cc_full_add_contact_id').value = null;
626        Element('cc_pd_photo').src = 'templates/default/images/photo.png';
627
628        /* Addresses */
629        resetAddressFields();
630
631        /* Connections */
632        CC_conn_last_selected = '_NONE_';
633        Element("cc_phone_default").options.selectedIndex = '-1';
634        Element("cc_email_default").options.selectedIndex = '-1';
635        Element("div_cc_conn_is_default").style.display = 'none';
636        clearConn();
637}
638
639function postFullAdd()
640{
641        if (!checkFullAdd())
642        {
643                return false;
644        }
645
646        /* First thing: Send Photo */
647        if (Element('cc_pd_select_photo').value != '' && !is_ie)
648        {
649                var nodes;
650                var form, frame, old_frame;
651
652                CC_full_add_photo = false;
653
654                old_frame = Element('cc_photo_frame');
655                if (!old_frame)
656                {
657                        frame = document.createElement('iframe');
658                }
659                else
660                {
661                        frame = old_frame;
662                }
663
664                frame.id = 'cc_photo_frame';
665                frame.style.visibility = 'hidden';
666                frame.style.top = '0px';
667                frame.style.left = '0';
668                frame.style.position = 'absolute';
669                document.body.appendChild(frame);
670
671                form = frame.contentDocument.createElement('form');
672
673                var id_contact = Element('cc_full_add_contact_id').value;
674                form.id = 'cc_form_photo';
675                form.method = 'POST';
676                form.enctype = 'multipart/form-data';
677                form.action = 'http://'+ document.domain + Element('cc_root_dir').value+'../index.php?menuaction=contactcenter.ui_data.data_manager&method=post_photo&id='+(id_contact != '' && id_contact != 'null' ? id_contact : '');
678
679                var input_clone = Element('cc_pd_select_photo').cloneNode(false);
680                form.appendChild(input_clone);
681
682                frame.contentDocument.body.appendChild(form);
683                form.submit();
684
685                CC_full_add_photo = true;
686        }
687        else if (Element('cc_pd_select_photo_t').value != '' && is_ie)
688        {
689                CC_full_add_photo = false;
690
691                var frame = Element('cc_photo_frame');
692                var form = frame.contentWindow.document.all['cc_photo_form'];
693                var id_contact = Element('cc_full_add_contact_id').value;
694                form.action = 'http://'+ document.domain + Element('cc_root_dir').value+'../index.php?menuaction=contactcenter.ui_data.data_manager&method=post_photo&id='+(id_contact != '' && id_contact != 'null' ? id_contact : '');
695
696                form.submit();
697
698                setTimeout('Element(\'cc_photo_frame\').src = \'cc_photo_frame.html\'', 1000);
699                CC_full_add_photo = true;
700        }
701        if (Element('cc_contact_sharing').style.display == 'none')
702        setTimeout('postFullAddInfo()', 100);
703        else
704                setTimeout('postFullAddInfoShared()', 100);
705
706        updateCards();
707}
708
709function postFullAddInfo()
710{
711        var handler = function (responseText)
712        {
713                var data = unserialize(responseText);
714
715                if (typeof(data) != 'object')
716                {
717                        showMessage(Element('cc_msg_err_contacting_server').value);
718                        return;
719                }
720
721                if (data['status'] != 'ok')
722                {
723                        showMessage(data['msg']);
724                        return;
725                }
726
727                fullAddWin.close();
728                updateCards();
729        };
730
731        Connector.newRequest('postFullAddInfo', CC_url+'post_full_add', 'POST', handler, getFullAddData());
732}
733
734function postFullAddInfoShared()
735{
736        var handler = function (responseText)
737        {
738                var data = unserialize(responseText);
739                if (typeof(data) != 'object')
740                {
741                        showMessage(Element('cc_msg_err_contacting_server').value);
742                        return;
743                }
744
745                if (data['status'] != 'ok')
746                {
747                        showMessage(data['msg']);
748                        return;
749                }
750
751                fullAddWin.close();
752                updateCards();
753        };
754        Connector.newRequest('postFullAddInfoShared', CC_url+'post_full_add_shared', 'POST', handler, getFullAddData());
755}
756
757function getFullAddData()
758{
759        var data = new Array();
760        var empty = true;
761        var replacer = '__##AND##__';
762
763        data['commercialAnd'] = replacer;
764
765        if (Element('cc_full_add_contact_id').value != '' && Element('cc_full_add_contact_id').value != 'null')
766        {
767                data['id_contact'] = replaceComAnd(Element('cc_full_add_contact_id').value, replacer);
768                data.length++;
769        }
770
771        /* Owner do contato (Para o caso de adicao de contato compartilhado) */
772        if (Element('cc_contact_sharing').style.display == 'block')
773        {
774                var index = Element('cc_contact_shared_types').selectedIndex;
775                data['owner'] = replaceComAnd(owners[index], replacer);
776                data.length++;
777        }
778
779        /* Status: Full Added */
780        data['id_status'] = CC_STATUS_FULL_ADD;
781
782        /* Personal Data */
783        data['alias']         = replaceComAnd(Element('cc_pd_alias').value, replacer);
784        data['id_prefix']     = replaceComAnd(Element('cc_pd_prefix').value, replacer);
785        data['given_names']   = replaceComAnd(Element('cc_pd_given_names').value, replacer);
786        data['family_names']  = replaceComAnd(Element('cc_pd_family_names').value, replacer);
787        data['names_ordered'] = replaceComAnd(data['given_names']+" "+data['family_names'], replacer);
788        data['id_suffix']     = replaceComAnd(Element('cc_pd_suffix').value, replacer);;
789        data['birthdate_0']   = replaceComAnd(Element('cc_pd_birthdate_0').value, replacer);
790        data['birthdate_1']   = replaceComAnd(Element('cc_pd_birthdate_1').value, replacer);
791        data['birthdate_2']   = replaceComAnd(Element('cc_pd_birthdate_2').value, replacer);
792//      data['sex']           = Element('cc_pd_sex').value == 1 ? 'M' : Element('cc_pd_sex').value == 2 ? 'F' : null;
793        data['pgp_key']       = replaceComAnd(Element('cc_pd_gpg_finger_print').value, replacer);
794        data['notes']         = replaceComAnd(Element('cc_pd_notes').value, replacer);
795
796        data.length += 14;
797        //corporative
798
799        if (document.getElementById('cc_contact_type').value == 'advanced') {
800                data['corporate_name'] = replaceComAnd(document.getElementById('cc_name_corporate').value, replacer);
801                data['job_title'] = replaceComAnd(document.getElementById('cc_job_title').value, replacer);
802                data['department'] = replaceComAnd(document.getElementById('cc_department').value, replacer);
803                data['web_page'] = replaceComAnd(document.getElementById('cc_web_page').value, replacer);
804                data.length += 18;
805        }
806
807        /* Addresses */
808        saveAddressFields();
809        data['addresses'] = CC_contact_full_info['addresses'];
810
811        /* Connection */
812        saveConnFields();
813
814        if (CC_contact_full_info['connections'])
815        {
816                var connNumber = 0;
817                for (var type in CC_contact_full_info['connections'])
818                {
819                        if (type == 'length')
820                        {
821                                continue;
822                        }
823
824                        if (typeof(data['connections']) != 'object')
825                        {
826                                data['connections'] = new Array();
827                        }
828
829                        for (var i in CC_contact_full_info['connections'][type])
830                        {
831                                if (i == 'length')
832                                {
833                                        continue;
834                                }
835
836                                if (typeof(data['connections']['connection'+connNumber]) != 'object')
837                                {
838                                        data['connections']['connection'+connNumber] = new Array(5);
839                                }
840
841                                data['connections']['connection'+connNumber]['id_connection'] = CC_contact_full_info['connections'][type][i]['id'];
842                                data['connections']['connection'+connNumber]['id_typeof_connection'] = type;
843                                data['connections']['connection'+connNumber]['connection_name'] = CC_contact_full_info['connections'][type][i]['name'];
844                                data['connections']['connection'+connNumber]['connection_value'] = CC_contact_full_info['connections'][type][i]['value'];
845                                if(Element("cc_"+(type == 1 ? 'email' : 'phone')+"_default").value) {
846                                        if(Element("cc_"+(type == 1 ? 'email' : 'phone')+"_default").value == CC_contact_full_info['connections'][type][i]['name']){
847                                                data['connections']['connection'+connNumber]['connection_is_default']  = 'TRUE';
848                                        }
849                                        else
850                                                data['connections']['connection'+connNumber]['connection_is_default']  = 'FALSE';
851                                }
852
853//                              data['connections']['connection'+connNumber].length = 5;
854
855                                empty = false;
856                                connNumber++;
857                                data['connections'].length++;
858                        }
859
860                }
861
862                if (!empty)
863                {
864                        data.length++;
865                        empty = true;
866                }
867        }
868
869        if (CC_contact_full_info['removed_conns'])
870        {
871                empty = false;
872
873                if (typeof(data['connections']) != 'object')
874                {
875                        data['connections'] = new Array();
876                        data.length++;
877                }
878
879                data['connections']['removed_conns'] = CC_contact_full_info['removed_conns'];
880                data['connections'].length++;
881        }
882
883        data['groups'] = getAddedRemovedGroups();
884       
885        var serial = serialize(data);
886        return 'data=' + escape(serialize(data));
887}
888
889/*
890 * Função que retorna os grupos que foram anteriormente selecionados, adicionados ou removidos pelo
891 * usuário. O formato retornado é um array contendo:
892 * ['previous_selected'] {
893 *      [id_group] {
894 *              'id_group'              => o ID do grupo
895 *              'title'                 => o título do grupo
896 *      }
897 * ['added'] {
898 *      [id_group] {
899 *              'id_group'              => o ID do grupo
900 *              'title'                 => o título do grupo
901 *      }
902 * },
903 * ['removed'] {
904 *      [id_group] {
905 *              'id_group'              => o ID do grupo
906 *              'title'                 => o título do grupo
907 *      }
908 * }
909 * Autor: Luiz Carlos Viana Melo - Prognus
910 */
911function getAddedRemovedGroups()
912{
913        var selected_groups = getSelectedGroups();
914        var added_groups = diffContactIDArray(selected_groups, CC_initial_selected_grps);
915        var removed_groups = diffContactIDArray(CC_initial_selected_grps, selected_groups);
916        var groups = new Array();
917        groups['previous_selected'] = CC_initial_selected_grps;
918        groups['added'] = added_groups;
919        groups['removed'] = removed_groups;
920        return groups;
921}
922
923/*
924 * Função que retorna os grupos que foram selecionados pelo usuário. O formato retornado é:
925 * [id_group] {
926 *      'id_group'              => o ID do grupo
927 *      'title'                 => o título do grupo
928 * }
929 * Autor: Luiz Carlos Viana Melo - Prognus
930 */
931function getSelectedGroups()
932{
933        var gprs_selected = Element('id_grps_selected');
934        var data = new Array();
935        for(i = 0; i < gprs_selected.options.length; i++)
936        {
937                var id_group = gprs_selected.options[i].value;
938                data[id_group] = new Array();
939                data[id_group]['id_group'] = id_group;
940                data[id_group]['title'] = gprs_selected.options[i].text;
941        }
942        return data;
943}
944
945/*
946 * Função que retorna a diferença entre 2 arrays com ID dos contatos.
947 * Autor: Luiz Carlos Viana Melo - Prognus
948 */
949function diffContactIDArray(array1, array2)
950{
951        var diff = new Array();
952        for (var group in array1)
953        {
954                if (!array2[group])
955                        diff.push(array1[group]);
956        }
957        return diff;
958}
959
960function checkFullAdd()
961{
962
963        /* Checa se o listbox esta desativado ou é nulo, ou seja, não existe catálogos compartilhados com o user atual */
964
965        if (!(Element('cc_contact_sharing').style.display == 'none' ))
966        {
967                if (Element('cc_contact_shared_types').disabled == true)
968                {
969                        showMessage('Nenhum catálogo compartilhado existente');
970                        return false;
971                }
972                if (Element('cc_contact_shared_types').selectedIndex == 0)
973                {
974                        showMessage('Nenhum catálogo selecionado');
975                        return false;
976                }
977        }
978
979        /* Check Personal Data */
980
981        if (Element('cc_pd_given_names').value == '')
982        {
983                showMessage(Element('cc_msg_err_empty_field').value + " => " + Element('cc_pd_given_names').name);
984                return false;
985        }
986
987        /* Check Addresses */
988
989        /* Check Connections */
990
991        saveConnFields();
992
993        var comp = /^[a-zA-Z\d(-)\.@_ -]{0,200}$/;
994    haveConnections = false;
995    if (CC_contact_full_info['connections']){       
996        for (var type in CC_contact_full_info['connections']){
997            haveConnections = true;
998                        var reEmail = /^[a-zA-Z0-9][_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]{1,})*$/;
999            for (var i in CC_contact_full_info['connections'][type]){
1000                                if(type == 1){
1001                                        if(!reEmail.test(CC_contact_full_info['connections'][type][i]['value'])){
1002                                                showMessage('Endereço para conexão de ' + CC_contact_full_info['connections'][type][i]['name'] + ', não é válido');
1003                                                return false;
1004                                        }
1005                                }
1006                                else{
1007                if((CC_contact_full_info['connections'][type][i]['value'].length < 4) ||
1008                    (!comp.test(CC_contact_full_info['connections'][type][i]['value']))){
1009                    showMessage('Endereço para conexão de ' + CC_contact_full_info['connections'][type][i]['name'] + ', não é válido');
1010                    return false;
1011                }
1012            }
1013            }
1014            var _options_default = Element("cc_"+(type == 1 ? 'email' : 'phone')+"_default");
1015            if(_options_default.value == '-1') {
1016                alert("É necessário escolher um "+ (type == 1 ? 'E-mail' : 'Telefone')+" como padrão!");
1017                return false;
1018            }
1019        }
1020    }
1021
1022    /* Check Relations */
1023
1024    return true;
1025
1026}
1027
1028/********* Personal Data Functions *********/
1029/*
1030 * data[0] => cc_pd_select_photo
1031 * data[1] => cc_pd_alias
1032 * data[2] => cc_pd_given_names
1033 * data[3] => cc_pd_family_names
1034 * data[4] => cc_pd_full_name
1035 * data[5] => cc_pd_suffix
1036 * data[6] => cc_pd_birthdate
1037 * data[7] => cc_pd_sex SELECT
1038 * data[8] => cc_pd_prefix
1039 * data[9] => cc_pd_gpg_finger_print
1040 * data[10] => cc_pd_notes
1041 */
1042
1043function populatePersonalData (data)
1044{
1045        for (i in data)
1046        {
1047                switch(i)
1048                {
1049                        case 'cc_pd_suffix':
1050                        case 'cc_pd_sex':
1051                        case 'cc_pd_prefix':
1052                                selectOption(i, data[i]);
1053                                break;
1054
1055                        case 'cc_pd_photo':
1056                                if (data[i])
1057                                {
1058                                        //Codigo para exibicao da imagem do contato no IE
1059                                        //Douglas Lopes Gomes - Prognus Software Livre
1060                                        if (Element(i)[1] && Element(i)[1].src){ //Se o navegador éo IE
1061                                                Element(i)[1].src = data[i] + '&'+ Math.random();
1062                                        } else { //Se o navegador não é o IE
1063                                        Element(i).src =  data[i] + '&'+ Math.random();
1064                                        }
1065                                }
1066                                break;
1067
1068                        default:
1069                                Element(i).value = data[i] == undefined ? '' : unescape(data[i]);
1070                }
1071        }
1072
1073        return;
1074}
1075
1076/********* End Personal Data Functions *********/
1077
1078
1079/********* Addresses Functions *********/
1080function resetAddressFields()
1081{
1082        Element('cc_addr_types').selectedIndex = 0;
1083
1084        Element('cc_addr_countries').selectedIndex = 0;
1085        Element('cc_addr_countries').disabled = true;
1086
1087        Element('cc_addr_states').selectedIndex = 0;
1088        Element('cc_addr_states').disabled = true;
1089        Element('cc_addr_states_new').disabled = true;
1090        Element('cc_addr_states_new').readonly = true;
1091        Element('cc_addr_states_new').value = '';
1092
1093        Element('cc_addr_cities').selectedIndex = 0;
1094        Element('cc_addr_cities').disabled = true;
1095        Element('cc_addr_cities_new').disabled = true;
1096        Element('cc_addr_cities_new').readonly = true;
1097        Element('cc_addr_cities_new').value = '';
1098
1099        Element('cc_addr_id').value = '';
1100
1101        resetAddrFillingFields();
1102}
1103
1104function resetAddrFillingFields()
1105{
1106        Element('cc_addr_1').value = '';
1107        Element('cc_addr_2').value = '';
1108        Element('cc_addr_other').value = '';
1109        Element('cc_addr_complement').value = '';
1110        Element('cc_addr_postal_code').value = '';
1111        Element('cc_addr_po_box').value = '';
1112        Element('cc_addr_is_default').checked = false;
1113}
1114
1115function disableAddrFillingFields()
1116{
1117        Element('cc_addr_1').readonly = true;
1118        Element('cc_addr_1').disabled = true;
1119        Element('cc_addr_2').readonly = true;
1120        Element('cc_addr_2').disabled = true;
1121        Element('cc_addr_other').readonly = true;
1122        Element('cc_addr_other').disabled = true;
1123        Element('cc_addr_complement').readonly = true;
1124        Element('cc_addr_complement').disabled = true;
1125        Element('cc_addr_postal_code').readonly = true;
1126        Element('cc_addr_postal_code').disabled = true;
1127        Element('cc_addr_po_box').readonly = true;
1128        Element('cc_addr_po_box').disabled = true;
1129        Element('cc_addr_is_default').readonly = true;
1130        Element('cc_addr_is_default').disabled = true;
1131}
1132
1133function updateAddressFields()
1134{
1135        var type = Element('cc_addr_types');
1136        var oldSelected = type.value;
1137
1138        saveAddressFields();
1139
1140        if (oldSelected == '_NONE_')
1141        {
1142                resetAddressFields();
1143                return true;
1144        }
1145
1146        CC_addr_last_selected = type.selectedIndex;
1147
1148        Element('cc_addr_countries').disabled = false;
1149
1150        var data = CC_contact_full_info['addresses'];
1151        var addrIndex  = 'address'+Element('cc_addr_types').value;
1152
1153        if (typeof(data) != 'object' || typeof(data[addrIndex]) != 'object')
1154        {
1155                resetAddressFields();
1156                Element('cc_addr_countries').disabled = false;
1157                Element('cc_addr_countries').selectedIndex = CC_br_index;
1158                type.value = oldSelected;
1159                updateAddrStates();
1160                return true;
1161        }
1162
1163        var addrTypeID = Element('cc_addr_types').value;
1164
1165        data = CC_contact_full_info['addresses'][addrIndex];
1166
1167        Element('cc_addr_id').value                              = data['id_address']           ? data['id_address']                    : '';
1168        Element('cc_addr_1').value                              = data['address1']                      ? data['address1']                              : '';
1169        Element('cc_addr_2').value                              = data['address2']                      ? data['address2']                              : '';
1170        Element('cc_addr_complement').value   = data['complement']              ? data['complement']            : '';
1171        Element('cc_addr_other').value                          = data['address_other'] ? data['address_other'] : '';
1172        Element('cc_addr_postal_code').value    = data['postal_code']           ? data['postal_code']           : '';
1173        Element('cc_addr_po_box').value                 = data['po_box']                                ? data['po_box']                : '';
1174        Element('cc_addr_is_default').checked   = data['address_is_default'] == '1' ? true: false;
1175
1176        Element('cc_addr_countries').value    = data['id_country'];
1177        updateAddrStates();
1178}
1179
1180function updateAddrStates()
1181{
1182        var states = Element('cc_addr_states');
1183        if (Element('cc_addr_countries').value == '_NONE_')
1184        {
1185                states.disabled = true;
1186                states.selectedIndex = 0;
1187                clearSelectBox(states, 4);
1188                updateAddrCities();
1189                return;
1190        }
1191
1192        updateAddrFillingFields();
1193        populateStates();
1194}
1195
1196function populateStates()
1197{
1198        var states = Element('cc_addr_states');
1199        var cities = Element('cc_addr_cities');
1200        var handler = function (responseText)
1201        {
1202                var data = unserialize(responseText);
1203
1204                clearSelectBox(states, 1);
1205
1206                if (typeof(data) != 'object')
1207                {
1208                        showMessage(Element('cc_msg_err_contacting_server').value);
1209
1210                        return;
1211                }
1212
1213                if (data['status'] == 'empty')
1214                {
1215                        states.disabled = true;
1216                        cities.disabled = true;
1217                        states.selectedIndex = 0;
1218                        cities.selectedIndex = 0;
1219                        return;
1220                }
1221                else if (data['status'] != 'ok')
1222                {
1223                        showMessage(data['msg']);
1224                        states.disabled = true;
1225                        states.selectedIndex = 0;
1226                        updateAddrCities();
1227                        return;
1228                }
1229                states.disabled = false;
1230                var i = 1;
1231                for (var j in data['data'])
1232                {
1233                        states.options[i] = new Option(data['data'][j], j);
1234                        i++;
1235                }
1236
1237                states.disabled = false;
1238                states.selectedIndex = 0;
1239
1240                data = CC_contact_full_info['addresses'];
1241                var addrIndex = 'address'+Element('cc_addr_types').value;
1242                if (data && data[addrIndex])
1243                {
1244                        states.value = data[addrIndex]['id_state'];
1245                        if (states.value == '_NEW_')
1246                        {
1247                                if (CC_contact_full_info['addresses']['new_states'][addrIndex])
1248                                {
1249                                        Element('cc_addr_states_new').value = CC_contact_full_info['addresses']['new_states'][addrIndex];
1250                                }
1251                                updateAddrNewStateOnMouseOut();
1252                        }
1253                        updateAddrCities();
1254                }
1255        };
1256
1257        Connector.newRequest('populateStates', '../index.php?menuaction=contactcenter.ui_data.data_manager&method=get_states&country='+Element('cc_addr_countries').value, 'GET', handler);
1258}
1259
1260function updateAddrCities()
1261{
1262        var states = Element('cc_addr_states');
1263        var cities = Element('cc_addr_cities');
1264        var newState = Element('cc_addr_states_new');
1265        var requestStr;
1266
1267        switch (states.value)
1268        {
1269                case '_NONE_':
1270                        newState.readonly = true;
1271                        newState.disabled = true;
1272                        newState.value = '';
1273
1274                        cities.disabled = true;
1275                        cities.selectedIndex = 0;
1276                        updateAddrFillingFields();
1277                        return;
1278
1279                case '_NEW_':
1280
1281                        newState.readonly = false;
1282                        newState.disabled = false;
1283                        updateAddrNewStateOnMouseOut();
1284
1285                        cities.disabled = false;
1286                        clearSelectBox(cities, 3);
1287                        cities.selectedIndex = 1;
1288                        updateAddrFillingFields();
1289                        return;
1290
1291                case '_SEP_': return;
1292
1293                case '_NOSTATE_':
1294                        clearSelectBox(cities, 3);
1295
1296                        cities.disabled = false;
1297                        cities.selectedIndex = 0;
1298
1299                        requestStr = 'country='+Element('cc_addr_countries').value;
1300                        break;
1301
1302                default:
1303                        requestStr = 'country='+Element('cc_addr_countries').value+'&state='+states.value;
1304        }
1305
1306        newState.readonly = true;
1307        newState.disabled = true;
1308        newState.value = '';
1309
1310        populateCities(requestStr);
1311}
1312
1313function populateCities(requestStr)
1314{
1315        var cities = Element('cc_addr_cities');
1316
1317        var handler = function (responseText)
1318        {
1319                var data = unserialize(responseText);
1320
1321                clearSelectBox(cities, 1);
1322
1323                if (typeof(data) != 'object')
1324                {
1325                        showMessage(Element('cc_msg_err_contacting_server').value);
1326
1327                        return;
1328                }
1329
1330                if (data['status'] == 'empty')
1331                {
1332                        cities.disabled = true;
1333                        cities.selectedIndex = 0;
1334                        return;
1335                }
1336                else if (data['status'] != 'ok')
1337                {
1338                        showMessage(data['msg']);
1339                        cities.disabled = true;
1340                        cities.selectedIndex = 0;
1341                        updateAddrFillingFields();
1342                        return;
1343                }
1344                cities.disabled = false;
1345                var i = 1;
1346                for (var j in data['data'])
1347                {
1348                        cities.options[i] = new Option(data['data'][j], j);
1349                        i++;
1350                }
1351
1352                cities.disabled = false;
1353                cities.selectedIndex = 0;
1354
1355                data = CC_contact_full_info['addresses'];
1356                var addrIndex = 'address'+Element('cc_addr_types').value;
1357                if (data && data[addrIndex])
1358                {
1359                        cities.value = data[addrIndex]['id_city'];
1360
1361                        if (cities.value == '_NEW_')
1362                        {
1363                                if (CC_contact_full_info['addresses']['new_cities'][addrIndex])
1364                                {
1365                                        Element('cc_addr_cities_new').value = CC_contact_full_info['addresses']['new_cities'][addrIndex];
1366                                }
1367                                updateAddrNewCityOnMouseOut();
1368                        }
1369                }
1370        };
1371
1372        Connector.newRequest('populateCities', '../index.php?menuaction=contactcenter.ui_data.data_manager&method=get_cities&'+requestStr, 'GET', handler);
1373}
1374
1375function updateAddrNewStateOnMouseOver ()
1376{
1377        if (Element('cc_addr_states_new').value == Element('cc_msg_type_state').value && Element('cc_addr_states').selectedIndex == 1)
1378        {
1379                Element('cc_addr_states_new').value = '';
1380        }
1381}
1382
1383function updateAddrNewStateOnMouseOut ()
1384{
1385        if (Element('cc_addr_states_new').value.length == 0 && Element('cc_addr_states').selectedIndex == 1)
1386        {
1387                Element('cc_addr_states_new').value = Element('cc_msg_type_state').value;
1388        }
1389}
1390
1391function updateAddrFillingFields()
1392{
1393        var countries = Element('cc_addr_countries');
1394        var cities = Element('cc_addr_cities');
1395        var newCity = Element('cc_addr_cities_new');
1396
1397        if (countries.value == '_NONE_')
1398        {
1399                newCity.readonly = true;
1400                newCity.disabled = true;
1401                newCity.value = '';
1402                disableAddrFillingFields();
1403                return;
1404        }
1405
1406        Element('cc_addr_1').readonly = false;
1407        Element('cc_addr_1').disabled = false;
1408
1409        Element('cc_addr_2').readonly = false;
1410        Element('cc_addr_2').disabled = false;
1411
1412        Element('cc_addr_other').readonly = false;
1413        Element('cc_addr_other').disabled = false;
1414
1415        Element('cc_addr_complement').readonly = false;
1416        Element('cc_addr_complement').disabled = false;
1417
1418        Element('cc_addr_postal_code').readonly = false;
1419        Element('cc_addr_postal_code').disabled = false;
1420
1421        Element('cc_addr_po_box').readonly = false;
1422        Element('cc_addr_po_box').disabled = false;
1423
1424        Element('cc_addr_is_default').readonly = false;
1425        Element('cc_addr_is_default').disabled = false;
1426
1427        switch (cities.value)
1428        {
1429                case '_NONE_':
1430                        newCity.readonly = true;
1431                        newCity.disabled = true;
1432                        newCity.value = '';
1433
1434                        //resetAddrFillingFields();
1435
1436                        return;
1437
1438                case '_NEW_':
1439
1440                        newCity.readonly = false;
1441                        newCity.disabled = false;
1442                        updateAddrNewCityOnMouseOut();
1443
1444                        break;
1445
1446                case '_SEP_': return;
1447
1448                default:
1449                        newCity.readonly = true;
1450                        newCity.disabled = true;
1451                        newCity.value = '';
1452        }
1453}
1454
1455function updateAddrNewCityOnMouseOver ()
1456{
1457        if (Element('cc_addr_cities_new').value == Element('cc_msg_type_city').value && Element('cc_addr_cities').selectedIndex == 1)
1458        {
1459                Element('cc_addr_cities_new').value = '';
1460        }
1461}
1462
1463function updateAddrNewCityOnMouseOut ()
1464{
1465        if (Element('cc_addr_cities_new').value.length == 0 && Element('cc_addr_cities').selectedIndex == 1)
1466        {
1467                Element('cc_addr_cities_new').value = Element('cc_msg_type_city').value;
1468        }
1469}
1470
1471function saveAddressFields ()
1472{
1473        var lastIndex = CC_addr_last_selected;
1474
1475        if (lastIndex == 0)
1476        {
1477                return true;
1478        }
1479
1480        var addrFields = new Array('cc_addr_1',
1481                                   'cc_addr_2',
1482                                                           'cc_addr_complement',
1483                                                           'cc_addr_other',
1484                                                           'cc_addr_postal_code',
1485                                                           'cc_addr_po_box',
1486                                                           'cc_addr_countries',
1487                                                           'cc_addr_states',
1488                                                           'cc_addr_cities');
1489
1490        var empty = true;
1491
1492        for (var i = 0; i < 8; i++)
1493        {
1494                var field = Element(addrFields[i]);
1495                if (field.value && field.value != '_NONE_' && field.value != '_SEP_')
1496                {
1497                        empty = false;
1498                }
1499        }
1500
1501        if (empty)
1502        {
1503                return true;
1504        }
1505
1506        if (!CC_contact_full_info['addresses'])
1507        {
1508                CC_contact_full_info['addresses'] = new Array();
1509        }
1510
1511        var addrInfo = CC_contact_full_info['addresses']['address'+Element('cc_addr_types').options[lastIndex].value];
1512
1513        if (!addrInfo)
1514        {
1515                addrInfo = new Array();
1516        }
1517
1518        addrInfo['id_address'] = Element('cc_addr_id').value;
1519
1520        switch(Element('cc_addr_countries').value)
1521        {
1522                case '_SEP_':
1523                case '_NONE_':
1524                        addrInfo['id_country'] = false;
1525                        break;
1526
1527                default:
1528                        addrInfo['id_country'] = Element('cc_addr_countries').value;
1529
1530        }
1531
1532        switch(Element('cc_addr_states').value)
1533        {
1534                case '_SEP_':
1535                case '_NONE_':
1536                case '_NEW_':
1537                case '_NOSTATE_':
1538                        addrInfo['id_state'] = false;
1539                        break;
1540
1541                default:
1542                        addrInfo['id_state'] = Element('cc_addr_states').value;
1543
1544        }
1545
1546        switch(Element('cc_addr_cities').value)
1547        {
1548                case '_SEP_':
1549                case '_NONE_':
1550                case '_NEW_':
1551                        addrInfo['id_city'] = false;
1552                        break;
1553
1554                default:
1555                        addrInfo['id_city'] = Element('cc_addr_cities').value;
1556
1557        }
1558
1559        addrInfo['id_typeof_address']  = Element('cc_addr_types').options[lastIndex].value;
1560        addrInfo['address1']           = Element('cc_addr_1').value ? Element('cc_addr_1').value : false;
1561        addrInfo['address2']           = Element('cc_addr_2').value ? Element('cc_addr_2').value : false;
1562        addrInfo['complement']         = Element('cc_addr_complement').value ? Element('cc_addr_complement').value : false;
1563        addrInfo['address_other']      = Element('cc_addr_other').value ? Element('cc_addr_other').value : false;
1564        addrInfo['postal_code']        = Element('cc_addr_postal_code').value ? Element('cc_addr_postal_code').value : false;
1565        addrInfo['po_box']             = Element('cc_addr_po_box').value ? Element('cc_addr_po_box').value : false;
1566        addrInfo['address_is_default'] = Element('cc_addr_is_default').checked ? '1' : '0';
1567
1568        CC_contact_full_info['addresses']['address'+Element('cc_addr_types').options[lastIndex].value] = addrInfo;
1569
1570        if (Element('cc_addr_cities').value == '_NEW_' &&
1571            Element('cc_msg_type_city').value !=  Element('cc_addr_cities_new').value &&
1572                Element('cc_addr_cities_new').value != '')
1573        {
1574                var addrRootInfo = CC_contact_full_info['addresses']['new_cities'];
1575
1576                if (!addrRootInfo)
1577                {
1578                        addrRootInfo = new Array();
1579                }
1580
1581                var i = addrRootInfo.length;
1582                addrRootInfo[addrInfo['id_typeof_address']] = new Array();
1583                addrRootInfo[addrInfo['id_typeof_address']]['id_country'] = Element('cc_addr_countries').value;
1584                addrRootInfo[addrInfo['id_typeof_address']]['id_state']   = Element('cc_addr_states').value.charAt(0) != '_' ? Element('cc_addr_states').value : null;
1585                addrRootInfo[addrInfo['id_typeof_address']]['city_name']  = Element('cc_addr_cities_new').value;
1586                CC_contact_full_info['addresses']['new_cities'] = addrRootInfo;
1587        }
1588
1589        if (Element('cc_addr_states').value == '_NEW_' &&
1590            Element('cc_msg_type_state').value !=  Element('cc_addr_states_new').value &&
1591                Element('cc_addr_states_new').value != '')
1592        {
1593                var addrRootInfo = CC_contact_full_info['addresses']['new_states'];
1594
1595                if (!addrRootInfo)
1596                {
1597                        addrRootInfo = new Array();
1598                }
1599
1600                var i = addrRootInfo.length;
1601                addrRootInfo[addrInfo['id_typeof_address']] = new Array();
1602                addrRootInfo[addrInfo['id_typeof_address']]['id_country'] = Element('cc_addr_countries').value;
1603                addrRootInfo[addrInfo['id_typeof_address']]['state_name'] = Element('cc_addr_states_new').value;
1604                CC_contact_full_info['addresses']['new_states'] = addrRootInfo;
1605        }
1606
1607        return true;
1608}
1609
1610
1611/********* End Addresses Functions *********/
1612
1613
1614
1615/********* Begin Connections Functions ************/
1616function connGetHTMLLine ()
1617{
1618        var _label = (CC_contact_full_info['connections']
1619                && typeof(CC_contact_full_info['connections'][CC_conn_last_selected])!= 'undefined'
1620                && typeof(CC_contact_full_info['connections'][CC_conn_last_selected][CC_conn_count]) != 'undefined'
1621                ? CC_contact_full_info['connections'][CC_conn_last_selected][CC_conn_count]['name']
1622                : Element("cc_conn_type_sel").value);
1623
1624        var cc_conn_default = Element("cc_phone_default").style.display == '' ? Element("cc_phone_default") : Element("cc_email_default");
1625        cc_conn_default.disabled = false;
1626        var idx_conn = 0;
1627        for(idx_conn; idx_conn < cc_conn_default.options.length; idx_conn++)
1628                if(cc_conn_default.options[idx_conn].value == _label)
1629                        break;
1630
1631        if(idx_conn == cc_conn_default.options.length)
1632                cc_conn_default.options[idx_conn] = new Option (_label,_label, false,false);
1633
1634        if (!document.all)
1635        {
1636                if (Element("cc_conn_type_1").checked)
1637                {
1638                        return '<td style="position: absolute; left: 0; top: 0; z-index: -1; visibility: hidden"><input id="cc_conn_id_' + CC_conn_count + '" type="hidden" value="_NEW_"><input id="cc_conn_is_default_' + CC_conn_count + '" type="hidden" value="false"></td>'+
1639                        //'<td style="width: 30px;" align="right"><input name="cc_conn_is_default" id="cc_conn_is_default_'+ CC_conn_count +'" type="radio"></td>'+
1640                        '<td style="width: 10px;" align="right"><input id="cc_conn_name_'+CC_conn_count+'" type="hidden"><td style="width: 100px;" align="right"><span style="width: 150px;" id="cc_conn_label_'+CC_conn_count+'">'+_label+'</span></td>' +
1641                        '<td align="left"><input id="cc_conn_value_'+ CC_conn_count +'" onkeyup="javascript:emailTolower(\'cc_conn_value_' + CC_conn_count + '\')" style="width: 150px;" maxlength="100" type="text">&nbsp;' +
1642                        '<img align="top" alt="X" src="templates/default/images/x.png" style="width:18px; height:18px" onclick="javascript:removeConnField(\'cc_conn_tr_' + CC_conn_count + '\')"></td>';
1643                }
1644                else if (Element("cc_conn_type_2").checked)
1645                {
1646                        return '<td style="position: absolute; left: 0; top: 0; z-index: -1; visibility: hidden"><input id="cc_conn_id_' + CC_conn_count + '" type="hidden" value="_NEW_"><input id="cc_conn_is_default_' + CC_conn_count + '" type="hidden" value="false"></td>'+
1647                        //'<td style="width: 30px;" align="right"><input name="cc_conn_is_default" id="cc_conn_is_default_'+ CC_conn_count +'" type="radio"></td>'+
1648                        '<td style="width: 10px;" align="right"><input id="cc_conn_name_'+CC_conn_count+'" type="hidden"><td style="width: 100px;" align="right"><span style="width: 150px;" id="cc_conn_label_'+CC_conn_count+'">'+_label+'</span></td>' +
1649                        '<td align="left"><input id="cc_conn_value_'+ CC_conn_count +'" onkeyup="javascript:emailTolower(\'cc_conn_value_' + CC_conn_count + '\')" style="width: 150px;" maxlength="30" type="text" onkeyup="formatPhone(this)">&nbsp;' +
1650                        '<img align="top" alt="X" src="templates/default/images/x.png" style="width:18px; height:18px" onclick="javascript:removeConnField(\'cc_conn_tr_' + CC_conn_count + '\')"></td>';
1651                }
1652        }
1653        else
1654        {
1655                var tds = new Array();
1656                var inputs = new Array();
1657                var img = document.createElement('img');
1658
1659                for (var i = 0; i < 4; i++)
1660                {
1661                        tds[i] = document.createElement('td');
1662                }
1663
1664                tds[0].style.position = 'absolute';
1665                tds[0].style.visibility = 'hidden';
1666                tds[0].style.zIndex = '-1';
1667
1668                var remove_id = 'cc_conn_tr_'+CC_conn_count;
1669                img.alt = 'X';
1670                img.src = 'templates/default/images/x.png';
1671                img.style.width = '18px';
1672                img.style.height = '18px';
1673                img.align = 'top';
1674                img.onclick = function(e){ removeConnField(remove_id);};
1675
1676                for (var i = 0; i < 3; i++)
1677                {
1678                        inputs[i] = document.createElement('input');
1679                }
1680
1681                inputs[0].id = 'cc_conn_id_'+CC_conn_count;
1682                inputs[0].type = 'hidden';
1683                inputs[0].value = '_NEW_';
1684
1685                inputs[1].id = 'cc_conn_name_'+CC_conn_count;
1686                inputs[1].type = 'hidden';
1687
1688                inputs[2].id = 'cc_conn_value_'+CC_conn_count;
1689                inputs[2].type = 'text';
1690                inputs[2].style.width = '150px';
1691
1692                var _span = document.createElement("SPAN");
1693                _span.style.width = "150px";
1694                _span.id = "cc_conn_label_"+CC_conn_count;
1695                _span.innerHTML = _label;
1696                tds[0].appendChild(inputs[0]);
1697                tds[1].appendChild(inputs[1]);
1698                tds[1].align = 'right';
1699                tds[1].appendChild(_span);
1700                tds[2].appendChild(inputs[2]);
1701                tds[2].align = 'left';
1702                tds[2].innerHTML +="&nbsp;";
1703                tds[2].appendChild(img);
1704
1705                return tds;
1706        }
1707}
1708
1709function connAddNewLine ()
1710{
1711
1712        var _emptyLine = (!CC_contact_full_info['connections']
1713                || typeof(CC_contact_full_info['connections'][CC_conn_last_selected]) == 'undefined'
1714                || typeof(CC_contact_full_info['connections'][CC_conn_last_selected][CC_conn_count]) == 'undefined');
1715
1716        if(_emptyLine) {
1717
1718                if(Element("cc_conn_type_sel").value == '-1'){
1719                                return false;
1720                }
1721
1722                for(k = 0; k < CC_conn_count; k++) {
1723                        if(Element("cc_conn_name_"+k) && Element("cc_conn_name_"+k).value != "" && Element("cc_conn_name_"+k).value == Element("cc_conn_type_sel").value) {
1724                                alert('Você já possui uma entrada para o tipo "'+Element("cc_conn_type_sel").value+'"!');
1725                                Element("cc_conn_type_sel").options.selectedIndex = 0;
1726                                return false;
1727                        }
1728                }
1729        }
1730        if (!document.all)
1731        {
1732                var obj = addHTMLCode('cc_conn', 'cc_conn_tr_'+CC_conn_count, connGetHTMLLine(),'tr');
1733        }
1734        else
1735        {
1736                var tds = connGetHTMLLine();
1737                var tr = document.createElement('tr');
1738                var tbody = Element('cc_conn');
1739
1740                tr.id = 'cc_conn_tr_'+CC_conn_count;
1741                tbody.appendChild(tr);
1742
1743                for (var i = 0; i < 4; i++)
1744                {
1745                        tr.appendChild(tds[i]);
1746                }
1747        }
1748        Element("cc_conn_name_"+CC_conn_count).value = Element("cc_conn_type_sel").value;
1749        Element("cc_conn_type_sel").options.selectedIndex = 0;
1750        CC_conn_count++;
1751
1752        return CC_conn_count;
1753}
1754
1755function connRemoveLine(id)
1756{
1757        var p = Element(id).parentNode;
1758        var cc_conn_default = Element("cc_phone_default").style.display == '' ? Element("cc_phone_default") : Element("cc_email_default");
1759        var _label = Element("cc_conn_label_"+(id.substring(11,13))).innerHTML;
1760        for(var i = 0;i < cc_conn_default.options.length; i++) {
1761                if(cc_conn_default.options[i].value == _label) {
1762                        cc_conn_default.options[i] = null;
1763                        break;
1764                }
1765        }
1766        if(cc_conn_default.options.length == 1)
1767                cc_conn_default.disabled = true;
1768
1769        removeHTMLCode(id);
1770
1771        return;
1772        connRefreshClass(p.childNodes);
1773}
1774
1775function connRefreshClass(Nodes)
1776{
1777        for (var i = 2; i < Nodes.length; i++)
1778        {
1779                Nodes.item(i).className = i % 2 ? 'row_on' : 'row_off';
1780        }
1781}
1782
1783function clearConn()
1784{
1785        var connParent = Element('cc_conn').childNodes;
1786        var i;
1787
1788        for (i = connParent.length - 1; i >= 0; i--)
1789        {
1790                if (connParent[i].id)
1791                {
1792                        connRemoveLine(connParent[i].id);
1793                }
1794        }
1795
1796        CC_conn_count = 0;
1797}
1798
1799function removeConnField(id)
1800{
1801        var count = id.substring(id.lastIndexOf('_')+1);
1802        if (Element('cc_conn_id_'+count).value != '_NEW_')
1803        {
1804                if (typeof(CC_contact_full_info['removed_conns']) != 'object')
1805                {
1806                        CC_contact_full_info['removed_conns'] = new Array();
1807                }
1808
1809                CC_contact_full_info['removed_conns'][CC_contact_full_info['removed_conns'].length] = Element('cc_conn_id_'+count).value;
1810        }
1811
1812        connRemoveLine(id);
1813}
1814
1815function emailTolower(obj){
1816        document.getElementById(obj).value = document.getElementById(obj).value.toLowerCase();
1817
1818}
1819
1820function updateConnFields()
1821{
1822
1823        var connID;
1824        var i;
1825        var cc_conn_type_sel = Element("cc_conn_type_sel");
1826        var cc_phone_default = Element("cc_phone_default");
1827        var cc_email_default = Element("cc_email_default");
1828        var div_cc_conn_is_default = Element("div_cc_conn_is_default");
1829        var cc_conn_is_default = '';
1830        var selected_index = '';
1831
1832        cc_conn_type_sel.disabled = false;
1833        div_cc_conn_is_default.style.display = "";
1834
1835        for(var i = 0;i < cc_conn_type_sel.options.length; i++)
1836                cc_conn_type_sel.options[i--] = null;
1837
1838        if(Element('cc_conn_type_1').checked) {
1839            var lang_new_email = Element('cc_msg_new_email').value;
1840            var lang_main = Element('cc_msg_main').value;
1841            var lang_alternative = Element('cc_msg_alternative').value;
1842            cc_conn_type_sel[0] = new Option(lang_new_email,'-1');
1843            cc_conn_type_sel[1] = new Option(lang_main,lang_main);
1844            cc_conn_type_sel[2] = new Option(lang_alternative,lang_alternative);
1845                connID = 1;
1846                selected_index = cc_email_default.options.selectedIndex;
1847                for(var i = 0;i < cc_email_default.options.length; i++) {
1848                        cc_email_default.options[i--] = null;
1849                }
1850
1851                var lang_select_email = Element('cc_msg_select_email').value;
1852                cc_email_default.options[0] = new Option(lang_select_email,'-1');
1853                cc_phone_default.style.display = 'none';
1854                cc_email_default.style.display = '';
1855                cc_conn_is_default = cc_email_default;
1856        }
1857        else if(Element('cc_conn_type_2').checked) {
1858            var lang_new_telephone = Element('cc_msg_new_phone').value;
1859            var lang_home = Element('cc_msg_home').value;
1860            var lang_cellphone = Element('cc_msg_cellphone').value;
1861            var lang_work = Element('cc_msg_work').value;
1862            var lang_fax = Element('cc_msg_fax').value;
1863            var lang_pager = Element('cc_msg_pager').value;
1864                var lang_corporative_cellphone = Element('cc_msg_corporative_cellphone').value;
1865                var lang_corporative_fax = Element('cc_msg_corporative_fax').value;
1866                var lang_corporative_pager = Element('cc_msg_corporative_pager').value;
1867
1868            cc_conn_type_sel[0] = new Option(lang_new_telephone,'-1');
1869            cc_conn_type_sel[1] = new Option(lang_home,lang_home);
1870            cc_conn_type_sel[2] = new Option(lang_cellphone,lang_cellphone);
1871            cc_conn_type_sel[3] = new Option(lang_work,lang_work);
1872            cc_conn_type_sel[4] = new Option(lang_fax,lang_fax);
1873            if (document.getElementById('cc_contact_type').value == 'advanced') {
1874                        cc_conn_type_sel[5] = new Option(lang_pager, lang_pager);
1875                        cc_conn_type_sel[6] = new Option(lang_corporative_cellphone, lang_corporative_cellphone);
1876                        cc_conn_type_sel[7] = new Option(lang_corporative_fax, lang_corporative_fax);
1877                        cc_conn_type_sel[8] = new Option(lang_corporative_pager, lang_corporative_pager);
1878                }
1879
1880                connID = 2;
1881                selected_index = cc_phone_default.options.selectedIndex;
1882                for(var i = 0;i < cc_phone_default.options.length; i++) {
1883                        cc_phone_default.options[i--] = null;
1884                }
1885
1886                var lang_choose_phone = Element('cc_msg_choose_phone').value;
1887                cc_phone_default.options[0] = new Option(lang_choose_phone,'-1');
1888                cc_email_default.style.display = 'none';
1889                cc_phone_default.style.display = '';
1890                cc_conn_is_default = cc_phone_default;
1891        }
1892
1893        Element("cc_conn_type_sel").options.selectedIndex = 0;
1894        /* First save the data */
1895        saveConnFields();
1896
1897        CC_conn_last_selected = connID;
1898
1899        clearConn();
1900
1901        if (connID == '_NONE_')
1902        {       cc_conn_is_default.disabled = true;
1903                return;
1904        }
1905
1906        /* If no data already available, return */
1907        if (!CC_contact_full_info['connections'])
1908        {
1909                cc_conn_is_default.disabled = true;
1910                return;
1911        }
1912        cc_conn_is_default.disabled = (!CC_contact_full_info['connections'][connID] || CC_contact_full_info['connections'][connID].length == 0);
1913        /* Put the information that's already available */
1914        for (i in CC_contact_full_info['connections'][connID])
1915        {
1916                var num = connAddNewLine();
1917                Element('cc_conn_id_'+i).value = CC_contact_full_info['connections'][connID][i]['id'];
1918                Element('cc_conn_name_'+i).value = CC_contact_full_info['connections'][connID][i]['name'];
1919                Element('cc_conn_value_'+i).value = CC_contact_full_info['connections'][connID][i]['value'];
1920
1921                if(!selected_index || (selected_index == '-1' && CC_contact_full_info['connections'][connID][i]['is_default'])){
1922                        for(var j = 0;j < cc_conn_is_default.options.length; j++){
1923                                if(cc_conn_is_default.options[j].value == CC_contact_full_info['connections'][connID][i]['name']) {
1924                                        selected_index = j;
1925                                        break;
1926                                }
1927                        }
1928                }
1929        }
1930        if(cc_conn_is_default.options.length > selected_index)
1931                cc_conn_is_default.options.selectedIndex = (selected_index == "-1" ? 0 : selected_index);
1932}
1933
1934function saveConnFields()
1935{
1936        if (CC_conn_last_selected != 0 && CC_conn_last_selected != '_NONE_')
1937        {
1938                var nodes = Element('cc_conn').childNodes;
1939                var k = 0;
1940
1941                if (typeof(CC_contact_full_info['connections']) != 'object' || CC_contact_full_info['connections'] == null)
1942                {
1943                        CC_contact_full_info['connections'] = new Array();
1944                        CC_contact_full_info['connections'][CC_conn_last_selected] = new Array();
1945                }
1946                else if (typeof(CC_contact_full_info['connections'][CC_conn_last_selected]) != 'object')
1947                {
1948                        CC_contact_full_info['connections'][CC_conn_last_selected] = new Array();
1949                }
1950                else
1951                {
1952                        delete CC_contact_full_info['connections'][CC_conn_last_selected];
1953                        CC_contact_full_info['connections'][CC_conn_last_selected] = new Array();
1954                }
1955
1956                for (var i = 0; i < nodes.length; i++)
1957                {
1958                        if (nodes[i].id)
1959                        {
1960                                var subNodes = nodes[i].childNodes;
1961                                var found = false;
1962
1963                                for (var j = 0; j < subNodes.length; j++)
1964                                {
1965                                        if (subNodes[j].childNodes.length > 0 &&
1966                                            subNodes[j].childNodes[0].id)
1967                                        {
1968                                                /* Check for the Connection Info array */
1969                                                if (typeof(CC_contact_full_info['connections'][CC_conn_last_selected][k]) != 'object')
1970                                                {
1971                                                        CC_contact_full_info['connections'][CC_conn_last_selected][k] = new Array();
1972                                                }
1973
1974                                            if (subNodes[j].childNodes[0].id.indexOf('cc_conn_name') != -1)
1975                                                {
1976                                                        if (subNodes[j].childNodes[0].value)
1977                                                        {
1978                                                                CC_contact_full_info['connections'][CC_conn_last_selected][k]['name'] = subNodes[j].childNodes[0].value;
1979                                                        }
1980                                                        else
1981                                                        {
1982                                                                CC_contact_full_info['connections'][CC_conn_last_selected][k]['name'] = '';
1983                                                        }
1984                                                }
1985                                                else if (subNodes[j].childNodes[0].id.indexOf('cc_conn_value') != -1)
1986                                                {
1987                                                        if (subNodes[j].childNodes[0].value)
1988                                                        {
1989                                                                CC_contact_full_info['connections'][CC_conn_last_selected][k]['value'] = subNodes[j].childNodes[0].value;
1990                                                        }
1991                                                        else
1992                                                        {
1993                                                                CC_contact_full_info['connections'][CC_conn_last_selected][k]['value'] = '';
1994                                                        }
1995                                                }
1996                                                else if (subNodes[j].childNodes[0].id.indexOf('cc_conn_id') != -1)
1997                                                {
1998                                                        CC_contact_full_info['connections'][CC_conn_last_selected][k]['id'] = subNodes[j].childNodes[0].value;
1999                                                }
2000
2001                                                found = true;
2002                                        }
2003                                }
2004
2005                                if (found)
2006                                {
2007                                        k++;
2008                                }
2009                        }
2010                }
2011
2012                if (CC_contact_full_info['connections'].length == 0)
2013                {
2014                        delete CC_contact_full_info['connections'];
2015                }
2016
2017                if (CC_contact_full_info['connections'][CC_conn_last_selected].length == 0)
2018                {
2019                        delete CC_contact_full_info['connections'][CC_conn_last_selected];
2020                }
2021
2022        }
2023
2024        return;
2025}
2026
2027/***********************************************\
2028*               VIEW CARDS FUNCTIONS            *
2029\***********************************************/
2030function removeAllEntries()
2031{
2032        var handler = function (responseText)
2033        {
2034                var data = unserialize(responseText);
2035                if (typeof(data) != 'object') {
2036                        showMessage(Element('cc_msg_err_contacting_server').value);
2037                        return;
2038                }
2039                if (data['status'] != 'ok')     {
2040                        showMessage(data['msg']);
2041                        return;
2042                }
2043                setTimeout('updateCards()',80);
2044        };
2045        var number = randomString().toLowerCase();
2046        var result = '';
2047
2048        if(!is_ie)
2049                result = prompt("Essa operação removerá TODOS os seus \ncontatos pessoais,  e  NÃO  PODERÁ  ser \ndesfeita. Digite o código abaixo:\n\tCódigo de confirmação: "+number);
2050        else
2051                result = prompt("Essa operação removerá TODOS os seus contatos pessoais,  e  NÃO  PODERÁ  ser desfeita. Digite o seguinte código de confirmação: "+number,"");
2052
2053        if(result) {
2054                if(result.toLowerCase() == number)
2055                        Connector.newRequest('removeAllEntries', '../index.php?menuaction=contactcenter.ui_data.data_manager&method=remove_all_entries', 'GET', handler);
2056                else
2057                        alert('Código Incorreto');
2058        }
2059}
2060
2061function removeEntry(id, type)
2062{
2063        var question = showMessage(type == 'groups' ? Element('cc_msg_group_remove_confirm').value: Element('cc_msg_card_remove_confirm').value, 'confirm');
2064
2065        if (!question)
2066        {
2067                return;
2068        }
2069
2070        var handler = function (responseText)
2071        {
2072                var data = unserialize(responseText);
2073
2074                if (typeof(data) != 'object')
2075                {
2076                        showMessage(Element('cc_msg_err_contacting_server').value);
2077                        return;
2078                }
2079
2080                if (data['status'] != 'ok')
2081                {
2082                        showMessage(data['msg']);
2083                        return;
2084                }
2085
2086                setTimeout('updateCards()',80);;
2087        };
2088
2089        typeArg = (type == 'groups' ? 'group' : 'entry');
2090
2091        Connector.newRequest('removeEntry', '../index.php?menuaction=contactcenter.ui_data.data_manager&method=remove_'+typeArg+'&remove=' + id, 'GET', handler);
2092}
2093
2094function updateCards()
2095{
2096        setHeightSpace();
2097        setMaxCards(getMaxCards());
2098        showCards(getActualLetter(), getActualPage());
2099}
2100
2101
2102window.onresize = function ()
2103{
2104        updateCards();
2105}
2106
2107
2108function setHeightSpace ()
2109{
2110        /*
2111        var w_height = 0;
2112        var w_extra = 200;
2113
2114        if (document.body.clientHeight)
2115        {
2116                w_height = parseInt(document.body.clientHeight);
2117        }
2118        else
2119        {
2120                w_height = 500;
2121        }
2122        if (w_height < 500)
2123        {
2124                w_height = 500;
2125        }
2126        Element('cc_card_space').style.height = (w_height - w_extra) + 'px';
2127        */
2128}
2129
2130function selectLetter (letter_id)
2131{
2132        for (var i = 0; i < 28; i++)
2133        {
2134                if ( i == letter_id )
2135                {
2136                        Element('cc_letter_' + i).className = 'letter_box_active';
2137                }
2138                else
2139                {
2140                        Element('cc_letter_' + i).className = 'letter_box';
2141                }
2142        }
2143}
2144
2145function clearLetterSelection()
2146{
2147        for (var i = 0; i < 28; i++)
2148        {
2149                Element('cc_letter_' + i).className = 'letter_box';
2150        }
2151}
2152
2153function getActualPage ()
2154{
2155        return CC_actual_page;
2156}
2157
2158function getActualLetter ()
2159{
2160        return CC_actual_letter;
2161}
2162
2163function getFirstPage ()
2164{
2165        return 1;
2166}
2167
2168function getPreviousPage ()
2169{
2170        if ( CC_actual_page > 1 )
2171        {
2172                return CC_actual_page - 1;
2173        }
2174        else
2175        {
2176                return 1;
2177        }
2178}
2179
2180function getNextPage ()
2181{
2182        if ( CC_actual_page < CC_npages )
2183        {
2184                return CC_actual_page + 1;
2185        }
2186        else
2187        {
2188                return CC_npages;
2189        }
2190}
2191
2192function getLastPage ()
2193{
2194        return CC_npages;
2195}
2196
2197function setPages (npages, actual_page, showing_page)
2198{
2199        var html_pages = '';
2200        var n_lines = 0;
2201        var page_count = 0;
2202
2203        if (CC_npages == 0)
2204        {
2205                html_pages = '';
2206        }
2207        else
2208        {
2209                var page = 1;
2210                if (showing_page > 10 || (!showing_page && actual_page > 10))
2211                {
2212                        var final_page = showing_page? showing_page-11 : actual_page-11;
2213                        if (final_page < 1)
2214                        {
2215                                final_page = 1;
2216                        }
2217
2218                        html_pages += '<a href="javascript:setPages('+npages+', '+ actual_page +', '+ final_page +')">...</a> ';
2219
2220                        page = showing_page ? showing_page : actual_page;
2221                }
2222
2223                for (; page <= npages; page++)
2224                {
2225                        if (page_count > 10)
2226                        {
2227                                html_pages += '<a href="javascript:setPages('+npages+', '+ actual_page +', '+ page +');">...</a>';
2228                                break;
2229                        }
2230                        if ( page == actual_page )
2231                        {
2232                                html_pages += '<b>'+page+'</b>';
2233                        }
2234                        else
2235                        {
2236                                html_pages += '<a href="javascript:showCards(\'' + CC_actual_letter + '\',' + page + ')">' + page + '</a>';
2237                        }
2238                        html_pages += '&nbsp;';
2239                        page_count++;
2240                }
2241        }
2242
2243        if (actual_page <= 1)
2244        {
2245                Element('cc_panel_arrow_first').onclick = '';
2246                Element('cc_panel_arrow_previous').onclick = '';
2247                Element('cc_panel_arrow_first').style.cursor = 'auto';
2248                Element('cc_panel_arrow_previous').style.cursor = 'auto';
2249        }
2250        else
2251        {
2252                Element('cc_panel_arrow_first').onclick = function (event) { showCards(getActualLetter(), getFirstPage()); };
2253                Element('cc_panel_arrow_previous').onclick = function (event) { showCards(getActualLetter(), getPreviousPage()); };
2254                if (is_mozilla)
2255                {
2256                        Element('cc_panel_arrow_first').style.cursor = 'pointer';
2257                        Element('cc_panel_arrow_previous').style.cursor = 'pointer';
2258                }
2259                Element('cc_panel_arrow_first').style.cursor = 'hand';
2260                Element('cc_panel_arrow_previous').style.cursor = 'hand';
2261        }
2262
2263        if (actual_page == CC_npages)
2264        {
2265                Element('cc_panel_arrow_next').onclick = '';
2266                Element('cc_panel_arrow_last').onclick = '';
2267                Element('cc_panel_arrow_next').style.cursor = 'auto';
2268                Element('cc_panel_arrow_last').style.cursor = 'auto';
2269        }
2270        else
2271        {
2272                Element('cc_panel_arrow_next').onclick = function (event) { showCards(getActualLetter(), getNextPage()); };
2273                Element('cc_panel_arrow_last').onclick = function (event) { showCards(getActualLetter(), getLastPage()); };
2274                if (is_mozilla)
2275                {
2276                        Element('cc_panel_arrow_next').style.cursor = 'pointer';
2277                        Element('cc_panel_arrow_last').style.cursor = 'pointer';
2278                }
2279                Element('cc_panel_arrow_next').style.cursor = 'hand';
2280                Element('cc_panel_arrow_last').style.cursor = 'hand';
2281        }
2282
2283        Element('cc_panel_pages').innerHTML = html_pages;
2284}
2285
2286function populateCards(data, type)
2287{
2288        if (data[3].length >= 100 )
2289        {
2290                alert("Critério de pesquisa muito abrangente, achados " + data[3].length + " resultados");
2291                for (i = 0; i < (Math.sqrt(data[3].length)-1); i++)
2292                        for (j = 0; j < 3; j++)
2293                                document.getElementById("cc_card:"+j+":"+i).innerHTML = '';
2294                        return false;
2295        }
2296
2297        if(type == 'groups' || type =='shared_groups')
2298                return populateGroupsInCards(data,type);
2299
2300        var pos = 0;
2301        var ncards = data[3].length;
2302
2303        if (typeof(data[3]) == 'object' && ncards > 0)
2304        {
2305                for (var i = 0; i < CC_max_cards[1]; i++)
2306                {
2307                        for (var j = 0; j < CC_max_cards[0]; j++)
2308                        {
2309                                id = 'cc_card:'+j+':'+i;
2310
2311                                for (var k = 0; k < data[2].length; k++)
2312                                {
2313                                        if(!(ccTree.catalog_perms & 2))
2314                                        {
2315                                                switch(data[2][k])
2316                                                {
2317                                                        case 'cc_mail' :
2318
2319                                                                if(data[3][pos][k] === 'none')
2320                                                                        "Não informado.";
2321                                                                break;
2322                                                        case 'cc_phone' :
2323
2324                                                                if(data[3][pos][k] === 'none')
2325                                                                        data[3][pos][k] = "Não informado.";
2326                                                                break;
2327                                                }
2328
2329                                        }
2330
2331
2332                                        /*if(data[2][k] ==  'cc_mail' && data[3][pos][k] == 'none' && !(ccTree.catalog_perms & 2) ) {
2333                                                Element(id).style.display = 'none';
2334                                                continue;
2335                                        }*/
2336
2337                                        if(data[3][pos][k] != 'none')
2338                                        {
2339                                                data[3][pos][k] = unescape(data[3][pos][k]);
2340                                                switch (data[2][k])
2341                                                {
2342                                                        case 'cc_name':
2343                                                                if (data[3][pos][k].length > 50)
2344                                                                {
2345                                                                        Element(id+':'+data[2][k]).innerHTML = adjustString(data[3][pos][k], 50);
2346                                                                        Element(id+':'+data[2][k]).title = data[3][pos][k];
2347                                                                }
2348                                                                else
2349                                                                {
2350                                                                        Element(id+':'+data[2][k]).innerHTML = data[3][pos][k];
2351                                                                }
2352                                                                if(data[3][pos][12])
2353                                                                        Element(id+':'+data[2][k]).innerHTML += "<br><span style='margin-left:30px'><font size='-2' color='#808080'><i>"+data[3][pos][12]+"</i></font></span>";
2354                                                                break;
2355
2356                                                        case 'cc_mail':
2357                                                                if (data[3][pos][k].length > (CC_visual == 'table'  ? 50 : 20))
2358                                                                {
2359                                                                        Element(id+':'+data[2][k]).innerHTML = data[5] + data[3][pos][k] + '\')">'+ adjustString(data[3][pos][k], (CC_visual == 'table'  ? 50 : 20))+'</span>';
2360                                                                        Element(id+':'+data[2][k]).title = data[3][pos][k];
2361                                                                }
2362                                                                else
2363                                                                {
2364                                                                        if(data[3][pos][k] != "Não informado.")
2365                                                                        Element(id+':'+data[2][k]).innerHTML = data[5] + data[3][pos][k] + '\')">'+ data[3][pos][k]+'</span>';
2366                                                                        else
2367                                                                                Element(id+':'+data[2][k]).innerHTML = data[13] + data[3][pos][k] + '\')">'+ data[3][pos][k]+'</span>';
2368                                                                }
2369                                                                break;
2370
2371                                                        case 'cc_phone':
2372                                                                if (data[3][pos][k].length > 20)
2373                                                                {
2374                                                                        Element(id+':'+data[2][k]).innerHTML = adjustString(data[3][pos][k], 20);
2375                                                                        Element(id+':'+data[2][k]).title = data[3][pos][k];
2376                                                                }
2377                                                                else
2378                                                                {
2379                                                                        Element(id+':'+data[2][k]).innerHTML = adjustString(data[3][pos][k], 20);
2380                                                                }
2381                                                                if(data[3][pos][k] != " ")
2382                                                                Element(id+':cc_phone').innerHTML = (data[3][pos][k].length < 23) ? data[3][pos][k]:data[3][pos][k].substr(0,22)+"<br>"+data[3][pos][k].substr(22,data[3][pos][k].length);
2383                                                                else
2384                                                                        Element(id+':cc_phone').innerHTML = "Não informado.";
2385                                                                break;
2386
2387                                                        case 'cc_title':
2388                                                                if(preferences.departmentShow && ccTree.catalog_perms == 1){
2389                                                                        if(data[3][pos][k] == " " || data[3][pos][k] == "" || data[3][pos][k] == "undefined"){
2390                                                                                Element(id+':'+data[2][k]).innerHTML = "Não informado.";
2391                                                                        }
2392                                                                        else if (data[3][pos][k].length > 15)
2393                                                                {
2394                                                                        Element(id+':'+data[2][k]).innerHTML = adjustString(data[3][pos][k], 15);
2395                                                                        Element(id+':'+data[2][k]).title = data[3][pos][k];
2396                                                                }
2397                                                                else
2398                                                                {
2399                                                                        Element(id+':'+data[2][k]).innerHTML = data[3][pos][k];
2400                                                                }
2401                                                                break;
2402                                                                }else{
2403                                                                        break;
2404                                                                }
2405                                                        case 'cc_id':
2406                                                                var id_contact = data[3][pos][k];
2407                                                                Element(id+':'+data[2][k]).value = data[3][pos][k];
2408                                                                Element(id+':cc_photo').src = '../index.php?menuaction=contactcenter.ui_data.data_manager&method=get_photo' + (data[4][pos] != 0 ? '&id='+data[3][pos][k] : '');
2409                                                                if(ccTree.catalog_perms == 1)
2410                                                                {
2411                                                                        Element(id+':cc_icon_data').innerHTML =  '<span title="'+Element('cc_msg_copy_to_catalog').value+'" id="' + id + ':ccQuickAdd" onmouseout="window.status=\'\';" onclick="ccQuickAddContact.showList(\''+ Element(id+':cc_id').value + '\');return true;" style="cursor: pointer; cursor: hand; z-index: 1"><img src="templates/default/images/address-conduit-16.png" align="center"></span>';
2412                                                                        if (data[12] == true || data[12] == 'true')
2413                                                                                Element(id+':cc_icon_data').innerHTML += "  |  " + '<span title="'+ Element('cc_msg_show_extra_detail').value+'" id="' + id + ':ccContactDetails" onclick="javascript:openContactDetails(\'' + Element(id+':cc_id').value + '\');" style="cursor: pointer; cursor: hand; z-index: 1"><img src="templates/default/images/addressbook-mini.png" align="center"></span>';
2414                                                                }
2415                                                                break;
2416
2417                                                        case 'cc_forwarding_address':
2418                                                                var account_type = data[3][pos][k];
2419
2420                                                                if( !account_type)
2421                                                                        break;
2422                                                                else
2423                                                                        if (account_type == 'list' || account_type == 'group')
2424                                                                                icon = '<img src="templates/default/images/people-mini.png" align="center">';
2425                                    else
2426                                                                                icon = '';
2427                                                                           
2428                                Element(id+':cc_icon_group').innerHTML =  '<span title="'+Element('cc_participants').value+'"  onmouseout="window.status=\'\';" onclick="ccListParticipants.showList(\''+ Element(id+':cc_id').value + '\',null,null,null,\''+account_type+'\');return true;" style="cursor: pointer; cursor: hand; z-index: 1">'+icon+'&nbsp;&nbsp;</span>';
2429                                break;
2430
2431
2432                                                        //Para tratar tamanho do campo "celular" do empregado
2433                                                        case 'cc_mobile':
2434                                                                if(preferences.cellShow && ccTree.catalog_perms == 1){
2435                                                                if (data[3][pos][k].length > 20)
2436                                                                {
2437                                                                        Element(id+':'+data[2][k]).innerHTML = adjustString(data[3][pos][k], 20);
2438                                                                        Element(id+':'+data[2][k]).title = data[3][pos][k];
2439                                                                }
2440                                                                else
2441                                                                {
2442                                                                        Element(id+':'+data[2][k]).innerHTML = adjustString(data[3][pos][k], 20);
2443                                                                }
2444                                                                Element(id+':cc_mobile').innerHTML = data[3][pos][k];
2445                                                                break;
2446                                                                }else{
2447                                                                        break;
2448                                                                }               
2449                                                        //Para tratar tamanho do campo "matricula" do empregado
2450                                                        case 'cc_empNumber':
2451                                                                if(preferences.empNumShow && ccTree.catalog_perms == 1){
2452                                                                if (data[3][pos][k].length > 20)
2453                                                                {
2454                                                                        Element(id+':'+data[2][k]).innerHTML = adjustString(data[3][pos][k], 20);
2455                                                                        Element(id+':'+data[2][k]).title = data[3][pos][k];
2456                                                                }
2457                                                                else
2458                                                                {
2459                                                                        Element(id+':'+data[2][k]).innerHTML = adjustString(data[3][pos][k], 20);
2460                                                                }
2461                                                                Element(id+':cc_empNumber').innerHTML = data[3][pos][k];
2462                                                                break;
2463                                                                }else{
2464                                                                        break;
2465                                                                }
2466                                                        //Para tratar tamanho do campo "departamento" do empregado
2467                                                        case 'cc_department':
2468                                                                if (data[3][pos][k].length > 15)
2469                                                                {
2470                                                                        Element(id+':'+data[2][k]).innerHTML = adjustString(data[3][pos][k], 15);
2471                                                                        Element(id+':'+data[2][k]).title = data[3][pos][k];
2472                                                                }
2473                                                                else
2474                                                                {
2475                                                                        Element(id+':'+data[2][k]).innerHTML = adjustString(data[3][pos][k], 15);
2476                                                                }
2477                                                                Element(id+':cc_department').innerHTML = data[3][pos][k];
2478                                                                break;
2479
2480                                                        default:
2481                                                                if (data[3][pos][k].length > 10)
2482                                                                {
2483                                                                        Element(id+':'+data[2][k]).innerHTML = adjustString(data[3][pos][k], 10);
2484                                                                        Element(id+':'+data[2][k]).title = data[3][pos][k];
2485                                                                }
2486                                                                else
2487                                                                {
2488                                                                        if (Element(id+':'+data[2][k]) == null) alert('É nulo');
2489                                                                        Element(id+':'+data[2][k]).innerHTML = data[3][pos][k];
2490                                                                }
2491                                                }
2492                                        }else{
2493                                                data[3][pos][k] = unescape(data[3][pos][k]);
2494                                                switch (data[2][k])
2495                                                {
2496                                                        case 'cc_mail':
2497                                                                Element(id+':'+data[2][k]).innerHTML = data[13] + "Não informado." + '\')">'+ "Não infomardo." +'</span>';
2498                                                                break;
2499
2500                                                        case 'cc_phone':
2501                                                                Element(id+':cc_phone').innerHTML = "Não informado.";
2502                                                                break;
2503                                                        case 'cc_empNumber':
2504                                                                if(preferences.empNumShow && ccTree.catalog_perms == 1){
2505                                                                        var cc_empNumberTD = Element(id+':cc_empNumber').parentNode;
2506                                                                        if(cc_empNumberTD.tagName != "DIV")
2507                                                                                //cc_empNumberTD.parentNode.removeChild(cc_empNumberTD);
2508                                                                                Element(id+':cc_empNumber').innerHTML = "Não informado.";
2509                                                                        else
2510                                                                                cc_empNumberTD.removeChild(Element(id+':cc_empNumber'));
2511                                                                }
2512                                                                break;
2513                                                        case 'cc_mobile':
2514                                                                if(preferences.cellShow && ccTree.catalog_perms == 1){
2515                                                                        var cc_mobileTD = Element(id+':cc_mobile').parentNode;
2516                                                                        if(cc_mobileTD.tagName != "DIV")
2517                                                                                //cc_mobileTD.parentNode.removeChild(cc_mobileTD);
2518                                                                                Element(id+':cc_mobile').innerHTML = "Não informado.";
2519                                                                        else
2520                                                                                cc_mobileTD.removeChild(Element(id+':cc_mobile'));
2521                                                                }
2522                                                                break;
2523                                                        case 'cc_title':
2524                                                                if(preferences.departmentShow && ccTree.catalog_perms == 1){
2525                                                                        var cc_titleTD = Element(id+':cc_title').parentNode;
2526                                                                        if(cc_titleTD.tagName != "DIV")
2527                                                                                Element(id+':cc_title').innerHTML = "Não informado.";
2528                                                                        else
2529                                                                                cc_titleTD.removeChild(Element(id+':cc_title'));
2530                                                                }
2531                                                                break;
2532                                                }
2533                                        }
2534                                }
2535                               
2536                               
2537                                if (type == "shared_contacts") {
2538                                        if (data[3][pos][11] & 4)
2539                                                eval("document.getElementById(id + ':cc_card_edit').onclick = function(){editSharedContact(Element('"+id+"' + ':cc_id').value);};");
2540                                        else
2541                                                document.getElementById(id + ':cc_card_edit').onclick = function(){
2542                                                        alert(Element('cc_msg_not_allowed').value);
2543                                                };
2544                                        if (data[3][pos][11] & 8)
2545                                                eval("document.getElementById(id + ':cc_card_remove').onclick = function(){removeEntry(Element('" + id + "' + ':cc_id').value);};");
2546                                        else
2547                                                document.getElementById(id + ':cc_card_remove').onclick = function(){
2548                                                        alert(Element('cc_msg_not_allowed').value);
2549                                                };
2550                                }
2551
2552                                if (--ncards == 0)
2553                                {
2554                                        j = CC_max_cards[0];
2555                                        i = CC_max_cards[1];
2556                                }
2557
2558                                pos++;
2559                        }
2560                }
2561        }
2562        deleteBlankFields("cc_name_empNumber");
2563        deleteBlankFields("cc_name_mobile");
2564        deleteBlankFields("cc_name_title");
2565}
2566function deleteBlankFields(field){
2567                var saia = true;
2568                var empNumbers = document.getElementsByName(field);
2569                for(var i = 0; i < empNumbers.length; i++){
2570                        if(empNumbers[i].getElementsByTagName("SPAN")[0].innerHTML != "Não informado."){
2571                                saia = false;
2572                                i = empNumbers.length;
2573                        }
2574                }
2575                if(saia){
2576                        for(var i = 0; i < empNumbers.length; i++){
2577                                empNumbers[i].style.display = "none";
2578                        }
2579                }
2580}
2581function populateGroupsInCards(data,type)
2582{
2583        var pos = 0;
2584        var contacts = data[5];
2585        var ncards = data[3].length;
2586
2587        if (typeof(data[3]) == 'object' && ncards > 0)
2588        {
2589                for (var i = 0; i < CC_max_cards[1]; i++)
2590                {
2591                        for (var j = 0; j < CC_max_cards[0]; j++)
2592                        {
2593                                id = 'cc_card:'+j+':'+i;
2594
2595                                for (var k = 0; k < data[2].length; k++)
2596                                {
2597
2598                                        if(data[3][pos][k] != 'none')
2599                                        {
2600
2601                                                switch (data[2][k])
2602                                                {
2603                                                        case 'cc_title':
2604                                                                if (data[3][pos][k].length > (CC_visual == 'table'  ? 50 : 20))
2605                                                                {
2606                                                                        Element(id+':'+data[2][k]).innerHTML = adjustString(data[3][pos][k], (CC_visual == 'table'  ? 50 : 20));
2607                                                                        Element(id+':'+data[2][k]).title = data[3][pos][k];
2608                                                                }
2609                                                                else
2610                                                                {
2611                                                                        Element(id+':'+data[2][k]).innerHTML = data[3][pos][k];
2612                                                                }
2613                                                                if(data[3][pos][5])
2614                                                                        Element(id+':'+data[2][k]).innerHTML += "<br><span style='margin-left:30px'><font size='-2' color='#808080'><i>"+data[3][pos][5]+"</i></font></span>";
2615                                                                break;
2616
2617                                                        case 'cc_short_name':
2618                                                                if (data[3][pos][k].length > (CC_visual == 'table'  ? 50 : 20))
2619                                                                {
2620                                                                        Element(id+':'+data[2][k]).innerHTML = data[5] + ''+data[3][pos][k]+'::'+data[3][pos][6] +'\')">'+adjustString(data[3][pos][k], (CC_visual == 'table'  ? 50 : 20))+'</span>';
2621                                                                        Element(id+':'+data[2][k]).title = data[3][pos][k];
2622                                                                }
2623                                                                else
2624                                                                {
2625                                                                        Element(id+':'+data[2][k]).innerHTML = data[5] + ''+data[3][pos][k]+(data[3][pos][6] ? '::'+data[3][pos][6] : "") + '\')">'+data[3][pos][k]+'</span>';
2626                                                                }
2627                                                                break;
2628
2629                                                        case 'cc_contacts':
2630
2631                                                                var id_group = data[3][pos][k-1];
2632                                                                var title = data[3][pos][k-3];
2633                                                                contacts = data[3][pos][k];
2634                                                                var contact = "";
2635                                                                var email = "";
2636
2637                                                                for (var d = 0; d < contacts.length; d++) {
2638                                                                        contact += contacts[d]['names_ordered']+ ",";
2639                                                                        email += contacts[d]['connection_value']+",";
2640                                                                }
2641
2642                                                                Element(id+':cc_participantes').innerHTML = '<span title="Ver Participantes" id="' + id + ':ccQuickAdd" onmouseout="window.status=\'\';" onclick="ccListParticipants.showList(\''+ Element(id+':cc_id').value+'value\', \''+contact+'\', \''+email+'\', \''+title+'\', \''+id_group+'\');return true;" style="cursor: pointer; cursor: hand; z-index: 1"><img title="Ver participantes" align="center" src="templates/default/images/people-mini.png">&nbsp;&nbsp</span>';
2643
2644                                                                break;
2645
2646                                                        case 'cc_id':
2647                                                                var id_contact = data[3][pos][k];
2648                                                                Element(id+':'+data[2][k]).value = data[3][pos][k];
2649
2650                                                                break;
2651
2652                                                }
2653                                        }
2654                                }
2655
2656                                if (type == "shared_groups") {
2657                                       
2658                                        if (data[3][pos][4] & 4)
2659                                                eval("document.getElementById(id + ':cc_card_edit').onclick = function(){editSharedGroup(Element('"+id+"' + ':cc_id').value,"+data[3][pos][7]+");};");
2660                                        else
2661                                                document.getElementById(id + ':cc_card_edit').onclick = function(){     alert(Element('cc_msg_not_allowed').value); };
2662                                                                               
2663                                        if (data[3][pos][4] & 8)
2664                                                eval("document.getElementById(id + ':cc_card_remove').onclick = function(){removeEntry(Element('" + id + "' + ':cc_id').value,'groups');};");
2665                                        else
2666                                                document.getElementById(id + ':cc_card_remove').onclick = function(){
2667                                                        alert(Element('cc_msg_not_allowed').value);
2668                                                };
2669                                }                               
2670
2671                                if (--ncards == 0)
2672                                {
2673                                        j = CC_max_cards[0];
2674                                        i = CC_max_cards[1];
2675                                }
2676
2677                                pos++;
2678                        }
2679                }
2680        }
2681}
2682
2683function adjustString (str, max_chars)
2684{
2685        if (str.length > max_chars)
2686        {
2687                return str.substr(0,max_chars) + '...';
2688        }
2689        else
2690        {
2691                return str;
2692        }
2693}
2694
2695function setMaxCards (maxcards)
2696{
2697        CC_max_cards = maxcards;
2698        ncards = maxcards[0] * maxcards[1];
2699
2700        var handler = function (responseText)
2701        {
2702                showMessage('ok');
2703        };
2704
2705        Connector.newRequest('setMaxCards', '../index.php?menuaction=contactcenter.ui_data.data_manager&method=set_n_cards&ncards=' + ncards, 'GET');
2706}
2707
2708function getMaxCards ()
2709{
2710        var coord = new Array();
2711
2712        card_space_width = parseInt(Element('cc_main').offsetWidth) - parseInt(Element('cc_left').offsetWidth) - parseInt(CC_card_extra);
2713        card_space_height = parseInt(Element('cc_card_space').offsetHeight) - parseInt(CC_card_extra);
2714
2715        card_width = CC_card_image_width + CC_card_extra;
2716        card_height = CC_card_image_height + CC_card_extra;
2717
2718        ncols = parseInt(card_space_width / card_width);
2719        nlines = parseInt(card_space_height / card_height);
2720
2721        coord[0] = ncols;
2722        coord[1] = 10;
2723
2724        return coord;
2725}
2726
2727function getCardHTML (id, type)
2728{
2729                if(type == 'groups' || type == 'shared_groups') {
2730                        html_card = '<td id="' + id + '" style="width: ' + CC_card_image_width + 'px; height: ' + CC_card_image_height + '">' +
2731            '<div style="border: 0px solid #999; position: relative;">' +
2732                                '<img src="templates/default/images/card.png" border="0" width="' + CC_card_image_width +'" height="' + CC_card_image_height + '"i ondblclick="editContact(Element(\'' + id + ':cc_id\').value);">' +
2733                                '<img title="'+Element('cc_msg_group_edit').value+'" id="' + id + ':cc_card_edit" style="position: absolute; top: 35px; left: 222px; width: 18px; height: 18px; cursor: pointer; cursor: hand; z-index: 1" onclick="editGroup(Element(\'' + id + ':cc_id\').value);" onmouseover="resizeIcon(\''+id+':cc_card_edit\',0)" onmouseout="resizeIcon(\''+id+':cc_card_edit\',1)" src="templates/default/images/cc_card_edit.png">' +
2734                                '<img title="'+Element('cc_msg_group_remove').value+'" id="' + id + ':cc_card_remove" style="position: absolute; top: 78px; left: 223px; width: 15px; height: 14px; cursor: pointer; cursor: hand; z-index: 1" onclick="removeEntry(Element(\'' + id + ':cc_id\').value,\'groups\');" onmouseover="resizeIcon(\''+id+':cc_card_remove\',0)" onmouseout="resizeIcon(\''+id+':cc_card_remove\',1)" src="templates/default/images/cc_x.png">' +
2735                                '<span id="' + id + ':cc_title" style="position: absolute; top: 30px; left: 75px; width: 135px; border: 0px solid #999; font-weight: bold; font-size: 10px; text-align: center; height: 10px;" onmouseover="//Element(\''+id+':cc_name_full\').style.visibility=\'visible\'" onmouseout="//Element(\''+id+':cc_name_full\').style.visibility=\'hidden\'"></span>' +
2736                                '<span id="' + id + ':cc_participantes" style="cursor: pointer; cursor: hand; z-index: 1;position: absolute; top: 15px; left: 15px"></span>' +
2737                                '<span onMouseOver="this.title = \''+Element('cc_send_mail').value+'\'" id="' + id + ':cc_short_name" style="position: absolute; top: 105px; left: 75px; width: 135px; border: 0px solid #999; font-weight: normal; font-size: 10px; text-align: center; height: 10px;"></span>' +
2738                                '<input id="' + id + ':cc_id" type="hidden">' +
2739                        '</div>' + '</td>';
2740
2741                }
2742                else {
2743                        html_card = '<td id="' + id + '" style="width: ' + CC_card_image_width + 'px; height: ' + CC_card_image_height + '">' +
2744                                '<div style="border: 0px solid #999; position: relative;">' +
2745                                        '<img src="templates/default/images/card.png" border="0" width="' + CC_card_image_width +'" height="' + CC_card_image_height + '"i ondblclick="editContact(Element(\'' + id + ':cc_id\').value);">' +
2746                                                ( ccTree.catalog_perms == 1 ?
2747                                                '<span id="' + id + ':cc_icon_data" style="position: absolute; top: 35px; left: 222px; width: 18px; height: 18px; cursor: pointer; cursor: hand; z-index: 1"></span>':'') +
2748                                                (ccTree.catalog_perms & 2 ?
2749                                                '<img title="'+Element('cc_msg_card_edit').value+'" id="' + id + ':cc_card_edit" style="position: absolute; top: 35px; left: 222px; width: 18px; height: 18px; cursor: pointer; cursor: hand; z-index: 1" onclick="editContact(Element(\'' + id + ':cc_id\').value);" onmouseover="resizeIcon(\''+id+':cc_card_edit\',0)" onmouseout="resizeIcon(\''+id+':cc_card_edit\',1)" src="templates/default/images/cc_card_edit.png">' +
2750                                                '<img title="'+Element('cc_msg_card_remove').value+'" id="' + id + ':cc_card_remove" style="position: absolute; top: 78px; left: 223px; width: 15px; height: 14px; cursor: pointer; cursor: hand; z-index: 1" onclick="removeEntry(Element(\'' + id + ':cc_id\').value);" onmouseover="resizeIcon(\''+id+':cc_card_remove\',0)" onmouseout="resizeIcon(\''+id+':cc_card_remove\',1)" src="templates/default/images/cc_x.png">' : '') +
2751                                                '<img id="' + id + ':cc_photo" style="position: absolute; top: 15px; left: 7px;" src="" border="0" ondblclick="editContact(Element(\'' + id + ':cc_id\').value);">' +
2752                                                '<span id="' + id + ':cc_company" style="position: absolute; top: 5px; left: 75px; width: 135px; border: 0px solid #999; font-weight: bold; font-size: 10px; text-align: center; height: 10px;" onmouseover="//Element(\''+id+':cc_company_full\').style.visibility=\'visible\'" onmouseout="//Element(\''+id+':cc_company_full\').style.visibility=\'hidden\'"></span>' +
2753                                                '<span style="cursor: pointer; cursor: hand; z-index: 1;position: absolute; top: 100px; left: 35px"  valign="bottom" id="' + id + ':cc_icon_group">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>'+
2754                                                //Para exibir a matricula do empregado nos cartoes
2755                                                '<span id="' + id + ':cc_empNumber" style="position: absolute; top: 20px; left: 75px; width: 135px; border: 0px solid #999; font-weight: normal; font-size: 9px; text-align: center; height: 10px;"></span>' +
2756                                                '<span id="' + id + ':cc_name" style="position: absolute; top: 30px; left: 75px; width: 135px; border: 0px solid #999; font-weight: bold; font-size: 10px; text-align: center; height: 10px;" onmouseover="//Element(\''+id+':cc_name_full\').style.visibility=\'visible\'" onmouseout="//Element(\''+id+':cc_name_full\').style.visibility=\'hidden\'"></span>' +
2757                                                '<span id="' + id + ':cc_title" style="position: absolute; top: 90px; left: 75px; width: 135px; border: 0px solid #999; font-weight: normal; font-size: 12px; text-align: center; height: 10px;"></span>' +
2758                                                //Para exibir o setor/lotacao do empregado nos cartoes
2759                                                '<span id="' + id + ':cc_department" style="position: absolute; top: 60px; left: 75px; width: 135px; border: 0px solid #999; font-weight: normal; font-size: 10px; text-align: center; height: 10px;"></span>' +
2760                                                '<span id="' + id + ':cc_phone" style="position: absolute; top: 75px; left: 75px; width: 135px; border: 0px solid #999; font-weight: normal; font-size: 10px; text-align: center; height: 10px;"></span>' +
2761                                                //Para exibir o celular empresarial do empregado na tabela
2762                                                '<span id="' + id + ':cc_mobile" style="position: absolute; top: 90px; left: 75px; width: 135px; border: 0px solid #999; font-weight: normal; font-size: 10px; text-align: center; height: 10px;"></span>' +
2763                                                '<span id="' + id + ':cc_mail" style="position: absolute; top: 105px; left: 75px; width: 135px; border: 0px solid #999; font-weight: normal; font-size: 10px; text-align: center; height: 10px;"></span>' +
2764                                                '<span id="' + id + ':cc_alias" style="position: absolute; top: 95px; left: 10px; width: 60px; border: 0px solid #999; font-weight: normal; font-size: 9px; text-align: center; height: 10px;"></span>' +
2765                                        '<input id="' + id + ':cc_id" type="hidden">' +
2766                                '</div>' + '</td>';
2767                }
2768
2769        return html_card;
2770}
2771
2772function getTableHTML (id, type)
2773{
2774                        var bg = "";
2775                        if(!is_ie)
2776                                bg = "this.style.background=\'\'";
2777                        else
2778                                bg = "this.style.background=\'#EEEEEE\'";
2779                        if(type == 'groups' || type == 'shared_groups') {
2780                                html_card = '<tr width="40%" id="' + id + '" onmouseout="'+bg+'" onmouseover="this.style.background=\'LIGHTYELLOW\'" bgcolor="EEEEEE"><td width="auto" style="font-weight: normal; font-size: 10px; text-align: left; height: 10px;">' +
2781                                        '<span id="' + id + ':cc_participantes" style="cursor: pointer; cursor: hand; z-index: 1"></span>' +
2782                                        '<span id="' + id + ':cc_title"></span></td>' +
2783                                        '<td width="40%" style="solid #999; font-weight: normal; font-size: 10px; text-align: left; height: 10px"><span id="' + id + ':cc_short_name"></span></td>' +
2784                                        '<td align="center" width="10%">'+
2785                                        '<img  title="'+Element('cc_msg_group_edit').value+'" id="' + id + ':cc_card_edit" style=" cursor: pointer; cursor: hand; z-index: 1;width: 18px; height: 18px;"  onclick="editGroup(Element(\'' + id + ':cc_id\').value);" src="templates/default/images/cc_card_edit.png">' +
2786                                        '&nbsp;&nbsp;|&nbsp;&nbsp;'+
2787                                        '<img  title="'+Element('cc_msg_group_remove').value+'" id="' + id + ':cc_card_remove" style="width: 15px; height: 14px; cursor: pointer; cursor: hand; z-index: 1" onclick="removeEntry(Element(\'' + id + ':cc_id\').value,\'groups\');" src="templates/default/images/cc_x.png">'  +
2788                                        '<input id="' + id + ':cc_id" type="hidden">'+
2789                                        '</td></tr>';
2790            }
2791            else {
2792                                html_card = '<tr  style="height:20px" id="' + id + '" onmouseout="'+bg+'" onmouseover="this.style.background=\'LIGHTYELLOW\'" bgcolor="EEEEEE">' +
2793                                        //Para exibir a matricula do empregado na tabela
2794                                        (preferences.empNumShow && ccTree.catalog_perms == 1 ? '<td align="center" width="10%" name="cc_name_empNumber" nowrap><span style="solid #999; font-weight: normal; font-size: 10px;height: 10px" id="' + id + ':cc_empNumber"></span></td>' : '') +
2795                                        '<td width="auto" style="font-weight: normal; font-size: 10px; text-align: left; height: 10px;"><span valign="bottom" id="' + id + ':cc_icon_group">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="' + id + ':cc_name"></span></td>' +
2796                                        '<td width="20%" align="center" name="cc_name_send_mail" style="solid #999; font-weight: normal; font-size: 10px; height: 10px"><span onMouseOver="this.title = \''+Element('cc_send_mail').value+' => '+'\'+document.getElementById(\''+id + ':cc_name\').innerHTML" id="' + id + ':cc_mail"></span></td>' +
2797                                        '<td width="20%" align="center" name="cc_name_phone" nowrap><span style="solid #999; font-weight: normal; font-size: 10px;height: 10px" id="' + id + ':cc_phone"></span></td>' +
2798                                        //Para exibir o celular empresarial do empregado na tabela
2799                                        (preferences.cellShow && ccTree.catalog_perms == 1 ?    '<td align="center" name="cc_name_mobile" nowrap><span style="solid #999; font-weight: normal; font-size: 10px;height: 10px" id="' + id + ':cc_mobile"></span></td>' : '') +
2800                                        //Para exibir o setor/lotacao do empregado na tabela
2801                                        (preferences.departmentShow && ccTree.catalog_perms == 1 ? '<td align="center" name="cc_name_title" nowrap><span style="solid #999; font-weight: normal; font-size: 10px;height: 10px" id="' + id + ':cc_title"></span></td>' : '') +
2802                                        ( ccTree.catalog_perms == 1 ?
2803                                        '<td align="center" width="10%"><span valign="bottom" id="' + id + ':cc_icon_data"></span></td>':'') +                                 
2804                                        (ccTree.catalog_perms & 2 ?
2805                                        '<td align="center" width="10%" >'+
2806                                        '<img  title="'+Element('cc_msg_card_edit').value+'" id="' + id + ':cc_card_edit" style=" cursor: pointer; cursor: hand; z-index: 1;width: 18px; height: 18px;"  onclick="editContact(Element(\'' + id + ':cc_id\').value);" src="templates/default/images/cc_card_edit.png">' +
2807                                        '&nbsp;&nbsp;|&nbsp;&nbsp;'+
2808                                        '<img title="'+Element('cc_msg_card_remove').value+'" id="' + id + ':cc_card_remove" style="width: 15px; height: 14px; cursor: pointer; cursor: hand; z-index: 1" onclick="removeEntry(Element(\'' + id + ':cc_id\').value);" src="templates/default/images/cc_x.png">' : '') +
2809                                        '<input id="' + id + ':cc_id" type="hidden">'+
2810                                        '<input type="hidden" id="' + id + ':cc_photo">' +
2811                                        //'<span id="' + id + ':cc_mobile" style="display:none"></span>' +
2812                                        '<span id="' + id + ':cc_alias" style="display:none"></span>' +
2813                                        // Esse campo é necessário se o contato possui dados no campo cc_company
2814                                        '<span id="' + id + ':cc_company" style="display:none"></span>' +
2815                                        '</td></tr>';
2816                        }
2817
2818        return html_card;
2819}
2820
2821function drawTable(ncards, type)
2822{
2823        var pos;
2824
2825        html_cards = '<div id="divScrollMain" style="overflow:auto;z-index:1"><table width="100%" border="0" cellpadding="0" cellspacing="3">';
2826
2827        if (ncards > 0)
2828        {
2829
2830                for (var i = 0; i < CC_max_cards[1]; i++)
2831                {
2832                        html_cards += '';
2833                        for (var j = 0; j < CC_max_cards[0]; j++)
2834                        {
2835                                html_cards += getTableHTML('cc_card:' + j + ':' + i, type);
2836                                if (--ncards == 0)
2837                                {
2838                                        j = CC_max_cards[0];
2839                                        i = CC_max_cards[1];
2840                                }
2841                        }
2842                        html_cards += '';
2843                }
2844                if((ccTree.catalog_perms & 2) && type != 'groups' && type !='shared_contacts' && type !='shared_groups')
2845                        html_cards += '<tr><td colspan=4 align="right"><button id="cc_button_tools" value="" type="button" onclick="javascript:removeAllEntries()">Remover Todos</button></td></tr>';
2846        }
2847        else if (CC_max_cards != 0)
2848        {
2849                html_cards += '<tr><td  align="center">' + Element('cc_msg_no_cards').value + '</td></tr>';
2850        }
2851        else
2852        {
2853                html_cards += '<tr><td  align="center">' + Element('cc_msg_err_no_room').value + '</td></tr>';
2854        }
2855
2856        html_cards += '</table></div>';
2857
2858        Element('cc_card_space').innerHTML = html_cards;
2859}
2860
2861function drawCards(ncards, type)
2862{
2863        var pos;
2864        html_cards = '<div id="divScrollMain" style="overflow:auto;z-index:1">';
2865        html_cards += '<table  border="0" cellpadding="0" cellspacing="' + CC_card_extra + '">';
2866
2867        if (ncards > 0)
2868        {
2869                for (var i = 0; i < CC_max_cards[1]; i++)
2870                {
2871                        html_cards += '<tr>';
2872                        for (var j = 0; j < CC_max_cards[0]; j++)
2873                        {
2874                                html_cards += getCardHTML('cc_card:' + j + ':' + i, type);
2875                                if (--ncards == 0)
2876                                {
2877                                        j = CC_max_cards[0];
2878                                        i = CC_max_cards[1];
2879                                }
2880                        }
2881                        html_cards += '</tr>';
2882                }
2883                if((ccTree.catalog_perms & 2) && type != 'groups' && type !='shared_contacts' && type !='shared_groups')
2884                        html_cards += '<tr><td colspan=3 align="right"><button id="cc_button_tools" value="" type="button" onclick="javascript:removeAllEntries()">Remover Todos</button></td></tr>';
2885        }
2886        else if (CC_max_cards != 0)
2887        {
2888                html_cards += '<tr><td>' + Element('cc_msg_no_cards').value + '</td></tr>';
2889        }
2890        else
2891        {
2892                html_cards += '<tr><td>' + Element('cc_msg_err_no_room').value + '</td></tr>';
2893        }
2894
2895        html_cards += '</table></div>';
2896
2897        Element('cc_card_space').innerHTML = html_cards;
2898}
2899
2900function showCards (letter,page, ids)
2901{
2902        var data  = new Array();
2903        flag_compartilhado = false;
2904        if ( letter != CC_actual_letter )
2905        {
2906                CC_actual_page = '1';
2907        }
2908        else
2909        {
2910                CC_actual_page = page;
2911        }
2912
2913        CC_actual_letter = letter;
2914
2915        if (CC_max_cards[0] == 0)
2916        {
2917
2918                if(CC_visual == 'cards')
2919                        drawCards(0);
2920                else if(CC_visual == 'table')
2921                        drawTable(0);
2922
2923                setPages(0,0);
2924                return;
2925        }
2926
2927        var handler = function (responseText)
2928        {
2929                var data = new Array();
2930                data = unserialize(responseText);
2931                if (data[0] == '0')
2932                {
2933                        Element('cc_type_contact').value = data[1];
2934                        CC_npages = 0;
2935                        CC_actual_page = 1;
2936                        if(CC_visual == 'cards')
2937                                drawCards(0);
2938                        else if(CC_visual == 'table')
2939                                drawTable(0);
2940                        setPages(0,0);
2941                        return;
2942                }
2943                else
2944                Element('cc_type_contact').value = data[10];
2945
2946//              Element('cc_debug').innerHTML = responseText;
2947
2948                if (typeof(data) != 'object')
2949                {
2950                        showMessage(Element('cc_msg_err_contacting_server').value);
2951                        return;
2952                }
2953
2954                if (typeof(data[3]) == 'object')
2955                {
2956                        if (data[8] == 'bo_shared_people_manager')
2957                        {
2958                                flag_compartilhado = true;
2959                        }
2960                        else
2961                        {
2962                                flag_compartilhado = false;
2963                        }
2964                        qtd_compartilhado = data[9];
2965                        CC_npages = parseInt(data[0]);
2966                        CC_actual_page = parseInt(data[1]);
2967                        if(CC_visual == 'cards')
2968                                drawCards(data[3].length, data[10]);
2969                        else if(CC_visual == 'table')
2970                                drawTable(data[3].length, data[10]);
2971                        resizeWindow();
2972                        populateCards(data, data[10]);
2973                        setPages(data[0], data[1]);
2974
2975                }
2976                else if (data['error'])
2977                {
2978                        showMessage(data['error']);
2979                }
2980                else
2981                {
2982                        showMessage(Element('cc_msg_err_contacting_server').value);
2983                        return;
2984                }
2985        };
2986
2987        var info = "letter="+letter+"&page="+CC_actual_page+"&ids="+ids;
2988        Connector.newRequest('showCards', '../index.php?menuaction=contactcenter.ui_data.data_manager&method=get_cards_data', 'POST', handler, info);
2989}
2990
2991
2992function clearCards()
2993{
2994        clearLetterSelection();
2995        setHeightSpace();
2996        setMaxCards(getMaxCards());
2997
2998        if(CC_visual == 'cards')
2999                drawCards(0);
3000        else if(CC_visual == 'table')
3001                drawTable(0);
3002
3003        setPages(0,0);
3004        return;
3005}
3006
3007/***********************************************\
3008*        COMMON ENTRY FUNCTIONS                *
3009\***********************************************/
3010
3011function ccChangeVisualization(type)
3012{
3013        var table_h = Element('cc_panel_table');
3014        var cards_h = Element('cc_panel_cards');
3015
3016        switch (type)
3017        {
3018                case 'cards':
3019                        cards_h.style.display = 'none';
3020                        table_h.style.display = 'inline';
3021                        break;
3022
3023                case 'table':
3024                        table_h.style.display = 'none';
3025                        cards_h.style.display = 'inline';
3026                        break;
3027        }
3028
3029        CC_visual = type;
3030        showCards(getActualLetter(), getActualPage());
3031}
3032
3033function ccSearchUpdate()
3034{
3035        Element('cc_panel_letters').style.display = 'none';
3036        Element('cc_panel_search').style.display  = 'inline';
3037
3038        if(CC_visual == 'cards')
3039                drawCards(0);
3040        else if(CC_visual == 'table')
3041                drawTable(0);
3042
3043        if (CC_actual_letter != 'search')
3044        {
3045                CC_last_letter = CC_actual_letter;
3046        }
3047}
3048
3049function ccSearchHidePanel()
3050{
3051        Element('cc_panel_search').style.display  = 'none';
3052        Element('cc_panel_letters').style.display = 'inline';
3053        if (CC_actual_letter == 'search')
3054        {
3055                CC_actual_letter = CC_last_letter;
3056        }
3057}
3058
3059function ccSearchHide()
3060{
3061        Element('cc_panel_search').style.display  = 'none';
3062        Element('cc_panel_letters').style.display = 'inline';
3063        clearCards();
3064}
3065
3066/***********************************************\
3067*               QUICK ADD FUNCTIONS             *
3068\***********************************************/
3069
3070
3071function resetQuickAdd ()
3072{
3073        Element('cc_qa_alias').value = '';
3074        Element('cc_qa_given_names').value = '';
3075        Element('cc_qa_family_names').value = '';
3076        Element('cc_qa_phone').value = '';
3077        Element('cc_qa_email').value = '';
3078}
3079
3080function getQuickAdd ()
3081{
3082        var data = new Array();
3083        data[0] = Element('cc_qa_alias').value;
3084        data[1] = Element('cc_qa_given_names').value;
3085        data[2] = Element('cc_qa_family_names').value;
3086        data[3] = Element('cc_qa_phone').value;
3087        data[4] = Element('cc_qa_email').value;
3088
3089        return data;
3090}
3091
3092function sendQuickAdd ()
3093{
3094        var data = getQuickAdd();
3095
3096        var str = serialize(data);
3097
3098        if (!str)
3099        {
3100                return false;
3101        }
3102
3103        var handler = function (responseText)
3104        {
3105                setTimeout('updateCards()',100);;
3106        }
3107
3108        resetQuickAdd();
3109
3110        Connector.newRequest('quickAdd', '../index.php?menuaction=contactcenter.ui_data.data_manager&method=quick_add', 'POST', handler, 'add='+escape(str));
3111}
3112
3113       
3114function connectVoip (phoneUser, typePhone){
3115        var handler_voip = function (responseText){
3116                if(!responseText) {
3117                        alert("Erro conectando servidor VoIP.");
3118                }
3119                else{
3120                    data = unserialize(responseText);
3121                        alert("Requisitando chamada para o ramal: "+data);
3122        }
3123        }
3124        Connector.newRequest('voip', "../../expressoMail1_2/controller.php?action=expressoMail1_2.functions.callVoipconnect&to="+phoneUser+"&typePhone="+typePhone, 'POST', handler_voip);
3125        }
Note: See TracBrowser for help on using the repository browser.