;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Esse conteúdo é antigo

Juiz de garantias não pode ser só para Lava Jato, diz presidente da Ajufe

Fernando Mendes, presidente da Ajufe (Associação dos Juízes Federais do Brasil) - Divulgação/Ajufe
Fernando Mendes, presidente da Ajufe (Associação dos Juízes Federais do Brasil) Imagem: Divulgação/Ajufe

Pedro Prata e Fausto Macedo

Em São Paulo

25/12/2019 17h10

O presidente da Ajufe (Associação de Juízes Federais), Fernando Mendes, espera que a regulamentação do juiz de garantias, sancionado dentro do pacote anticrime pelo presidente Jair Bolsonaro, seja regulamentado "de forma uniforme em todo o Brasil". Para ele, é necessário que a medida se aplique em todo o país, e não somente "nas capitais e para os crimes de colarinho branco".

"Se o instituto é realmente importante, tem de ser aplicado para todos, seja nos processos da Lava Jato, seja nos processos de crimes comuns, que são milhares tramitando no interior do país e que precisam ter as mesmas garantias", disse Mendes.

Ele lembra que a Ajufe se posicionou contrária à criação do juiz de garantias dentro do pacote anticrime, originalmente enviado ao Congresso pelo ministro Sergio Moro, da Justiça e Segurança Pública.

"Sem dúvida, o tema mais polêmico do projeto", avalia Mendes. "A Justiça Federal terá de redesenhar a sua estrutura e redefinir a competência penal para tornar possível a implementação do juiz de garantias."

Para o criminalista Mauricio Silva Leite, mestre em Processo Penal e doutorando em Processo Penal na PUC/SP, a instituição de um juiz de garantias para a fase de inquérito policial é positiva no sentido de garantir maior independência ao magistrado responsável pela ação penal.

Ele diz. "Este não terá qualquer vinculação com as eventuais medidas cautelares anteriores deferidas em desfavor do acusado e poderá, assim, decidir livremente quando instaurado o processo judicial."

No entanto, ele acredita que a lei sancionada foi infeliz ao submeter o recebimento da denúncia ao juiz de garantias.

"Tal providência, quanto à análise dos requisitos legais exigíveis para a instauração válida da ação penal, deveria ter sido reservada ao magistrado destinatário do processo judicial, justamente porque será o responsável pelo feito e não terá vinculação com atos anteriores praticados", argumenta Silva Leite.

Para ele, é fundamental que o Poder Judiciário se estruture para viabilizar o cumprimento das novas regras. "A intervenção do juiz nas investigações é fundamental para o controle da legalidade dos atos praticados na fase de inquérito policial."