source: trunk/workflow/js/orgchart/organization.js @ 7372

Revision 7372, 43.3 KB checked in by rafaelgobara, 12 years ago (diff)

Ticket #3080 - Ajuste no selectbox e no lightbox do organograma

  • Property svn:executable set to *
Line 
1String.prototype.repeat = function(l)
2{
3        return new Array(l+1).join(this);
4};
5
6var workflowOrgchartAdminEmployeeInfoTimer = null;
7var workflowOrgchartAdminAreaInfoTimer = null;
8
9var CadastroAjax = Class.create();
10
11CadastroAjax.prototype =
12{
13        initialize: function()
14        {
15                this.name = '';
16                this.required = new Array();
17                this.tableHeader = new Array();
18                this.combo = new Array();
19        },
20
21        add: function()
22        {
23                for (var i = 0; i < this.required.length; i++)
24                {
25                        if ($F(this.required[i]) == '')
26                        {
27                                alert("Campo necessário ausente: " + $(this.required[i]).parentNode.parentNode.childNodes[0].childNodes[0].innerHTML);
28                                $(this.required[i]).focus();
29                                return;
30                        }
31                }
32                var cb = function(data)
33                {
34                        if (!handleError(data))
35                                return;
36
37                        /* update the screen info */
38                        if (this.name.toLowerCase() == "organization")
39                                listOrganizations();
40                        else
41                        {
42                                if ($('organizacao_id'))
43                                {
44                                        var index = $F('organizacao_id');
45                                        if (refreshAreas[index])
46                                                refreshAreas[index]();
47                                }
48                        }
49
50                        valid.deactivate();
51                };
52
53                return this.ajaxAction('add', cb, Form.serialize($('orgchartForm')));
54        },
55
56        update: function()
57        {
58                for (var i = 0; i < this.required.length; i++)
59                {
60                        if ($F(this.required[i]) == '')
61                        {
62                                alert("Campo necessário ausente: " + $(this.required[i]).parentNode.parentNode.childNodes[0].childNodes[0].innerHTML);
63                                $(this.required[i]).focus();
64                                return;
65                        }
66                }
67                var cb = function(data)
68                {
69                        if (!handleError(data))
70                                return;
71
72                        /* update the screen info */
73                        if (this.name.toLowerCase() == "organization")
74                                listOrganizations();
75                        else
76                        {
77                                if ($('organizacao_id'))
78                                {
79                                        var index = $F('organizacao_id');
80                                        if (refreshAreas[index])
81                                                refreshAreas[index]();
82                                }
83                        }
84
85                        valid.deactivate();
86                };
87
88                return this.ajaxAction('update', cb, Form.serialize($('orgchartForm')));
89        },
90
91        remove: function(params, linkRemove)
92        {
93
94                if (linkRemove.addClassName)
95                        linkRemove.addClassName('alerta');
96                if (confirm("Tem certeza que deseja excluir o registro selecionado?"))
97                {
98                        var cb = function(data)
99                        {
100                                if (!handleError(data))
101                                        return;
102
103                                /* update the screen info */
104                                if (this.name.toLowerCase() == "organization")
105                                        listOrganizations();
106                                else
107                                {
108                                        var index = $('organizacao_id') ? $F('organizacao_id') : params['organizacao_id'];
109                                        if (refreshAreas[index])
110                                                refreshAreas[index]();
111                                }
112
113                                if ($('lbContent'))
114                                        valid.deactivate();
115                        };
116                        return this.ajaxAction('remove', cb, $H(params).toQueryString());
117                }
118                else
119                        if (linkRemove.removeClassName)
120                                linkRemove.removeClassName('alerta');
121        },
122
123        list: function(callback, params)
124        {
125                return this.ajaxAction('list', callback, $H(params).toQueryString());
126        },
127
128        generateTable: function(params, displayArea)
129        {
130                tableHeader = this.tableHeader;
131                var tableResult = function(data)
132                {
133                        if (!handleError(data))
134                                return;
135
136                        if (data.length == 0)
137                        {
138                                displayArea.innerHTML += '<br/><br/><center><strong>Nenhum registro encontrado</strong></center>';
139                                return true;
140                        }
141
142                        for (var i = 0; i < data.length; i++)
143                        {
144                                data[i]['tr_attributes'] = new Array();
145                                data[i]['tr_attributes']['class'] = "linha" + i%2;;
146                                data[i]['tr_attributes']['className'] = "linha" + i%2;;
147                        }
148
149                        var tableAtributes = new Array();
150                        tableAtributes['id'] = this.name + 'List';
151                        tableAtributes['class'] = 'organizationList';
152                        tableAtributes['className'] = 'organizationList';
153                        displayArea.appendChild(constructTable(tableHeader, data, tableAtributes));
154                };
155                this.list(tableResult, params);
156        },
157
158        generateUpdateTable: function(params, displayArea)
159        {
160                tableHeader = this.tableHeader;
161                if (!tableHeader['actions'])
162                        tableHeader['actions'] = "Ações";
163                name = this.name.charAt(0).capitalize() + this.name.substr(1);
164                var tableResult = function(data)
165                {
166                        if (!handleError(data))
167                                return;
168
169                        if (data.length == 0)
170                        {
171                                //displayArea.innerHTML += '<br/><br/><center><strong>Nenhum registro encontrado</strong></center>';
172                                elem = document.createElement('div');
173                                elem.id = this.name.capitalize() + 'List';
174                                elem.innerHTML = '<br/><br/><center><strong>Nenhum registro encontrado</strong></center>';
175                                displayArea.appendChild(elem);
176                                return true;
177                        }
178
179                        for (var i = 0; i < data.length; i++)
180                        {
181                                var dataHash = new Hash();
182                                for (j in data[i])
183                                        if (typeof data[i][j] != "function")
184                                        {
185                                                dataHash[j] = data[i][j];
186                                                if ( dataHash[j] == null )
187                                                        dataHash[j] = '';
188                                        }
189
190                                for (j in tableHeader)
191                                        if (typeof tableHeader[j] != "function")
192                                                if (j != 'actions')
193                                                        data[i][j] = '<a href="#" onclick="obj' + name + '.fillForm(' + dataHash.customInspect() + '); return false;">' + data[i][j] + '</a>';
194
195                                data[i]['tr_attributes'] = new Array();
196                                data[i]['tr_attributes']['class'] = "linha" + i%2;
197                                data[i]['tr_attributes']['className'] = "linha" + i%2;
198                                data[i]['actions'] = '<a href="#" onclick="obj' + name + '.remove(' + dataHash.customInspect() + ' , this.parentNode.parentNode); return false;"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/button_cancel.png" /></a>';
199                        }
200
201                        var tableAtributes = new Array();
202                        tableAtributes['id'] = this.name + 'List';
203                        tableAtributes['class'] = 'orgchartUpdateTable';
204                        tableAtributes['className'] = 'orgchartUpdateTable';
205                        displayArea.appendChild(constructTable(tableHeader, data, tableAtributes));
206                };
207                this.list(tableResult, params);
208        },
209
210        fillForm: function(dataHash)
211        {
212                dataHash = $H(dataHash);
213                dataHash.each(function(pair)
214                {
215                        var campo = $(pair.key);
216                        if (campo)
217                        {
218                                if ((campo.nodeName == "SELECT") && (pair.value == null))
219                                        campo.value = campo.firstChild.value;
220                                else
221                                        if (pair.value != null)
222                                                campo.value = pair.value;
223                        }
224                        else
225                                new Insertion.Bottom($('orgchartForm'), '<input type="hidden" name="' + pair.key + '" id="' + pair.key + '" value="' + pair.value + '" />');
226                });
227                if (!$('updateOrgchart'))
228                        new Insertion.Bottom($('orgchartForm'), '<input type="hidden" name="updateOrgchart" id="updateOrgchart" value="true" />');
229                var saveButton = $('inserir');
230                saveButton.innerHTML = "Salvar";
231                var name = this.name;
232                saveButton.onclick = function(){ eval('obj' + name.charAt(0).capitalize() + name.substr(1) + '.update();')};
233                var titleObject = $('modalTitle');
234                var title = titleObject.innerHTML.split(' ');
235                title[0] = "Atualizar";
236                titleObject.innerHTML = title.join(' ');
237                $('lightbox').scrollTop = 0;
238        },
239
240        generateComboBox: function(params, displayArea, includeNull, name, callback)
241        {
242                if (!name)
243                        name = this.combo['id'];
244               
245                combo = this.combo;
246
247                var comboResult = function(data)
248                {
249                        if (!handleError(data))
250                                return;
251
252                        var newFormat = new Array();
253                        if (includeNull)
254                                newFormat['NULL'] = "Nenhum";
255
256                        for (var i = 0; i < data.length; i++)
257                                newFormat[data[i][combo['id']]] = data[i][combo['name']];
258
259                        if ((newFormat.length > 0) || includeNull)
260                        {
261                                displayArea.innerHTML = constructSelectBox(name, newFormat);
262                        }
263                        else
264                        {
265                                displayArea.innerHTML = '<i>nenhum registro encontado</i><input type="hidden" id="' + name + '" value=""/>';
266                        }
267
268                        if (callback)
269                                callback();
270                };
271
272                this.list(comboResult, params);
273        },
274
275        ajaxAction: function(action, callback, params)
276        {
277                if (params == "")
278                        cExecute('$this.bo_orgchart.' + action + this.name.charAt(0).capitalize() + this.name.substr(1), callback);
279                else
280                        cExecute('$this.bo_orgchart.' + action + this.name.charAt(0).capitalize() + this.name.substr(1), callback, params);
281        }
282
283};
284
285var CadastroOrganization =
286{
287        name: 'organization',
288        required: new Array('nome', 'descricao', 'ativa'),
289        tableHeader: {'nome': 'Organização'},
290        combo: {'id': 'organizacao_id', 'name': 'nome'}
291};
292var objOrganization = new CadastroAjax();
293Object.extend(objOrganization, CadastroOrganization);
294
295var CadastroEmployeeStatus =
296{
297        name: 'employeeStatus',
298        required: new Array('descricao', 'exibir'),
299        tableHeader: {'descricao': 'Status de Funcionário'},
300        combo: {'id': 'funcionario_status_id', 'name': 'descricao'}
301};
302var objEmployeeStatus = new CadastroAjax();
303Object.extend(objEmployeeStatus, CadastroEmployeeStatus);
304
305var CadastroEmployeeCategory =
306{
307        name: 'employeeCategory',
308        required: new Array('organizacao_id', 'descricao'),
309        tableHeader: {'descricao': 'Nome'},
310        combo: {'id': 'funcionario_categoria_id', 'name': 'descricao'}
311};
312var objEmployeeCategory = new CadastroAjax();
313Object.extend(objEmployeeCategory, CadastroEmployeeCategory);
314
315var CadastroJobTitle =
316{
317        name: 'jobTitle',
318        required: new Array('organizacao_id', 'descricao'),
319        tableHeader: {'descricao': 'Nome'},
320        combo: {'id': 'cargo_id', 'name': 'descricao'}
321};
322var objJobTitle = new CadastroAjax();
323Object.extend(objJobTitle, CadastroJobTitle);
324
325var CadastroAreaStatus =
326{
327        name: 'areaStatus',
328        required: new Array('organizacao_id', 'descricao', 'nivel'),
329        tableHeader: {'descricao': 'Nome', 'nivel': 'Nível'},
330        combo: {'id': 'area_status_id', 'name': 'descricao'}
331};
332var objAreaStatus = new CadastroAjax();
333Object.extend(objAreaStatus, CadastroAreaStatus);
334
335var CadastroCostCenter =
336{
337        name: 'costCenter',
338        required: new Array('organizacao_id', 'nm_centro_custo', 'descricao', 'grupo'),
339        tableHeader: {'nm_centro_custo': 'Número', 'descricao': 'Nome', 'grupo': 'Grupo'},
340        combo: {'id': 'centro_custo_id', 'name': 'descricao'}
341};
342var objCostCenter = new CadastroAjax();
343Object.extend(objCostCenter, CadastroCostCenter);
344
345var CadastroLocal =
346{
347        name: 'local',
348        required: new Array('organizacao_id', 'descricao'),
349        tableHeader: {'descricao': 'Localidade'},
350        combo: {'id': 'localidade_id', 'name': 'descricao'}
351};
352var objLocal = new CadastroAjax();
353Object.extend(objLocal, CadastroLocal);
354
355var CadastroEmployee =
356{
357        name: 'employee',
358        required: new Array('funcionario_id', 'organizacao_id', 'funcionario_status_id', 'centro_custo_id', 'localidade_id', 'area_id'),
359        tableHeader: {'funcionario_id': 'Funcionário'},
360        combo: {'id': 'funcionario_id', 'name': 'funcionario_id'}
361};
362var objEmployee = new CadastroAjax();
363Object.extend(objEmployee, CadastroEmployee);
364
365var CadastroArea =
366{
367        name: 'area',
368        required: new Array('organizacao_id', 'area_status_id', 'centro_custo_id', 'superior_area_id', 'sigla', 'descricao', 'ativa'),
369        tableHeader: {'sigla': 'Área'},
370        combo: {'id': 'area_id', 'name': 'sigla'}
371};
372var objArea = new CadastroAjax();
373Object.extend(objArea, CadastroArea);
374
375var CadastroTelefone =
376{
377        name: 'telephones',
378        required: new Array('organizacao_id', 'descricao', 'numero'),
379        tableHeader: {'descricao': 'Descrição', 'numero': 'Telefones'},
380        combo: {'id': 'telefone_id', 'name': 'descricao'}
381};
382var objTelephones = new CadastroAjax();
383Object.extend(objTelephones, CadastroTelefone);
384
385var CadastroSubstituto =
386{
387        name: 'substitution',
388        required: new Array('organizacao_id', 'area_id', 'descricao', 'titular_funcionario_id', 'substituto_funcionario_id', 'data_inicio', 'data_fim'),
389        tableHeader: {'substituto_funcionario_id_desc': 'Nome', 'data_inicio': 'Data de início', 'data_fim': 'Data de término'},
390        combo: {}
391};
392var objSubstitution = new CadastroAjax();
393Object.extend(objSubstitution, CadastroSubstituto);
394
395
396function createOrganizationLayout(organizationID, organizationDiv)
397{
398        organizationDiv.innerHTML = '<div id="orgchartMenu_' + organizationID + '"></div>';
399        organizationDiv.innerHTML += '<div class="orgchartAreas" id="orgchartAreas_' + organizationID + '"></div>';
400        organizationDiv.innerHTML += '<div class="orgchartEmployees" id="orgchartEmployees_' + organizationID + '"></div>';
401        organizationDiv.innerHTML += '<div class="orgchartFooter"></div>';
402        organizationDiv.innerHTML += '<div id="employeeInfo" class="employeeInfo" style="display: none;"></div>';
403        organizationDiv.innerHTML += '<div id="areaInfo" class="employeeInfo" style="display: none;"></div>';
404
405        createOrganizationMenu(organizationID, $('orgchartMenu_' + organizationID));
406        loadOrganizationAreas(organizationID, $('orgchartAreas_' + organizationID));
407        lb_initialize();
408}
409
410function createOrganizationMenu(organizationID, div)
411{
412        var content  = '<ul class="horizontalMenu">';
413                content += '<li style="margin: 5px 5px 0 5px">Atualizar : <select name="atualizar" id="ddlAtualizar" onchange="loadAdds(this.value, ' + organizationID + ');">';
414                content += '<option></option>';
415                content += '<option value="loadAddEmployeeStatusUI">Status de Funcionário</option>';
416                content += '<option value="loadAddEmployeeCategoryUI">Categorias</option>';
417                content += '<option value="loadAddJobTitleUI" class="lbOn">Cargos</option>';
418                content += '<option value="loadAddAreaStatusUI" class="lbOn">Status de Área</option>';
419                content += '<option value="loadAddCostCenterUI" class="lbOn">Centros de Custo</option>';
420                content += '<option value="loadAddLocalUI" class="lbOn">Localidade</option>';
421                content += '<option value="loadAddAreaUI" class="lbOn">Áreas</option>';
422                content += '<option value="loadAddEmployeeUI" class="lbOn">Funcionários</option>';
423                content += '<option value="loadAddTelephoneUI" class="lbOn">Telefones</option>';
424                content += '<option value="loadAddSubstitutionUI" class="lbOn">Substituições</option>';
425                content += '</select></li>';
426                content += '<li><a><input type="text" name="search_term" id="search_term" onkeypress="if (((window.Event) ? event.which : event.keyCode) == 13) $(\'search_span_' + organizationID  + '\').onclick(); return true;" /> <span id="search_span_' + organizationID + '" onclick="tmp = $$(\'div#orgchartAreas_' + organizationID + ' a.destaque\'); if (tmp[0]) tmp[0].removeClassName(\'destaque\'); searchEmployee(' + organizationID + ', $(\'orgchartEmployees_' + organizationID + '\')); return false;">busca</span></a></li>';
427                content += '</ul>';
428                content += '<br/>';
429                content += '<br/>';
430
431        div.innerHTML = content;
432}
433
434function loadAdds(eventName, organizationID)
435{
436        window.settings = { functionName: eventName };
437
438        var b = document.createElement('button');
439            b.className = 'lbOn';
440
441        if (!$('overlay'))
442                addLightboxMarkup();
443       
444        var valid = new lightbox(b);
445                valid.activate();
446
447        window[settings.functionName](organizationID);
448}
449
450function loadOrganizationAreas(organizationID, div)
451{
452        var loadOrganizationAreasResult = function(data)
453        {
454                function recursivePrint(subdata)
455                {
456                        for (var i = 0; i < subdata.length; i++)
457                        {
458                                div.innerHTML += '<br />' + '&nbsp;&nbsp;&nbsp;&nbsp;'.repeat(subdata[i]['depth']) + '<a href="javascript:void(0)" id="area_' + subdata[i]['area_id'] + '" onmouseover="getAreaInfoTimer(event, ' + subdata[i]['area_id'] + ', ' + organizationID + '); return false;" onmouseout="hideAreaInfo(); return false;" onclick="tmp = $$(\'div#orgchartAreas_' + organizationID + ' a.destaque\'); if (tmp[0]) tmp[0].removeClassName(\'destaque\'); this.addClassName(\'destaque\'); loadAreaEmployees(' + organizationID + ', ' + subdata[i]['area_id'] + ', $(\'orgchartEmployees_' + organizationID + '\'))">' + subdata[i]['sigla'] + '</a>';
459                                if (subdata[i]['children'].length > 0)
460                                        recursivePrint(subdata[i]['children']);
461                        }
462                }
463
464                if (!handleError(data))
465                        return;
466
467                if (data.length == 0)
468                {
469                        div.innerHTML = "<br/><br/><center><strong>Nenhuma área cadastrada.</strong></center><br/><br/>";
470                        return;
471                }
472
473                div.innerHTML = "<center><strong>ÁREAS</strong></center>";
474                recursivePrint(data);
475                if (refreshEmployees[organizationID])
476                        refreshEmployees[organizationID]();
477        };
478
479        objArea.ajaxAction('listHierarchical', loadOrganizationAreasResult, $H({'organizacao_id': organizationID}).toQueryString());
480        refreshAreas[organizationID] = function(){objArea.ajaxAction('listHierarchical', loadOrganizationAreasResult, $H({'organizacao_id': organizationID}).toQueryString());};
481}
482
483function searchEmployee(organizationID, div)
484{
485        var searchEmployeeResult = function(data)
486        {
487                if (!handleError(data))
488                        return;
489
490                div.innerHTML = "";
491                if (data.length == 0)
492                {
493                        div.innerHTML = "<br/><br/><center><strong>Nenhum funcionário encontrado.</strong></center>";
494                        return;
495                }
496
497                var tableHeader = new Array();
498                tableHeader['funcionario_id_desc'] = 'Funcionário';
499                tableHeader['area_sigla'] = 'Área';
500                tableHeader['uid'] = 'UID';
501                tableHeader['actions'] = 'Ações';
502                for (var i = 0; i < data.length; i++)
503                {
504                        var dataHash = new Hash();
505                        for (j in data[i])
506                                if (typeof data[i][j] != "function")
507                                        dataHash[j] = data[i][j];
508
509                        data[i]['tr_attributes'] = new Array();
510                        data[i]['tr_attributes']['class'] = "linha" + i%2;
511                        data[i]['tr_attributes']['className'] = "linha" + i%2;
512                        data[i]['funcionario_id_desc'] = '<a href="javascript:void(0)" class="lbOn" onmouseover="getEmployeeInfoTimer(event, ' + data[i]['funcionario_id'] + ', ' + organizationID + '); return false;" onmouseout="hideEmployeeInfo(); return false;" onclick="loadAddEmployeeUI(' + organizationID + ', function(){objEmployee.fillForm(' + dataHash.customInspect() + ')}); $(\'addEmployeeLink\').parentNode.removeChild($(\'addEmployeeLink\')); return false;">' + data[i]['funcionario_id_desc'] + '</a>' + (data[i]['removed'] ? ' <font color="red">(inativo)</font>' : '');
513                        data[i]['actions'] = '<a href="#" onclick="objEmployee.remove({\'funcionario_id\': ' + data[i]['funcionario_id'] + ', \'organizacao_id\': ' + organizationID + '} , this.parentNode.parentNode); return false;"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/button_cancel.png" /></a>';
514                }
515
516                var tableAtributes = new Array();
517                tableAtributes['class'] = 'employeeList';
518                tableAtributes['className'] = 'employeeList';
519                div.appendChild(constructTable(tableHeader, data, tableAtributes));
520                lb_initialize();
521        };
522
523        objEmployee.ajaxAction('search', searchEmployeeResult, $H({'organizacao_id': organizationID, 'search_term': $F('search_term')}).toQueryString());
524        refreshEmployees[organizationID] = function(){objEmployee.ajaxAction('search', searchEmployeeResult, $H({'organizacao_id': organizationID, 'search_term': $F('search_term')}).toQueryString());};
525}
526
527function loadAreaEmployees(organizationID, areaID, div)
528{
529        var loadAreaEmployeesResult = function(data)
530        {
531                if (!handleError(data))
532                        return;
533
534                var areaLink = $('area_' + areaID);
535                if (!areaLink.hasClassName('destaque'))
536                        areaLink.addClassName('destaque');
537
538                div.innerHTML = "";
539                if (data.length == 0)
540                {
541                        div.innerHTML = "<br/><br/><center><strong>Nenhum funcionário alocado nesta área.</strong></center>";
542                        return;
543                }
544
545                var tableHeader = new Array();
546                tableHeader['funcionario_id_desc'] = 'Funcionário';
547                tableHeader['uid'] = 'UID';
548                tableHeader['actions'] = 'Ações';
549
550                var complement;
551                for (var i = 0; i < data.length; i++)
552                {
553                        var dataHash = new Hash();
554                        for (j in data[i])
555                                if (typeof data[i][j] != "function")
556                                        dataHash[j] = data[i][j];
557
558                        // are you a chief ('titular' or 'substituto')?
559                        complement = '';
560                        if (data[i]['chief'])
561                                complement = ' <strong>(' + ((data[i]['chief'] == 1) ? 'Titular' : 'Substituto') + ')</strong>';
562
563                        data[i]['tr_attributes'] = new Array();
564                        data[i]['tr_attributes']['class'] = "linha" + i%2;
565                        data[i]['tr_attributes']['className'] = "linha" + i%2;
566                        data[i]['funcionario_id_desc'] = '<a href="javascript:void(0)" class="lbOn" onmouseover="getEmployeeInfoTimer(event, ' + data[i]['funcionario_id'] + ', ' + organizationID + '); return false;" onmouseout="hideEmployeeInfo(); return false;" onclick="loadAddEmployeeUI(' + organizationID + ', function(){objEmployee.fillForm(' + dataHash.customInspect() + ')}); $(\'addEmployeeLink\').parentNode.removeChild($(\'addEmployeeLink\')); return false;">' + data[i]['funcionario_id_desc'] + ' ' + complement + '</a>' + (data[i]['removed'] ? ' <font color="red">(inativo)</font>' : '');
567                        data[i]['actions'] = '<a href="#" onclick="objEmployee.remove({\'funcionario_id\': ' + data[i]['funcionario_id'] + ', \'organizacao_id\': ' + organizationID + '} , this.parentNode.parentNode); return false;"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/button_cancel.png" /></a>';
568                        window.scrollTo(0,0);
569                }
570
571                var tableAtributes = new Array();
572                tableAtributes['class'] = 'employeeList';
573                tableAtributes['className'] = 'employeeList';
574                div.appendChild(constructTable(tableHeader, data, tableAtributes));
575
576                lb_initialize();
577        };
578
579        objEmployee.ajaxAction('listArea', loadAreaEmployeesResult, $H({'area_id': areaID, 'organizacao_id': organizationID}).toQueryString());
580        refreshEmployees[organizationID] = function(){objEmployee.ajaxAction('listArea', loadAreaEmployeesResult, $H({'area_id': areaID, 'organizacao_id': organizationID}).toQueryString());};
581}
582
583function loadAddEmployeeStatusUI(organizationID)
584{
585        var valoresSimNao = new Array();
586        valoresSimNao['S'] = 'Sim';
587        valoresSimNao['N'] = 'Não';
588
589        var content;
590        content = '<h2 id="modalTitle">Adicionar Status de Funcionário</h2>';
591        content += '<form name="orgchartForm" id="orgchartForm">';
592        content += '<input type="hidden" name="organizacao_id" id="organizacao_id" value="' + organizationID + '" />';
593        content += "<table>";
594        content += '<tr><td><label for="descricao">Nome</label></td><td><input type="text" name="descricao" id="descricao" size="30" /></td></tr>';
595        content += '<tr><td><label for="exibir">Exibir para o usuário</label></td><td>' + constructSelectBox('exibir', valoresSimNao) + '</td></tr>';
596        content += "</table>";
597        content += '</form>';
598        content += '<button id="inserir" onclick="objEmployeeStatus.add(); return false;">Inserir</button>';
599        content += '<button onclick="valid.deactivate(); return false;">Cancelar</button>';
600
601        var divLB = $('lbContent');
602        divLB.innerHTML = content;
603        //$('descricao').focus();
604        objEmployeeStatus.generateUpdateTable({'organizacao_id': organizationID}, divLB);
605}
606
607function loadAddEmployeeCategoryUI(organizationID)
608{
609        var content;
610        content = '<h2 id="modalTitle">Adicionar Categoria</h2>';
611        content += '<form name="orgchartForm" id="orgchartForm">';
612        content += '<input type="hidden" name="organizacao_id" id="organizacao_id" value="' + organizationID + '" />';
613        content += '<table>';
614        content += '<tr><td><label for="descricao">Nome</label></td><td><input type="text" name="descricao" id="descricao" size="30" /></td></tr>';
615        content += "</table>";
616        content += '</form>';
617        content += '<button id="inserir" onclick="objEmployeeCategory.add(); return false;">Inserir</button>';
618        content += '<button onclick="valid.deactivate(); return false;">Cancelar</button>';
619
620        var divLB = $('lbContent');
621        divLB.innerHTML = content;
622        //$('descricao').focus();
623        objEmployeeCategory.generateUpdateTable({'organizacao_id': organizationID}, divLB);
624}
625
626function loadAddJobTitleUI(organizationID)
627{
628        var content;
629        content = '<h2 id="modalTitle">Adicionar Cargos</h2>';
630        content += '<form name="orgchartForm" id="orgchartForm">';
631        content += '<input type="hidden" name="organizacao_id" id="organizacao_id" value="' + organizationID + '" />';
632        content += '<table>';
633        content += '<tr><td><label for="descricao">Nome</label></td><td><input type="text" name="descricao" id="descricao" size="30" /></td></tr>';
634        content += "</table>";
635        content += '</form>';
636        content += '<button id="inserir" onclick="objJobTitle.add(); return false;">Inserir</button>';
637        content += '<button onclick="valid.deactivate(); return false;">Cancelar</button>';
638
639        var divLB = $('lbContent');
640        divLB.innerHTML = content;
641        //$('descricao').focus();
642        objJobTitle.generateUpdateTable({'organizacao_id': organizationID}, divLB);
643}
644
645function loadAddAreaStatusUI(organizationID)
646{
647        var content;
648        content = '<h2 id="modalTitle">Adicionar Status de Área</h2>';
649        content += '<form name="orgchartForm" id="orgchartForm">';
650        content += '<input type="hidden" name="organizacao_id" id="organizacao_id" value="' + organizationID + '" />';
651        content += '<table>';
652        content += '<tr><td><label for="descricao">Nome</label></td><td><input type="text" name="descricao" id="descricao" size="30" /></td></tr>';
653        content += '<tr><td><label for="nivel">Nível</label></td><td><input type="text" name="nivel" id="nivel" size="3" /></td></tr>';
654        content += "</table>";
655        content += '</form>';
656        content += '<button id="inserir" onclick="objAreaStatus.add(); return false;">Inserir</button>';
657        content += '<button onclick="valid.deactivate(); return false;">Cancelar</button>';
658
659        var divLB = $('lbContent');
660        divLB.innerHTML = content;
661        //$('descricao').focus();
662        objAreaStatus.generateUpdateTable({'organizacao_id': organizationID}, divLB);
663}
664
665function loadAddCostCenterUI(organizationID)
666{
667        var content;
668        content = '<h2 id="modalTitle">Adicionar Centro de Custo</h2>';
669        content += '<form name="orgchartForm" id="orgchartForm">';
670        content += '<input type="hidden" name="organizacao_id" id="organizacao_id" value="' + organizationID + '" />';
671        content += "<table>";
672        content += '<tr><td><label for="nm_centro_custo">Número</label></td><td><input type="text" name="nm_centro_custo" id="nm_centro_custo" size="4" /></td></tr>';
673        content += '<tr><td><label for="descricao">Nome</label></td><td><input type="text" name="descricao" id="descricao" size="30" /></td></tr>';
674        content += '<tr><td><label for="grupo">Grupo</label></td><td><input type="text" name="grupo" id="grupo" size="10" /></td></tr>';
675        content += "</table>";
676        content += '</form>';
677        content += '<button id="inserir" onclick="objCostCenter.add(); return false;">Inserir</button>';
678        content += '<button onclick="valid.deactivate(); return false;">Cancelar</button>';
679
680        var divLB = $('lbContent');
681        divLB.innerHTML = content;
682        //$('nm_centro_custo').focus();
683        objCostCenter.generateUpdateTable({'organizacao_id': organizationID}, divLB);
684}
685
686function loadAddLocalUI(organizationID)
687{
688        var valoresSimNao = new Array();
689        valoresSimNao['S'] = 'Sim';
690        valoresSimNao['N'] = 'Não';
691
692        var content;
693        content = '<h2 id="modalTitle">Adicionar Localidade</h2>';
694        content += '<form name="orgchartForm" id="orgchartForm">';
695        content += '<input type="hidden" name="organizacao_id" id="organizacao_id" value="' + organizationID + '" />';
696        content += "<table>";
697        content += '<tr><td><label for="descricao">Nome</label></td><td><input type="text" name="descricao" id="descricao" size="30" /></td></tr>';
698
699        content += '<tr><td><label for="empresa">Empresa</label></td><td><input type="text" name="empresa" id="empresa" size="80" /></td></tr>';
700        content += '<tr><td><label for="endereco">Endereço</label></td><td><input type="text" name="endereco" id="endereco" size="80" /></td></tr>';
701        content += '<tr><td><label for="complemento">Complemento</label></td><td><input type="text" name="complemento" id="complemento" size="50" /></td></tr>';
702        content += '<tr><td><label for="cep">Cep</label></td><td><input type="text" name="cep" id="cep" size="10" /></td></tr>';
703        content += '<tr><td><label for="bairro">Bairro</label></td><td><input type="text" name="bairro" id="bairro" size="30" /></td></tr>';
704        content += '<tr><td><label for="cidade">Cidade</label></td><td><input type="text" name="cidade" id="cidade" size="50" /></td></tr>';
705        content += '<tr><td><label for="uf">UF</label></td><td><input type="text" name="uf" id="uf" size="2" maxlength="2" /></td></tr>';
706
707        content += '<tr><td><label for="centro_custo_id">Centro de Custo</label></td><td id="comboCentroCusto"><i>carregando</i></td></tr>';
708        content += '<tr><td><label for="externa">Externa à organização</label></td><td>' + constructSelectBox('externa', valoresSimNao) + '</td></tr>';
709        content += "</table>";
710        content += '</form>';
711        content += '<button id="inserir" onclick="objLocal.add(); return false;">Inserir</button>';
712        content += '<button onclick="valid.deactivate(); return false;">Cancelar</button>';
713
714        var divLB = $('lbContent');
715        divLB.innerHTML = content;
716        //$('descricao').focus();
717        objCostCenter.generateComboBox({'organizacao_id': organizationID}, $('comboCentroCusto'), true, null,
718                function()
719                {
720                        objLocal.generateUpdateTable({'organizacao_id': organizationID}, divLB);
721                }
722        );
723}
724
725function loadAddEmployeeUI(organizationID, callback)
726{
727        var content;
728        content = '<h2 id="modalTitle">Adicionar Funcionário</h2>';
729        content += '<form name="orgchartForm" id="orgchartForm">';
730        content += '<input type="hidden" name="organizacao_id" id="organizacao_id" value="' + organizationID + '" />';
731        content += "<table>";
732        content += '<tr><td><label for="funcionario_id_desc">Funcionário</label></td><td>';
733        content += '<input type="hidden" name="funcionario_id" id="funcionario_id" value="" />';
734        content += '<input type="input" name="funcionario_id_desc" id="funcionario_id_desc" value="" readonly="true" size="40" />';
735        content += '<a href="javascript:void(0)" onclick="openParticipants(\'funcionario_id\', \'uid=1&hidegroups=1\');" id="addEmployeeLink"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png" /></a>';
736        content += '</td></tr>';
737        content += '<tr><td><label for="funcionario_status_id">Status</label></td><td id="comboStatus"><i>carregando</i></td></tr>';
738        content += '<tr><td><label for="apelido">Apelido</label></td><td><input type="text" size="20" maxlength="20" name="apelido" id="apelido" value=""/></td></tr>';
739        content += '<tr><td><label for="funcionario_categoria_id">Categoria</label></td><td id="comboFuncionarioCategoria"><i>carregando</i></td></tr>';
740        content += '<tr><td><label for="cargo_id">Cargo</label></td><td id="comboCargo"><i>carregando</i></td></tr>';
741        content += '<tr><td><label for="funcao">Função</label></td><td><input type="text" size="50" maxlength="200" name="funcao" id="funcao" value=""/></td></tr>';
742        content += '<tr><td><label for="data_admissao">Data de admissão</label></td><td><input type="text" name="data_admissao" id="data_admissao" value="" size="15" onkeypress="return formatDateField(event, this);" /></td></tr>';
743        content += '<tr><td><label for="titulo">T&iacute;tulo</label></td><td><input type="text" size="30" name="titulo" id="titulo" value=""/></td></tr>';
744        content += '<tr><td><label for="nivel">Nível</label></td><td><input type="text" size="3" name="nivel" id="nivel"/></td></tr>';
745        content += '<tr><td><label for="area_id">Área</label></td><td id="comboArea"><i>carregando</i></td></tr>';
746        content += '<tr><td><label for="centro_custo_id">Centro de Custo</label></td><td id="comboCentroCusto"><i>carregando</i></td></tr>';
747        content += '<tr><td><label for="localidade_id">Localidade</label></td><td id="comboLocalidade"><i>carregando</i></td></tr>';
748        content += "</table>";
749        content += '</form>';
750        content += '<button id="inserir" onclick="objEmployee.add(); return false;">Inserir</button>';
751        content += '<button onclick="valid.deactivate(); return false;">Cancelar</button>';
752       
753        var divLB = $('lbContent');
754    divLB.innerHTML = content;
755
756    objEmployeeStatus.generateComboBox({'organizacao_id': organizationID}, $('comboStatus'), false, null,
757        function()
758        {
759            objEmployeeCategory.generateComboBox({'organizacao_id': organizationID}, $('comboFuncionarioCategoria'), true, null,
760                function()
761                {
762                    objJobTitle.generateComboBox({'organizacao_id': organizationID}, $('comboCargo'), true, null,
763                        function()
764                        {
765                            objArea.generateComboBox({'organizacao_id': organizationID}, $('comboArea'), false, null,
766                                function()
767                                {
768                                    objCostCenter.generateComboBox({'organizacao_id': organizationID}, $('comboCentroCusto'), true, null,
769                                        function()
770                                        {
771                                            objLocal.generateComboBox({'organizacao_id': organizationID}, $('comboLocalidade'), false, null, callback);
772                                        }
773                                    )
774                                }
775                            )
776                        }
777                    )
778                }
779            )
780        }
781    );
782}
783
784function loadAddAreaUI(organizationID)
785{
786        var valoresSimNao = new Array();
787        valoresSimNao['S'] = 'Sim';
788        valoresSimNao['N'] = 'Não';
789
790        var content;
791        content = '<h2 id="modalTitle">Adicionar Área</h2>';
792        content += '<form name="orgchartForm" id="orgchartForm">';
793        content += '<input type="hidden" name="organizacao_id" id="organizacao_id" value="' + organizationID + '" />';
794        content += "<table>";
795        content += '<tr><td><label for="sigla">Sigla</label></td><td><input type="text" name="sigla" id="sigla" size="15" /></td></tr>';
796        content += '<tr><td><label for="descricao">Nome</label></td><td><input type="text" name="descricao" id="descricao" size="30" /></td></tr>';
797        content += '<tr><td><label for="titular_funcionario_id">Titular</label></td><td>';
798        content += '<input type="hidden" name="titular_funcionario_id" id="titular_funcionario_id" value="" />';
799        content += '<input type="input" name="titular_funcionario_id_desc" id="titular_funcionario_id_desc" value="" readonly="true" size="40" />';
800        content += '<a href="javascript:void(0)" onclick="openParticipants(\'titular_funcionario_id\', \'uid=1&hidegroups=1\');"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png" /></a>';
801        content += ' <a href="javascript:void(0)" onclick="$(\'titular_funcionario_id\').value=\'\'; $(\'titular_funcionario_id_desc\').value=\'\'; return false;"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/delete_user.png" /></a>';
802        content += '</td></tr>';
803        content += '<tr><td><label for="auxiliar_funcionario_id">Auxiliar Administrativo</label></td><td>';
804        content += '<input type="hidden" name="auxiliar_funcionario_id" id="auxiliar_funcionario_id" value="" />';
805        content += '<input type="input" name="auxiliar_funcionario_id_desc" id="auxiliar_funcionario_id_desc" value="" readonly="true" size="40" />';
806        content += '<a href="javascript:void(0)" onclick="openParticipants(\'auxiliar_funcionario_id\', \'uid=1&hidegroups=1\');"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png" /></a>';
807        content += ' <a href="javascript:void(0)" onclick="$(\'auxiliar_funcionario_id\').value=\'\'; $(\'auxiliar_funcionario_id_desc\').value=\'\'; return false;"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/delete_user.png" /></a>';
808        content += '</td></tr>';
809        content += '<tr><td><label for="area_status_id">Status</label></td><td id="comboStatus"><i>carregando</i></td></tr>';
810        content += '<tr><td><label for="superior_area_id">Área Superior</label></td><td id="comboArea"><i>carregando</i></td></tr>';
811        content += '<tr><td><label for="centro_custo_id">Centro de Custo</label></td><td id="comboCentroCusto"><i>carregando</i></td></tr>';
812        content += '<tr><td><label for="ativa">Ativa</label></td><td>' + constructSelectBox('ativa', valoresSimNao) + '</td></tr>';
813        content += "</table>";
814        content += '</form>';
815        content += '<button id="inserir" onclick="objArea.add(); return false;">Inserir</button>';
816        content += '<button onclick="valid.deactivate(); return false;">Cancelar</button>';
817
818        var divLB = $('lbContent');
819        divLB.innerHTML = content;
820        $('sigla').focus();
821
822        objAreaStatus.generateComboBox({'organizacao_id': organizationID}, $('comboStatus'), false, null,
823                function()
824                {
825                        objArea.generateComboBox({'organizacao_id': organizationID}, $('comboArea'), true, 'superior_area_id',
826                                function()
827                                {
828                                        objCostCenter.generateComboBox({'organizacao_id': organizationID}, $('comboCentroCusto'), false, null,
829                                                function()
830                                                {
831                                                        objArea.generateUpdateTable({'organizacao_id': organizationID}, divLB);
832                                                }
833                                        )
834                                }
835                        )
836                }
837        );
838}
839
840function loadAddTelephoneUI(organizationID)
841{
842        var content;
843        content = '<h2 id="modalTitle">Adicionar Telefones da Organização</h2>';
844        content += '<form name="orgchartForm" id="orgchartForm">';
845        content += '<input type="hidden" name="organizacao_id" id="organizacao_id" value="' + organizationID + '" />';
846        content += '<table>';
847        content += '<tr><td><label for="descricao">Descrição</label></td><td><input type="text" name="descricao" id="descricao" size="50" /></td></tr>';
848        content += '<tr><td><label for="nivel">Telefones</label></td><td><input type="text" name="numero" id="numero" size="50" /></td></tr>';
849        content += "</table>";
850        content += '</form>';
851        content += '<button id="inserir" onclick="objTelephones.add(); return false;">Inserir</button>';
852        content += '<button onclick="valid.deactivate(); return false;">Cancelar</button>';
853
854        var divLB = $( 'lbContent' );
855        divLB.innerHTML = content;
856        //$( 'descricao' ).focus( );
857        objTelephones.generateUpdateTable( { 'organizacao_id' : organizationID }, divLB );
858}
859
860
861function loadAddSubstitutionUI(organizationID)
862{
863        var area_id = 'combo_area';
864        var content;
865
866        content  = '<h2 id="modalTitle">Adicionar Substituição</h2>';
867        content += '<form name="orgchartForm" id="orgchartForm">';
868        content += '<input type="hidden" name="organizacao_id" id="organizacao_id" value="' + organizationID + '" />';
869        content += "<table>";
870        content += '<tr><td><label for="area_id">Sigla</label>';
871        content += '<input type="hidden" name="area_id" id="area_id" value="" />';
872        content += '</td><td id="comboArea"><i>carregando</i></td></tr>';
873        content += '<tr><td><label for="descricao">Nome</label></td><td><input type="text" name="descricao" id="descricao" readonly="true" size="40" /></td></tr>';
874        content += '<tr><td><label for="titular_funcionario_id">Titular</label></td><td>';
875        content += '<input type="hidden" name="titular_funcionario_id" id="titular_funcionario_id" value="" readonly="true" />';
876        content += '<input type="input" name="titular_funcionario_id_desc" id="titular_funcionario_id_desc" value="" readonly="true" size="40" />';
877        content += '</td></tr>';
878        content += '<tr><td><label for="substituto_funcionario_id">Substituto</label></td><td>';
879        content += '<input type="hidden" name="substituto_funcionario_id" id="substituto_funcionario_id" value="" />';
880        content += '<input type="input" name="substituto_funcionario_id_desc" id="substituto_funcionario_id_desc" value="" readonly="true" size="40" />';
881        content += '<a href="javascript:void(0)" onclick="openParticipants(\'substituto_funcionario_id\', \'uid=1&hidegroups=1\');"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png" /></a>';
882        content += ' <a href="javascript:void(0)" onclick="$(\'substituto_funcionario_id\').value=\'\'; $(\'substituto_funcionario_id_desc\').value=\'\'; return false;"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/delete_user.png" /></a>';
883        content += '</td></tr>';
884        content += '<tr><td><label for="data_inicio">Data de início</label></td><td><input type="text" name="data_inicio" id="data_inicio" size="15" onkeypress="return formatDateField(event, this);" /></td></tr>';
885        content += '<tr><td><label for="data_fim">Data de término</label></td><td><input type="text" name="data_fim" id="data_fim" size="15" onkeypress="return formatDateField(event, this);"/></td></tr>';
886        content += "</table>";
887        content += '</form>';
888        content += '<button id="inserir" onclick="objSubstitution.add(); return false;">Inserir</button>';
889        content += '<button onclick="valid.deactivate(); return false;">Cancelar</button>';
890
891        var divLB = $('lbContent');
892        divLB.innerHTML = content;
893
894        // function that must be called after loading areas on the combobox
895        var areas_callback = function () {
896
897                // every change on the combo box must query for area information
898                $(area_id).onchange = function () {
899                        if ($('SubstitutionList'))
900                                $('SubstitutionList').remove();
901                       
902                        var info_callback = function (data) {
903
904                                // just to be sure
905                                if (!data[0]) {
906                                        alert("Não foi possível encontrar os dados.");
907                                }
908
909                                // we received an empty response. Let's reset the form.
910                                if ((data[0]['area_id'] == '') || (data[0]['area_id'] == null)) {
911                                        alert('RESET');
912                                        $('area_id').value = '';
913                                        $('descricao').value = '';
914                                        $('titular_funcionario_id').value = '';
915                                        $('titular_funcionario_id_desc').value = '';
916                                }
917                                // fill the form
918                                else {
919                                        $('area_id').value = data[0]['area_id'];
920                                        $('descricao').value = data[0]['descricao'];
921                                        $('titular_funcionario_id').value = data[0]['titular_funcionario_id'];
922                                        $('titular_funcionario_id_desc').value = data[0]['titular_funcionario_id_desc'];
923                                }
924
925                                // get the list of substitutions
926                                objSubstitution.generateUpdateTable({'organizacao_id': organizationID, 'area_id': $(area_id).value}, divLB);
927                        }
928                        objArea.list(info_callback, {'organizacao_id': organizationID, 'area_id': $(area_id).value});
929
930                }
931        }
932        objArea.generateComboBox({'organizacao_id': organizationID}, $('comboArea'), true, area_id, areas_callback);
933}
934
935function getEmployeeInfoTimer(e, employeeID, organizationID)
936{
937        var div = $('employeeInfo');
938        div.style.left = (Event.pointerX(e) + 20) + 'px';
939        div.style.top = (Event.pointerY(e) + 14) + 'px';
940
941        if (workflowOrgchartAdminEmployeeInfoTimer != null)
942        {
943                workflowOrgchartAdminEmployeeInfoTimer = clearTimeout(workflowOrgchartAdminEmployeeInfoTimer);
944                workflowOrgchartAdminEmployeeInfoTimer = null;
945        }
946
947        workflowOrgchartAdminEmployeeInfoTimer = setTimeout('getEmployeeInfo(' + employeeID + ', ' + organizationID + ' )', 500);
948}
949
950function getEmployeeInfo(employeeID, organizationID)
951{
952        function resultGetEmployeeInfo(data)
953        {
954                if (workflowOrgchartAdminEmployeeInfoTimer == null)
955                        return;
956
957                workflowOrgchartAdminEmployeeInfoTimer = clearTimeout(workflowOrgchartAdminEmployeeInfoTimer);
958                workflowOrgchartAdminEmployeeInfoTimer = null;
959
960                var content = '';
961                content += '<table><tr><td valign="top">';
962                content += '<img src="workflow/showUserPicture.php?userID=' + employeeID + '"/>';
963                content += '</td><td valign="top" style="padding-left: 12px;">';
964                for (var i = 0; i < data['info'].length; i++)
965                        content += '<strong>' + data['info'][i]['name'] + '</strong>: ' + data['info'][i]['value'] + '<br/>';
966                content += '</td></tr></table>';
967                var pageYLimit = document.body.scrollTop + document.body.clientHeight;
968                var div = $('employeeInfo');
969                div.innerHTML = content;
970
971                if ((parseInt(div.style.top.replace(/px/g, '')) + div.getHeight()) > pageYLimit)
972                        div.style.top = (parseInt(div.style.top.replace(/px/g, '')) - (div.getHeight())) + 'px';
973
974                div.show();
975        }
976        cExecute('$this.bo_orgchart.getEmployeeInfo', resultGetEmployeeInfo, 'funcionario_id=' + employeeID + '&organizacao_id=' + organizationID);
977}
978
979function hideEmployeeInfo()
980{
981        if (workflowOrgchartAdminEmployeeInfoTimer != null)
982        {
983                workflowOrgchartAdminEmployeeInfoTimer = clearTimeout(workflowOrgchartAdminEmployeeInfoTimer);
984                workflowOrgchartAdminEmployeeInfoTimer = null;
985        }
986        $('employeeInfo').hide();
987}
988
989function getAreaInfoTimer(e, areaID, organizationID)
990{
991        var div = $('areaInfo');
992        div.style.left = (Event.pointerX(e) + 20) + 'px';
993        div.style.top = (Event.pointerY(e) + 14) + 'px';
994
995        if (workflowOrgchartAdminAreaInfoTimer != null)
996        {
997                workflowOrgchartAdminAreaInfoTimer = clearTimeout(workflowOrgchartAdminAreaInfoTimer);
998                workflowOrgchartAdminAreaInfoTimer = null;
999        }
1000
1001        workflowOrgchartAdminAreaInfoTimer = setTimeout('getAreaInfo(' + areaID + ', ' + organizationID + ' )', 500);
1002}
1003
1004function getAreaInfo(areaID, organizationID)
1005{
1006        function resultGetAreaInfo(data)
1007        {
1008                if (workflowOrgchartAdminAreaInfoTimer == null)
1009                        return;
1010
1011                workflowOrgchartAdminAreaInfoTimer = clearTimeout(workflowOrgchartAdminAreaInfoTimer);
1012                workflowOrgchartAdminAreaInfoTimer = null;
1013
1014                var content = '';
1015                content += '<table><tr>';
1016                content += '<td valign="top" style="padding-left: 12px;">';
1017                for (var i = 0; i < data['info'].length; i++)
1018                        content += '<strong>' + data['info'][i]['name'] + '</strong>: ' + data['info'][i]['value'] + '<br/>';
1019                content += '</td></tr></table>';
1020                var pageYLimit = document.body.scrollTop + document.body.clientHeight;
1021                var div = $('areaInfo');
1022                div.innerHTML = content;
1023
1024                if ((parseInt(div.style.top.replace(/px/g, '')) + div.getHeight()) > pageYLimit)
1025                        div.style.top = (parseInt(div.style.top.replace(/px/g, '')) - (div.getHeight())) + 'px';
1026
1027                div.show();
1028        }
1029        cExecute('$this.bo_orgchart.getAreaInfo', resultGetAreaInfo, 'area_id=' + areaID + '&organizacao_id=' + organizationID);
1030}
1031
1032function hideAreaInfo()
1033{
1034        if (workflowOrgchartAdminAreaInfoTimer != null)
1035        {
1036                workflowOrgchartAdminAreaInfoTimer = clearTimeout(workflowOrgchartAdminAreaInfoTimer);
1037                workflowOrgchartAdminAreaInfoTimer = null;
1038        }
1039        $('areaInfo').hide();
1040}
Note: See TracBrowser for help on using the repository browser.