;(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

Condições do tempo frustram mergulhadores; mais destroços de avião da AirAsia são encontrados

04/01/2015 08h59

Por Fergus Jensen e Fransiska Nangoy

PANGKALAN BUN/SURABAYA (Reuters) - Mergulhadores tentaram chegar aos destroços afundados do avião de ageiros da AirAsia que caiu no domingo ado, mas foram obrigados a regressar ao seu navio diante do mau tempo, enquanto que autoridades indonésias disseram ter detectado um quinto grande objeto submerso que acredita-se ser parte do avião.

A agência meteorológica da Indonésia disse que tempestades tropicais sazonais provavelmente contribuíram para o acidente, e que o tempo tem persistentemente dificultado os esforços para recuperar corpos e encontrar a caixa preta com gravadores de voo, que podem explicar por que o Airbus A320-200 mergulhou no mar uma semana atrás.

"O clima é ruim. Há uma tempestade. Tem muito vento", disse um fotógrafo da Reuters a bordo de um navio de busca e salvamento na área de buscas próxima da ilha de Bornéu.

"No início, quatro mergulhadores foram transferidos para o KRI Banda Aceh (navio da Marinha da Indonésia), mas eles cancelaram o mergulho porque as correntes marítimas eram muito fortes".

O voo QZ8501 caiu no mar de Java no último domingo, cerca de 40 minutos depois de decolar de segunda maior cidade da Indonésia, Surabaya, com direção à Cingapura. Não houve sobreviventes.

Autoridades indonésias tinham esperança de um avanço na operação quando anunciaram no sábado que os navios que utilizam sonar tinham localizado quatro grandes pedaços de detritos no fundo do mar.

O chefe da agência de busca e resgate da Indonésia, Bambang Soelistyo Fransiskus, disse em entrevista coletiva em Jacarta no domingo que um quinto objeto de quase 10 metros de comprimento tinha sido encontrado.

MAU TEMPO É FATOR PROVÁVEL

O tenente-coronel da Força Aérea Johnson Supriadi disse a pilotos em Pangkalan Bun, cidade do sul de Bornéu onde a operação de busca está baseada, que os esforços no domingo seriam divididos entre recuperar corpos e localizar destroços e também gravadores de voo e dados da cabine de controle.

Até que os investigadores possam examinar os gravadores, a causa do acidente permanece desconhecida, mas a área é conhecida por intensas tempestades sazonais. A BMKG, agência meteorológica da Indonésia, disse que o mau tempo foi provavelmente um fator no acidente.

"O documento de voo fornecido pelo escritório da BMKG mostra condições meteorológicas bastante preocupantes para a aeronave sobre a rota escolhida de cruzeiro", disse a agência em um relatório.

Uma fonte próxima à investigação disse à Reuters que os dados de radar parecem mostrar que a aeronave fez uma subida "incrivelmente" íngreme antes de cair, possivelmente, além da capacidade do A320.

O capitão indonésio, um ex-piloto de caça da força aérea, tinha 6.100 horas de voo no A320 e a última manutenção do avião ocorreu em meados de novembro, de acordo com a Indonesia AirAsia, que é em 49 por cento detida pela AirAsia baseada na Malásia.

Trinta e um corpos dos ageiros, na maior parte da Indonésia, e de tripulantes já foram recuperados, incluindo alguns ainda presos em seus assentos. Muitos mais ainda podem estar presos na fuselagem da aeronave. Nove vítimas indonésias foram identificadas.

O acidente foi o primeiro fatal sofrido pela companhia aérea de baixo custo AirAsia, cuja filial indonésia voa de pelo menos 15 destinos em todo o arquipélago.

A companhia aérea tem estado sob pressão das autoridades indonésias, que suspenderam suas operações de Surabaya para Cingapura dizendo que a empresa só tinha licença para fazer o percurso às segundas, terças, quintas-feiras e sábados.

A AirAsia na Indonésia disse que vai cooperar com o Ministério dos Transportes, enquanto sua licença é investigada.

Uma declaração conjunta da Autoridade de Aviação Civil de Cingapura (CAAS) e do Changi Airpor Group informa que a AirAsia tinha as aprovações necessárias para operar um voo diário entre Surabaya e Cingapura.