PageSourceSearch

https://app.fuvest.br/js/fuvutils.js?versao=20260813_115700

js fuvest.br collected 2026-09-24 09:41:11 UTC 55,782 bytes, 1,092 lines download raw bytes

1/**
2 * 
3 */
4
5var fuvUsuarioLogado = null;
6
7function jsGlobalLoadScript(url, callback, charset){
8	var script = document.createElement("script");
9	script.type = "text/javascript";
10	
11	if (typeof charset != "undefined") {
12		script.charset = charset;
13	}
14	
15	if (script.readyState) {  //IE
16		script.onreadystatechange = function() {
17			if ((script.readyState == "loaded") || (script.readyState == "complete")) {
18				script.onreadystatechange = null;
19				callback();
20			}
21		};
22	} 
23	else {  //Others
24		script.onload = function() {
25			callback();
26		};
27	}
28	script.src = url;
29	document.getElementsByTagName("head")[0].appendChild(script);
30}
31
32function fStartFuvAdmin(d) {
33	if ((typeof d.codigo_usuario !== "undefined") && (d.codigo_usuario !== "") && (parseInt(d.codigo_usuario) !== 0)) {
34		if ((typeof d.codigo_usuario_master !== "undefined") && (d.codigo_usuario_master!=="") && (parseInt(d.codigo_usuario_master) !== 0)) {
35			var fuvAdmin = new FuvAdmin("idDIVLogoFuvest","idFuvAdmin");
36		}
37	}
38	
39	if ((typeof fuvUsuarioLogado != "undefined") && (fuvUsuarioLogado != null)) {
40		fuvUsuarioLogado.codigo_perfil = parseInt(fuvUsuarioLogado.codigo_perfil);
41			
42		var o = $("#myNavbar ul li.dropdown:contains(Financeiro) ul");
43		if (o.length == 0) {
44			o = $('#myNavbar ul');
45		}
46		
47		//if ((o.length > 0) && (typeof fuvUI != "undefined")) { // desabilitar temporariamente
48		if (false) {
49			var a = [2, 12, 13, 36];
50			
51			if (a.indexOf(fuvUsuarioLogado.codigo_perfil) >= 0) {
52				if (typeof pell === "undefined") {
53					jQuery.getScript("/js/pell.min.js").done(function() { 
54						fuvUI.getCSS("/css/pell.min.css");
55					});
56				}
57				
58				fuvUI.loadClass(
59					typeof fuvDlgConst === "undefined",
60					"/js/fuv_dialogos.js",
61					function() {
62						fuvUI.loadClass(
63								typeof FuvDadosFinanceiros === "undefined",
64								"/js/fuv_financeiro.js",
65								function() {
66									// verifica se existem pendências financeiras
67									fuvVerificaDadosFinanceiros = new FuvVerificaDadosFinanceiros('idSplashErrosFinanceiros', fuvUsuarioLogado, function(dados) {
68										try {
69											o.append('<li><a id="idMenuItem_EditarDadosFinanceiros" href="javascript:void(0)"><span style="display:inline-block;width:24px;
69font-family:FontAwesome;">&#xf007;<\/span>Minhas Informações Financeiras<\/a><\/li>');
70											$('#idMenuItem_EditarDadosFinanceiros').click(function(e) {
71												e.stopPropagation();
72												var fuvDadosFinanceiros = new FuvDadosFinanceiros('idDadosFinanceirosUsuario');
73											});
74											
75											o.append('<li><a id="idMenuItem_Meus_Vencimentos" href="javascript:void(0)"><span style="display:inline-block;width:24px;font-family:FontAwesome;">&#xf0d6;<\/span>Vencimentos Recebidos<\/a><\/li>');
76											$('#idMenuItem_Meus_Vencimentos').click(function(e) {
77												e.stopPropagation();
78												alert('não implementado');
79											});
80											
81											if (dados.resposta.lista_informes_rendimento.length > 0) {
82												o.append('<li><a id="idMenuItem_Meus_Informes" href="javascript:void(0)"><span style="display:inline-block;width:24px;font-family:FontAwesome;">&#xf1ad;<\/span>Informes de Rendimento IRPF<\/a><\/li>');
83												$('#idMenuItem_Meus_Informes').click(function(e) {
84													e.stopPropagation();
85													
86													var b = $(this), x = b.offset().left - $(window).scrollLeft(), y = b.offset().top - $(window).scrollTop(), items = [], i;
87													
88													for(i = 0; i < dados.resposta.lista_informes_rendimento.length; i++) {
89														items.push([
90															dados.resposta.lista_informes_rendimento[i].ir_caption, 
91															function(index) {
92																return function() {
93																	window.location.href = "/servicos/arquivos/atividades/obtem_arquivo_ex/informe/" + dados.resposta.lista_informes_rendimento[index].ir_code;
94																}
95															}(i), 
96															true
97														]);
98													}
99													
100													var menu = new FuvApresentaMenu('idMenuItem_Meus_Informes_Menu', x + 80, y + 20, 240, 0, items, 10000);
101													
102												});
103											}
104											
105											if (dados.resposta.pastas_coordenacao.numero > 0) {
106												o.append('<li><a id="idMenuItem_EditarColaboradoresAlocados" href="javascript:void(0)"><span style="display:inline-block;width:24px;
106font-family:FontAwesome;">&#xf0c0;<\/span>Gerenciar Colaboradores (' + dados.resposta.pastas_coordenacao.numero + ' pastas)<\/a><\/li>');
107												$('#idMenuItem_EditarColaboradoresAlocados').click(function(e) {
108													e.stopPropagation();
109													var fuvGerenciarColaboradoresAlocados = new FuvGerenciarColaboradoresAlocados('idGerenciarColaboradoresAlocados');
110												});
111											}
112											
113											if ((fuvUsuarioLogado.codigo_perfil == 2) || (fuvUsuarioLogado.codigo_perfil == 36)) {
114												
115												o.append('<li><a id="idMenuItem_GerenciarPastas" href="javascript:void(0)"><span style="display:inline-block;width:24px;font-family:FontAwesome;">&#xf07c;<\/span>Gerenciar Pastas<\/a><\/li>');
116												$('#idMenuItem_GerenciarPastas').click(function(e) {
117													e.stopPropagation();
118													var fuvGerenciamentoPastas = new FuvGerenciamentoPastas("idGerenciamentoPastas", fuvUsuarioLogado, 1000);
119												});
120												
121												o.append('<li><a id="idMenuItem_GerenciarBancos" href="javascript:void(0)"><span style="display:inline-block;width:24px;
121font-family:FontAwesome;">&#xf201;<\/span>Gerenciar Bancos<\/a><\/li>');
122												$('#idMenuItem_GerenciarBancos').click(function(e) {
123													e.stopPropagation();
124													var fuvBancos = new FuvBancos('idMenu_Gerenciamento_Bancos');
125												});
126												
127												o.append('<li><a id="idMenuItem_Valores_Padrao" href="javascript:void(0)"><span style="display:inline-block;width:24px;font-family:FontAwesome;">&#xf005;<\/span>Valores-padrão do Sistema<\/a><\/li>');
128												$('#idMenuItem_Valores_Padrao').click(function(e) {
129													e.stopPropagation();
130													var fuvPadroesFinanceiros = new FuvPadroesFinanceiros('idMenuItem_Valores_Padrao_Janela');
131												});
132												
133												o.append('<li><a id="idMenuItem_Parametros_Financeiros_Edital" href="javascript:void(0)"><span style="display:inline-block;width:24px;font-family:FontAwesome;">&#xf013;<\/span>Parâmetros Financeiros dos Editais<\/a><\/li>');
134												$('#idMenuItem_Parametros_Financeiros_Edital').click(function(e) {
135													e.stopPropagation();
136													var fuvParametrosEdital = new FuvParametrosEdital('idMenuItem_Parametros_Financeiros_Edital_Janela');
137												});
138												
139												o.append('<li><a id="idMenuItem_Tabelas_Basicas_Totvs" href="javascript:void(0)"><span style="display:inline-block;width:24px;
139font-family:FontAwesome;">&#xf1c0;<\/span>Atualizar Tabelas Básicas da TOTVS<\/a><\/li>');
140												$('#idMenuItem_Tabelas_Basicas_Totvs').click(function(e) {
141													e.stopPropagation();
142													var fuvGerenciamentoFinanceiroSistema = new FuvGerenciamentoFinanceiroSistema('idMenuItem_Tabelas_Basicas_Totvs_Janela');
143												});
144
145											}
146											
147										}
148										catch(e) {
149											console.log(e.message);
150										}
151									});									
152								},
153								function() {
154									console.log('falha ao carregar fuv_financeiro.js')
155								}
156						)						
157					},
158					function() {
159						console.log('falha ao carregar fuv_dialogos.js')
160					}
161				);
162				
163			}		
164			
165		}
166	}
167	
168}
169
170function fWaitUntilUserIsReady(nTimeOut, f) {
171	window.setTimeout(function(nTimeOut1,f1){
172		return function() {
173			if (fuvUsuarioLogado==null) {
174				fWaitUntilUserIsReady(nTimeOut1, f1);
175			}
176			else {
177				f1();
178			}
179		}
180	}(nTimeOut,f), nTimeOut);	
181}
182
183class TFuvHistograma {
184	constructor (id, d) {
185		this.id = id;
186		this.d = d;
187		this.index = 0;
188		this.cBarColor = 'rgb(200,200,255)';
189		$(window).resize(function(t) {
190			return function(){
191				t.refresh();
192			}
193		}(this)).resize();
194	}
195	
196	refresh(){
197		var c = '';
198		var d = this.d.result[this.index];
199		var i;
200		var o = $('#'+this.id);
201		var w = o.width();
202		var h = 400;
203		var nMax = 45;
204		var aVal = [];
205		for(i=0;i<=nMax;i++) {
206		  aVal[i] = 0;
207		}
208		var nMaxX = 0;
209		var nMaxY = 0;
210		console.log('d=',d)
211		for(i=0;i<d.val.length;i++) {
212			aVal[d.val[i].n] = d.val[i].t;
213			if (d.val[i].t>0) {
214				if (d.val[i].n>nMaxX) {
215					nMaxX = d.val[i].n;
216				}
217				if (d.val[i].t>nMaxY) {
218					nMaxY = d.val[i].t;
219				}
220			}
221		}
222		var ix,hb,wb = w/(nMaxX+2);
223		
224		c = '<div style="padding:4px;border-bottom:solid 1px gray;color:gray;">';
225		c += '<p id="'+this.id+'_do_change_graph" style="font-weight:bold;font-size:20px;cursor:pointer;color:black;margin:4px 0px 4px 0px;"><span id="'+this.id+'_icon" class="cFAW">&#xf078;
225<\/span> '+d.title+'<\/p>';
226		c += '<div id="'+this.id+'_change_graph" style="display:none;">'
227		c += '<p style="font-size:18px;font-weight:bold;margin:2px 0px 2px 10px;">Alterar para:<\/p>';
228		for(i=0;i<this.d.result.length;i++) {
229			if (i!=this.index) {
230				c += '<p id="'+this.id+'_p_'+i+'" style="font-size:16px;cursor:pointer;margin:4px 0px 4px 40px" data-index="'+i+'">&bull; '+this.d.result[i].title+'<\/p>';
231			}
232		}
233		c += '<p style="font-size:9px;">Tempo para extrair informa&ccedil;&otilde;es da tabela: '+this.d.time+'s<\/p>'
234		c += '<p style="font-size:9px;">Diretoria: '+this.d.diretoria+'<\/p>'
235		c += '<p style="font-size:9px;">Escola Origem: '+this.d.escola+'<\/p>'
236		c += '<\/div>';
237		c += '<\/div>';
238		c += '<div id="'+this.id+'_graph"><\/div>';
239		$('#'+this.id).html(c);
240		
241		$('#'+this.id+'_do_change_graph').click(function(t1) {
242			return function() {
243				$('#'+t1.id+'_change_graph').toggle();
244				if ($('#'+t1.id+'_change_graph').is(':visible')) {
245					$('#'+t1.id+'_icon').html('&#xf054;');
246		        }
247				else {
248					$('#'+t1.id+'_icon').html('&#xf078;');
249				}
250		
251			}
252		}(this));
253		
254		
255		$("[id^='"+this.id+"_p_']").click(function(t1) {
256			return function() {
257				t1.index = parseInt($(this).data('index'));
258				t1.refresh();
259			}
260		}(this));
261		
262	
263		if (wb<12) { // histograma na vertical - simplificado
264			h = w-100;
265			$('#'+this.id+'_graph').css({"height":""});
266			
267			c = '';
268			for(i=0;i<d.medias.length;i++) {
269				if (i==0) {
270					c += '<table border=1 cellspacing=0 cellpadding=0 style="margin:10px 0px 10px 0px;font-size:16px;border-collapse:collapse;border:solid 1px gray;">';
271					c += '<tr style="font-weight:bold;"><td style="padding:2px;">Grupo<\/td><td style="padding:2px;">M&eacute;dia<\/td><\/tr>';
272				}
273				c += '<tr>';
274				c += '<td style="padding:2px;">'+d.medias[i].title+'<\/td>';
275				c += '<td style="padding:2px;text-align:right;">'+d.medias[i].val.toFixed(2)+'<\/td>';
276				c += '<\/tr>';
277			}
278			if (d.medias.length>0) {
279				c += '<\/table>'
280			}
281			
282			c += '<table border=0 cellspacing=0 cellpadding=0 style="border-collapse:collapse;font-size:16px;">';
283			c += '<tr style="height:20px;border-bottom:solid 1px gray;">';
284			c += '<td style="text-align:right;padding-right:5px;font-size:8px;font-weight:bold;border-right:solid 1px gray;">ACERTOS<\/td>';
285			c += '<td style="width:100%;font-size:8px;font-weight:bold;padding-left:5px;">QUANTIDADE<\/td>';
286			c += '<\/tr>';
287			for(i=0;i<=nMaxX;i++) {
288				hb = h*aVal[i]/nMaxY;
289				c += '<tr style="height:20px;">';
290				c += '<td style="text-align:right;padding-right:10px;font-size:12px;">'+i+'<\/td>';
291				c += '<td style="width:100%"><div style="height:20px;background-color:'+this.cBarColor+';float:left;font-size:9px;color:maroon;width:'+hb+'px;"><\/div><span style="margin-left:5px;">'+aVal[i]+'<\/span><\/td>';
292				c += '<\/tr>';
293			}
294			c += '<\/table>';
295			$('#'+this.id+'_graph').html(c);
296		}
297		else { // histograma normal
298			c = '';	
299		
300			$('#'+this.id+'_graph').css({"position":"relative"});
301			$('#'+this.id+'_graph').height(h);
302			
303			for(i=0;i<=nMaxX;i++) {
304				hb = (h-30-50)*aVal[i]/nMaxY;
305				c += '<div id="'+this.id+'_bar_'+i+'" data-bar="'+i+'" style="position:absolute;cursor:crosshair;width:'+wb+'px;height:'+hb+'px;left:'+(5+wb*i)+'px;bottom:30px;border:solid 1px black;background-color:'+this.cBarColor+';"><\/div>'
306				c += '<div style="position:absolute;width:'+wb+'px;height:24px;left:'+(5+wb*i)+'px;bottom:4px;text-align:center;font-size:8px;">'+i+'<\/div>'
307				c += '<div style="position:absolute;width:1px;height:4px;left:'+(5+wb*(i+0.5))+'px;bottom:28px;border-left:solid 1px black;"><\/div>'
308			}
309			
310			for(i=0;i<=nMaxX;i++) {
311				hb = (h-30-50)*aVal[i]/nMaxY;
312				c += '<div id="'+this.id+'_val_'+i+'" style="position:absolute;display:none;text-align:center;width:60px;height:20px;left:'+(5+wb*(i+0.5)-30)+'px;bottom:'+(40+hb+2)+'px;color:blue;font-size:10px;font-weight:bold;">'+aVal[i]+'<\/div>';
313			}
314				
315			
316			// desenha as médias
317			for(i=0;i<d.medias.length;i++) {
318				hb = h-60+10*i;
319				if (d.medias[i].val>=(nMaxX/2)) {
320					ix = d.medias[i].val+0.5;				
321					c += '<div style="position:absolute;width:'+wb+'px;height:'+hb+'px;left:'+(5+wb*ix)+'px;bottom:30px;border-left:solid 2px maroon;border-top:solid 2px maroon;"><\/div>'
322					c += '<div style="position:absolute;height:12px;left:'+(5+wb*ix+wb+2)+'px;bottom:'+(30+hb-7)+'px;font-size:9px;">'+d.medias[i].title+'<\/div>'
323				}
324				else {				
325					ix = d.medias[i].val-0.5;
326					c += '<div style="position:absolute;width:'+wb+'px;height:'+hb+'px;left:'+(5+wb*ix)+'px;bottom:30px;border-right:solid 1px black;border-top:solid 1px black;"><\/div>'
327					c += '<div style="position:absolute;height:12px;right:'+(5+wb*ix-2+wb)+'px;bottom:'+(30+hb-7)+'px;text-align:right;font-size:9px;">'+d.medias[i].title+'<\/div>'
328				}
329			}
330		
331			$('#'+this.id+'_graph').html(c);
332			
333			$("[id^='"+this.id+"_bar_']").mouseover(function(t1) {
334				return function() {
335					var i = parseInt($(this).data('bar'));
336					$(this).css({"box-shadow":"0px 0px 10px 2px rgba(0,0,0,0.75)","background-color":"rgb(220,220,255)"});
337					$('#'+t1.id+'_val_'+i).show();
338				}
339			}(this));
340			
341			$("[id^='"+this.id+"_bar_']").mouseout(function(t1) {
342				return function() {
343					var i = parseInt($(this).data('bar'));
344					$(this).css({"box-shadow":"","background-color":t1.cBarColor});
345					$('#'+t1.id+'_val_'+i).hide();
346				}
347			}(this));
348		}
349	}
350}	
351
352function fMontaHistograma(id,u,b) {
353	if (typeof u.codigo_usuario != "undefined") {
354		
355		$.ajax({
356			dataType: "json",
357			url: "servicos/histograma",
358			data: {"edital": b.codigo_edital.codigo, "diretoria":b.codigo_diretoria_ensino, "escola":b.codigo_escola_origem},
359			success: function(id1,u1,b1) {
360				return function(d) {
361					var i,lEmpty = true;
362					console.log(d);
363					if (d.status=='ok') {
364						for(i=0;i<d.result.length;i++) {
365							if (d.result[i].val.length!=0) {
366								lEmpty = false;
367								break;
368							}
369						}
370						if (lEmpty) {
371							$('#'+id1).hide();
372						}
373						else {
374							$('#'+id1).show();
375							$('#'+id1).html('');
376							var T = new TFuvHistograma(id1,d);
377						}
378					}
379					else {
380						$('#'+id1).show();
381						$('#'+id1).html('Falha ao carregar histograma.<br>'+d.message+'<br>');						
382					}
383				}  
384			}(id,u,b)
385		});
386		
387		
388	}
389}
390
391class FuvAdmin {
392	constructor (idparent, id) {
393		var t = this;
394		t.idparent = idparent;
395		t.id = id;
396		t.nOffset = 0;
397		t.nPageSize = 10;
398		
399		
400		var c =	'<div class="modal fade" id="'+this.id+'_dialog" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">'+
401				'  <div class="modal-dialog" role="document">'+
402				'    <div class="modal-content">'+
403				'      <div class="modal-header">'+
404				'        <h5 class="modal-title" id="exampleModalLabel">Digite o nome ou CPF do candidato</h5>'+
405				'        <button type="button" class="close" data-dismiss="modal" aria-label="Close">'+
406				'          <span aria-hidden="true">&times;</span>'+
407				'        </button>'+
408				'      </div>'+
409				'      <div class="modal-body">';
410		
411		// formulário
412		c += 	'    	<div class="row">'+
413				'   	 	<div class="col-sm-8">'+
414				'				<input id="'+this.id+'_text" type="text" class="form-control" placeholder="Nome ou CPF" value="" required>'+
415				'				<div id="'+this.id+'_invalid" class="invalid-feedback">digite ao menos 4 caracteres</div>'+
416				'			</div>'+
417				'    		<div class="col-sm-4" style="text-align:center;">'+
418				'				<button id="'+this.id+'_do" class="btn"> Pesquisar <\/button>'+
419				'			</div>'+
420				'			<div style="clear:both;"><\/div>'+	
421				'		</div>';
422
423		c +=	'      	<div id="'+this.id+'_result" style="position:relative;padding:4px;margin:10px 0px 4px 0px;">'+  // resultado da pesquisa
424				'      	</div>'+
425				'      </div>'+
426				'      <div class="modal-footer">'+
427				'        <button type="button" class="btn btn-secondary" data-dismiss="modal">Fechar</button>'+
428				'      </div>'+
429				'    </div>'+
430				'  </div>'+
431				'</div>';
432		$('body').append(c);
433		
434		
435		$('#' + t.id + '_button').remove();
436		
437		c = '<div id="' + t.id + '_button" style="position:absolute;top:4px;left:4px;cursor:pointer;width:52px;height:52px;"><\/div>';
438		
439		$('#' + t.idparent).append(c);
440		
441		$('#' + t.id + '_button').click(function() {
442			$("#" + t.id + "_dialog").modal();
443			$("#" + t.id + "_text").focus();
444		});
445		
446		$('#'+this.id+'_text').keyup(function(t) {
447			return function(e){
448				var key = (e.keyCode ? e.keyCode : e.which); 
449				var c = $('#'+t.id+'_text').val()+'';
450				if (c.length<4) {
451					$('#'+t.id+'_invalid').show();
452				} 
453				else {
454					$('#'+t.id+'_invalid').hide();
455				}
456				if (key==13) {
457					$('#'+t.id+'_do').click();
458				}
459			}
460		}(this));
461		
462		$('#' + t.id + '_do').click(function() {
463			t.nOffset = 0;
464			t.getdata();
465		});
466		
467	}
468	
469	execute(i) {
470		$.ajax({
471			dataType: "json",
472			url: "servicos/admSet",
473			data: {"code": i},
474			success: function(t1) {
475				return function(d) {
476					console.log(d);
477					if (d.result === 'ok') {
478						window.location.href = "/inicio";
479					}
480					else {
481						console.log(d);
482					}
483				}  
484			}(this)
485		});
486	}
487	
488	getdata() {
489		var c = ($('#'+this.id+'_text').val() + '').trim();
490		if (c.length >= 4) {
491			$.ajax({
492				dataType: "json",
493				url: "servicos/pesquisaCandidato",
494				data: {"nome":c, "offset":this.nOffset, "size": this.nPageSize},
495				success: function(t1) {
496					return function(d) {
497						console.log(d);
498						if (d.result === 'ok') {
499							var i,c='';
500							for(i=0;i<d.data.length;i++) {
501								c += '<div id="'+t1.id+'_code_'+d.data[i].codigo_usuario+'" style="margin:4px 0px 4px 0px;padding:4px;border-bottom:dotted 1px gray;cursor:pointer;" data-code="'+d.data[i].codigo_usuario+'">';
502								c += '<p style="margin:0px;">'+d.data[i].nome_usuario+'<\/p>';
503								c += '<p style="margin;0px;font-size:66%;color:gray;">'+d.data[i].cpf_usuario+' '+d.data[i].email_usuario+'<\/p>';
504								c += '<\/div>';
505							}
506							c += '<p style="font-size:75%;margin:4px 4px 4px 20px;">Mostrando '+d.data.length+' resultados ('+(t1.nOffset+1)+' a '+(t1.nOffset+d.data.length)+') de '+d.data[0].total_linhas+' poss&iacute;veis.<\/p>'
507							
508							if (t1.nOffset>0) {
509								c += '<span id="'+t1.id+'_prior" class="cFAW" style="font-size:16px;font-weight:bold;position:absolute;bottom:2px;left:2px;cursor:pointer;">&#xf053;<\/span>'
510							}
511							
512							if ((t1.nOffset+t1.nPageSize-1)<d.data[0].total_linhas) {
513								c += '<span id="'+t1.id+'_next" class="cFAW" style="font-size:16px;font-weight:bold;position:absolute;bottom:2px;right:2px;cursor:pointer;">&#xf054;<\/span>'
514							}
515							
516							$('#'+t1.id+'_result').html(c);
517							
518							$("[id^='"+t1.id+"_code_']").click(function(t2) {
519								return function() {
520									var nCode = $(this).data('code');
521									t2.execute(nCode);
522								}
523							}(t1));
524							
525							if (t1.nOffset>0) {
526								$("#"+t1.id+"_prior").click(function(t2) {
527									return function() {
528										t2.nOffset -= t2.nPageSize;
529										if (t2.nOffset<0) {
530											t2.nOffset = 0;
531										}
532										t2.getdata();
533									}
534								}(t1));
535							}
536							
537							if ((t1.nOffset+t1.nPageSize-1)<d.data[0].total_linhas) {
538								$("#"+t1.id+"_next").click(function(t2) {
539									return function() {
540										t2.nOffset = t2.nOffset+t2.nPageSize;
541										t2.getdata();
542									}
543								}(t1));
544							}
545							
546							
547						}
548						else {
549							$('#'+t1.id+'_result').html(d.message);	
550						}							
551					}  
552				}(this)
553			});
554		}
555	}
556}
557
558var fuvConst = {
559	FACE_CHECK_NONE: 0,
560	FACE_CHECK_TRACKER: 1,
561	FACE_CHECK_FACE_JS: 2,
562	FACE_CHECK_EXTERNAL: 3,
563	
564	FACE_MIN_W: 120,
565	FACE_MIN_H: 120,
566	FLUXO_EDITAL_ENEM: 12
567}
568
569var fuvutils = {
570	isMobile: function() {
571		return navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i)  || navigator.userAgent.match(/iPhone/i)  || navigator.userAgent.match(/iPad/i)  || navigator.userAgent.match(/iPod/i)  || navigator.userAgent.match(/BlackBerry/i)  || navigator.userAgent.match(/Windows Phone/i)
572	},
573	
574	toString: function(a, sep) {
575		var c,s = "",i;
576		for(i=0;i<a.length;i++) {
577			if (i!=0) s += sep;
578			c = ""+a[i];
579			if (c.length>10) c = c.substr(0, 10);
580			s += c;
581		}
582		return s;
583	},
584
585	getLoadingImage: function(w) {
586		return "<img src=\"data:image/png;base64,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\" style=\"width:"+w+"px\">";  
587	},
588  
589	fFullBackgroundZ: function (id, z) {
590		var w = jQuery(document).width();
591		var h = jQuery(document).height();
592		return '<div id="'+id+'" style="position:absolute;top:0px;left:0px;width:'+w+'px;height:'+h+'px;background-color:rgba(16,16,16,0.90);z-index:'+z+';"><\/div>';
593	},
594  
595	fCloseWindow: function(id) {
596		jQuery('#'+id+'_background').remove();
597		jQuery('#'+id).remove();
598		jQuery('body').css({"overflow":""});
599	},
600  
601	fCreateWindow: function(caller,w,caption,text,id,zindex) {
602		if (w=='max') {
603		}
604		var wm=w,x=0,y=10,o=$(window);
605		if (o.length>0) {
606			x = 0
607			wm = o.width()
608			if (w>wm) {
609				w = wm-20
610			}
611			else {
612				x = (wm-w)/2
613			}
614		}
615		if (x==0) {
616			x = 10
617		}
618
619		var c = this.fFullBackgroundZ(id+'_background', zindex-1);
620		c += '<div id="'+id+'" style="position:fixed;top:'+y+'px;left:'+x+'px;width:'+w+'px;max-height:'+(o.height()-40)+'px;border-radius:5px;background-color:rgb(245,245,255);border:solid 1px silver;box-shadow:0 3px 3px rgba(0,0,0,0.2);z-index:'+zindex+'">'+
621			 '<div style="padding:4px">'+
622			 '<p style="font-size:16px;font-weight:bold;padding:5px 0px 5px 0px;text-align:center;">'+caption+'<\/p>'+
623			 text+
624			 '<\/div>'+
625			 '<\/div>';
626		jQuery('body').append(c);
627		jQuery('body').css({"overflow":"hidden"});
628		
629		y = ((o.height()-40)-jQuery('#'+id).height())/2;
630		jQuery('#'+id).css({"top":y+"px"});
631		
632		jQuery('#'+id+'_background').click(function(this1,id1) {
633			return function() {
634				this1.fCloseWindow(id1)
635			}
636		}(this,id))
637	},
638
639	fAlert: function(caption,data,zindex,f) {
640		var c = data+'<p style="text-align:center;margin:10px 0px 5px 0px"><button id="idAlertClose" class="cjsButton"> <span class="cFAW" style="color:red;">&#xf00d;<\/span> Fechar <\/button><\/p>';
641		this.fCreateWindow('',640,caption,c,'alert',zindex);
642		jQuery('#idAlertClose').click(function(this1,f1){
643			return function() {
644				this1.fCloseWindow('alert');
645				f1();
646			}
647		}(this,f));
648	},
649
650	//
651	// converte o formato do resultado
652	//
653	convertFaceDescriptor: function(r, timeLoadNet, timeFaceDescr) {
654		if (typeof r === "undefined") {
655			return r;
656		}
657		
658		var o = {};
659		o['hostname'] = 'facejs';
660		o['pid'] = 1;
661		o['count'] = 1;
662		o['result'] = 'ok';
663		o['angle'] = 0;
664		o['crc32'] = 0;
665		o['dims'] = [150,150];
666		o['rect'] = [r.alignedRect.box.left, r.alignedRect.box.top, r.alignedRect.box.right, r.alignedRect.box.bottom];
667		o['time_facedescr'] = timeFaceDescr;
668		o['time_findface'] = 0;
669		o['time_landmarks'] = 0;
670		o['time_netsetup'] = timeLoadNet;
671		o['time_crc32'] = 0;
672		a = [];
673		for(i=0;i<128;i++) {
674			a.push(r.descriptor[i]);
675		}
676		o['facedescr'] = a;
677
678		a = [68];
679		for(i=0;i<68;i++) {
680			a.push(Math.round(r.landmarks.positions[i]._x));
681			a.push(Math.round(r.landmarks.positions[i]._y));
682		}
683		o['landmark'] = a;
684		return o;
685	},
686
687	removeOverlay: function(id) {
688		jQuery('#'+id).remove();
689	},
690
691	displayOverlayOnTop: function(id,selectorparent,message) {
692		var parent = jQuery(selectorparent); 
693		var x = parent.offset().left-5;
694		var y = parent.offset().top-5;
695		var w = parent.width()+10;
696		var z = parent.css("z-index");
697		if (isNaN(z)) {
698			z = 1000;
699		}
700		z += 100;
701
702		jQuery('body').append(
703			'<div id="'+id+'" style="position:absolute;left:'+x+'px;top:'+y+'px;width:'+w+'px;background-color:rgba(255,230,230,0.9);padding:10px;border-radius:4px;color:#777;font-size:16px;box-shadow:0px 0px 10px 0px rgba(50, 50, 50, 0.75);text-align:center;z-index:'+z+'">'+
704			message+
705			'<\/div>'
706		);
707	},
708  
709	getResizedCanvas(canvas, nw) {
710		newcanvas = document.createElement('canvas');
711		newcanvas.width = nw;
712		newcanvas.height = canvas.height*nw/canvas.width;
713		var newctx = newcanvas.getContext('2d');
714		newctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, newcanvas.width, newcanvas.height);
715		return newcanvas;
716	},
717	
718	doubleWidth(canvas) {
719		newcanvas = document.createElement('canvas');
720		newcanvas.width = 2*canvas.width;
721		newcanvas.height = canvas.height;
722		var newctx = newcanvas.getContext('2d');
723		newctx.drawImage(canvas, 0, 0);
724		return newcanvas;
725	},
726  
727	getPointTR: function(selector, dx, dy, selector2 = null) {
728		var p = jQuery(selector);
729	
730		if (p.length == 0) {
731			p = jQuery(selector2);
732		}
733		
734		if (this.isMobile()) {
735			return {x:p.offset().left-dx,y:p.offset().top-dx};
736		}
737		else {
738			return {x:p.offset().left+p.width()+dx,y:p.offset().top+dy}; 
739		}
740	},
741	
742	getPointTL: function(selector,dx,dy) {
743		var p = jQuery(selector);
744	
745		return {x:p.offset().left+dx,y:p.offset().top+dy}; 
746	},
747	
748	drawCanvasLandmarks: function(id, xy, canvas, facerec, nw) {
749		var x,y,i,newcanvas = document.createElement('canvas');
750		newcanvas.width = canvas.width;
751		newcanvas.height = canvas.height;
752		var newctx = newcanvas.getContext('2d');
753		newctx.drawImage(canvas, 0, 0);
754	 
755		newctx.lineWidth = 1;
756		newctx.strokeStyle = 'red';
757		newctx.strokeRect(facerec.rect[0], facerec.rect[1], facerec.rect[2]-facerec.rect[0], facerec.rect[3]-facerec.rect[1]);
758	  
759		var j = 1;
760		for(i=0;i<facerec.landmark[0];i++) {
761			x = facerec.landmark[j++];
762			y = facerec.landmark[j++];
763			newctx.beginPath();
764			newctx.arc(x, y, 2, 0, 2 * Math.PI, false);
765			newctx.fillStyle = 'white';
766			newctx.fill();
767			newctx.lineWidth = 0.5;
768			newctx.strokeStyle = 'black';
769			newctx.stroke();
770		}
771	  
772		var c = '<img id="'+id+'" src="'+newcanvas.toDataURL("image/png")+'" style="position:absolute;top:'+xy.y+'px;left:'+xy.x+'px;width:'+nw+'px;box-shadow:0px 0px 10px 0px rgba(50, 50, 50, 0.75);">';
773		jQuery('#'+id).remove();
774		jQuery('body').append(c);
775	},
776	
777	desenhaFaceLandmarks: function(canvas, face, facerec) {
778		var ctx = canvas.getContext('2d');
779		ctx.drawImage(face, 0, 0);
780		var j = 1;
781		for(i=0;i<facerec.landmark[0];i++) {
782			x = facerec.landmark[j++];
783			y = facerec.landmark[j++];
784			ctx.beginPath();
785			ctx.arc(x, y, 2, 0, 2 * Math.PI, false);
786			ctx.fillStyle = 'white';
787			ctx.fill();
788			ctx.lineWidth = 0.5;
789			ctx.strokeStyle = 'black';
790			ctx.stroke();
791		}		
792	},
793	
794	//
795	// rotaciona o canvasSource em degAngle graus, devolvendo como resultado um novo canvas
796	//
797	fRotate(canvasSource, degAngle) {
798		var localCanvas = document.createElement('canvas');
799		var localCtx = localCanvas.getContext('2d');
800		
801		while (degAngle<0) {
802			degAngle += 360;
803		}
804		
805		while (degAngle>=360) {
806			degAngle =- 360;
807		}
808		
809		if (degAngle==0) {
810			localCanvas.width = canvasSource.width;
811			localCanvas.height = canvasSource.height;
812			localCtx.drawImage(canvasSource, 0, 0);
813		}
814		else if ((degAngle==90)||(degAngle==270)) {
815			localCanvas.width = canvasSource.height;
816			localCanvas.height = canvasSource.width;
817			
818			localCtx.translate(localCanvas.width/2,localCanvas.height/2);
819			
820			localCtx.rotate(degAngle*Math.PI/180);;
821			localCtx.drawImage(canvasSource, -canvasSource.width/2, -canvasSource.height/2);
822		}
823		else if (degAngle<=90) {
824			var w = canvasSource.width;
825			var h = canvasSource.height;
826			var a = degAngle*Math.PI/180;
827			var neww = w*Math.cos(a)+h*Math.sin(a);
828			var newh = w*Math.sin(a)+h*Math.cos(a);
829			
830			localCanvas.width = neww;
831			localCanvas.height = newh;
832			
833			localCtx.fillStyle = "#ffffc0";
834			localCtx.fillRect(0, 0, neww, newh);
835			
836			localCtx.translate(localCanvas.width/2,localCanvas.height/2);
837			
838			localCtx.rotate(a);
839			localCtx.drawImage(canvasSource, -canvasSource.width/2, -canvasSource.height/2);
840		}
841		else if (degAngle<=180) {
842			var w = canvasSource.width;
843			var h = canvasSource.height;
844			var a = (degAngle-90)*Math.PI/180;
845			var neww = h*Math.cos(a)+w*Math.sin(a);
846			var newh = h*Math.sin(a)+w*Math.cos(a);
847			
848			localCanvas.width = neww;
849			localCanvas.height = newh;
850			
851			localCtx.fillStyle = "#ffffc0";
852			localCtx.fillRect(0, 0, neww, newh);
853			
854			localCtx.translate(localCanvas.width/2,localCanvas.height/2);
855			
856			a = degAngle*Math.PI/180;
857			
858			localCtx.rotate(a);
859			localCtx.drawImage(canvasSource, -canvasSource.width/2, -canvasSource.height/2);
860		}
861		else if (degAngle<=270) {
862			var w = canvasSource.width;
863			var h = canvasSource.height;
864			var a = (degAngle-90)*Math.PI/180;
865			var neww = -h*Math.cos(a)+w*Math.sin(a);
866			var newh = h*Math.sin(a)-w*Math.cos(a);
867			
868			localCanvas.width = neww;
869			localCanvas.height = newh;
870			
871			localCtx.fillStyle = "#ffffc0";
872			localCtx.fillRect(0, 0, neww, newh);
873			
874			localCtx.translate(localCanvas.width/2,localCanvas.height/2);
875			
876			a = degAngle*Math.PI/180;
877			
878			localCtx.rotate(a);
879			localCtx.drawImage(canvasSource, -canvasSource.width/2, -canvasSource.height/2);
880		}
881		else {
882			var w = canvasSource.width;
883			var h = canvasSource.height;
884			var a = degAngle*Math.PI/180;
885			var neww = -w*Math.cos(a)+h*Math.sin(a);
886			var newh = w*Math.sin(a)-h*Math.cos(a);
887			
888			localCanvas.width = neww;
889			localCanvas.height = newh;
890			
891			localCtx.fillStyle = "#ffffc0";
892			localCtx.fillRect(0, 0, neww, newh);
893			
894			localCtx.translate(localCanvas.width/2,localCanvas.height/2);
895			
896			localCtx.rotate(a);
897			localCtx.drawImage(canvasSource, -canvasSource.width/2, -canvasSource.height/2);
898		}
899	
900		return localCanvas;
901	},
902	
903	imgToCanvas: function(img) {
904		var canvas = document.createElement('canvas');
905		var ctx = canvas.getContext('2d');
906		canvas.width = img.naturalWidth;
907		canvas.height = img.naturalHeight;
908		ctx.drawImage(img, 0, 0);
909		return canvas;
910	},
911	
912	dataToCanvas: function(data) {
913		return new Promise((resolve, reject) => {
914			var img = new Image;
915			img.onload = function() {
916				var canvas = document.createElement('canvas');
917				var ctx = canvas.getContext('2d');
918				canvas.width = this.naturalWidth;
919				canvas.height = this.naturalHeight;
920				ctx.drawImage(this, 0, 0);
921				resolve(canvas);
922			}
923			img.src = data;
924		});
925	},
926	
927	resizeImageW: function(img, maxdim) {
928		var canvas = document.createElement('canvas');
929		var ctx = canvas.getContext('2d');
930		canvas.width = maxdim;
931		canvas.height = img.height/img.width*maxdim;
932		ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, canvas.width, canvas.height);
933		return canvas.toDataURL("image/jpeg");
934	},
935	
936	resizeImageH: function(img, maxdim) {
937		var canvas = document.createElement('canvas');
938		var ctx = canvas.getContext('2d');
939		canvas.height = maxdim;
940		canvas.width = img.width/img.height*maxdim;
941		ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, canvas.width, canvas.height);
942		return canvas.toDataURL("image/jpeg");
943	},
944	
945	resizeImageMaxDimension: function(img, maxdim) {
946		if (img.width>img.height) {
947			return this.resizeImageW(img, maxdim);
948		}
949		else {
950			return this.resizeImageH(img, maxdim);
951		}
952	}
953}
954
955
956var fuvface = {
957	timeToLoadNets: 0,
958	readyToCheckPhoto: false,
959	useTinyFaceDetector: true,
960	isVerbose: true,
961	timeToProcessPhoto: 0,
962	displayDebug: function(s) {
963		if (this.isVerbose) {
964			console.log(s);
965		}
966	},
967	initialize: function() {
968		this.timeToLoadNets = Date.now();
969		this.readyToCheckPhoto = false;
970		jQuery.getScript("js/face-api.min.js?version=0.22.2").done(function(self) {
971			return function(script, textStatus) {
972				if (self.useTinyFaceDetector) {
973					self.loadTinyFaceDetector();
974				}
975				else {
976					self.loadSsdMobilenetv1();
977				}
978			}
979		}(this)).fail(function(self) {
980			return function(jqxhr, settings, e) {
981				self.displayDebug("falha ao carregar o script: "+e.message);
982			}
983		}(this));
984	},
985	
986	loadFaceRecognitionNet: function() {
987		this.displayDebug('iniciando carga de faceRecognitionNet');
988		faceapi.nets.faceRecognitionNet.loadFromUri('js/models').then(function(self) {
989			return function() {
990				jQuery("#botaoUploadFoto").removeAttr("disabled");
991				self.displayDebug('faceRecognitionNet carregada');
992				self.readyToCheckPhoto = true;
993				self.displayDebug('sistema pronto para realizar reconhecimento');
994				self.timeToLoadNets = Date.now()-self.timeToLoadNets;
995			}
996		}(this), function(self) {
997			return function() {
998				self.displayDebug('falha ao carregar faceRecognitionNet');
999			}
1000		}(this));
1001	},
1002	
1003	loadFaceLandmark68TinyNet: function() {
1004		this.displayDebug('iniciando carga de faceLandmark68TinyNet');
1005		faceapi.nets.faceLandmark68TinyNet.loadFromUri('js/models').then(function(self) {
1006			return function() {
1007				self.displayDebug('faceLandmark68TinyNet carregada');
1008				self.loadFaceRecognitionNet();
1009			}
1010		}(this), function(self) {
1011			return function() {
1012				self.displayDebug('falha ao carregar faceLandmark68TinyNet');
1013			}
1014		}(this));
1015	},
1016	
1017	loadSsdMobilenetv1: function() {
1018		this.displayDebug('iniciando carga de ssdMobilenetv1');
1019		faceapi.nets.ssdMobilenetv1.loadFromUri('js/models').then(function(self) {
1020			return function() {
1021				self.displayDebug('ssdMobilenetv1 carregada');
1022				self.loadFaceLandmark68TinyNet();
1023			}
1024		}(this), function(self) {
1025			return function() {
1026			 self.displayDebug('falha ao carregar ssdMobilenetv1');
1027			}
1028		}(this));
1029	},
1030	
1031	loadTinyFaceDetector: function() {
1032		this.displayDebug('iniciando carga de tinyFaceDetector');
1033		faceapi.nets.tinyFaceDetector.loadFromUri('js/models').then(function(self) {
1034			return function() {
1035				self.displayDebug('tinyFaceDetector carregada');
1036				self.loadFaceLandmark68TinyNet();
1037			}
1038		}(this), function(self) {
1039			return function() {
1040			 self.displayDebug('falha ao carregar tinyFaceDetector');
1041			}
1042		}(this));
1043	},
1044	
1045	realizaReconhecimentoFacial: function(canvas, f) {
1046		var faceOptions;
1047		if (this.useTinyFaceDetector) {
1048			faceOptions = new faceapi.TinyFaceDetectorOptions();
1049		}
1050		else {
1051			faceOptions = new faceapi.SsdMobilenetv1Options({});
1052		}
1053		
1054		this.timeToProcessPhoto = 0;
1055		
1056		faceapi.detectSingleFace(fuvutils.doubleWidth(canvas), faceOptions).
1057			withFaceLandmarks(true).
1058			withFaceDescriptor().then(function(self,finalCanvas1,f1) { // resultado encontrado
1059				return function(r) {
1060					if (typeof r === "undefined") {
1061						r = {"result":"failed","info":"Face não encontrada"};
1062						f1(r);
1063					}
1064					else {
1065						r = fuvutils.convertFaceDescriptor(r, self.timeToLoadNets, Date.now()-self.timeToProcessPhoto);
1066						if (((r.rect[2]-r.rect[0])<fuvConst.FACE_MIN_W)||((r.rect[3]-r.rect[1])<fuvConst.FACE_MIN_H)) {
1067							r = {"result":"failed","info":"Face muito pequena"};
1068						}
1069						f1(r);
1070					}
1071				}
1072			}(this,canvas,f), function(self1,finalCanvas1,f1) { // falha 
1073				return function() {
1074					var r;
1075					r = {"result":"failed","info":"Face não encontrada"};
1076					f1(r);
1077				}
1078			}(this,canvas,f));
1079	}
1080}
1081
1082$(document).ready(function() {
1083	var host = "" + location.hostname;
1084	if ((host === "localhost") || (host === "127.0.0.1") || (host.indexOf("192.168.") === 0)) {
1085		// não executar em modo local
1086	}
1087	else {
1088		jsGlobalLoadScript("https://bin.fuvest.br/js/lgpd.js", function() {
1089
1090		}, 'utf-8');
1091	}
1092});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.