EDUCAÇÃO
Últimas Notícias
Dólar R$ -- 13:44:08 | 30 de outubro de 2026
POLICIAL

Dois cães são resgatados após mais de uma semana abandonados em casa em Goiânia e agora buscam novo lar

Luff e Afonso, dois cachorrinhos que dividiam a mesma casa e o mesmo destino, viveram cerca de uma semana abandonados em uma residência na Vila Isaura, em Goiânia, sem entender o que estava acontecendo ao redor. Juntos, o pit bull (Luff) de aproximadamente 3 anos e o cachorro sem raça definida (Afonso) de cerca de 2 anos, enfrentaram dores causadas por carrapatos espalhados por todo o corpo, fome e sede, e, além de tudo, perderam o “irmãozinho” que estava com eles: um terceiro cachorro, que foi encontrado morto dentro do imóvel, vítima de negligência. 

Foi esse cenário que levou o Grupo de Proteção Animal (GPA) a entrar na casa e resgatar os dois sobreviventes, com o apoio do projeto ‘Patas com Propósito’. Ambos foram diagnosticados com erliquiose, doença transmitida por carrapatos e Afonso precisou de uma transfusão de sangue, permanecendo internado em uma clínica veterinária. Luff já recebeu alta para seguir o tratamento em segurança.

A situação chegou ao conhecimento do Patas com Propósito no último sábado, 24, quando o projeto recebeu a denúncia de que três cães estavam sozinhos na residência havia mais de uma semana. Conforme Michelle Alves da Silva Rezende, protetora à frente da iniciativa independente, a pessoa que fez a denúncia tentou localizar o tutor, mas não encontrou ninguém; como o portão estava aberto, decidiu entrar para levar água e comida aos animais e aplicar um carrapaticida, seguindo as orientações do projeto, que inclusive disponibilizou o dinheiro para a compra do produto.

Foi nessa visita que ela se deparou com um dos três cães já sem vida. A polícia encaminhou o corpo para perícia, e os outros dois animais foram retirados da casa e entregues aos cuidados da organização, que assumiu o resgate e o boletim de ocorrência registrado ainda naquele dia.

/**
* nwe-wp-gallery.js
*
* Extraído do bundle (public.js) para uso em arquivo separado.
* Requer:
* – jQuery (window.jQuery)
* – Viewer (a lib usada no bundle; pode ser importada ou estar em window.Viewer)
*
* Estrutura esperada no HTML:
* .nwe-wp-gallery
* .nwe-wp-gallery-img img (imagem principal)
* .nwe-wp-gallery-cont-list
* .nwe-wp-gallery-arrow.left/.right (setas)
* .nwe-wp-gallery-list (container com scroll horizontal)
* .nwe-wp-gallery-list-item (thumb)
* data-original=”URL” (imagem grande)
* data-pos=”1″ (posição para o contador)
* .page span (contador/posição)
*/

(function (global) {
const DEFAULTS = {
selector: “.nwe-wp-gallery”,
viewerOptions: { title: true, url: “src” },
animation: {
scrollMs: 200,
fadeMs: 200,
arrowFadeInMs: 300,
scrollPadding: 10,
scrollMultiplier: 2,
},
};

function getJquery($) {
const jq = $ || global.jQuery;
if (!jq) {
throw new Error(“[nwe-wp-gallery] jQuery não encontrado (window.jQuery).”);
}
return jq;
}

function getViewer(ViewerClass) {
// No bundle ele aparece como “new y.a(…)”.
// Aqui aceitamos via injeção ou via global window.Viewer.
return ViewerClass || global.Viewer;
}

/**
* Liga os eventos e o comportamento do “thumb strip” + setas.
* @param {jQuery} $gallery – container .nwe-wp-gallery
* @param {object} opts
*/
function bindGalleryControls($gallery, opts) {
const $ = $gallery.constructor; // jQuery ref
const $list = $gallery.find(“.nwe-wp-gallery-list”);

// Clique nas setas para scroll horizontal
$gallery
.find(“.nwe-wp-gallery-cont-list .nwe-wp-gallery-arrow”)
.off(“click.nweGallery”)
.on(“click.nweGallery”, function () {
const itemWidth = $list.find(“.nwe-wp-gallery-list-item”).outerWidth();
const step = opts.animation.scrollMultiplier * itemWidth;

let next = $list[0].scrollLeft + step + opts.animation.scrollPadding;
if ($(this).hasClass(“left”)) {
next = $list[0].scrollLeft – step – opts.animation.scrollPadding;
}

$list.animate({ scrollLeft: next }, opts.animation.scrollMs);
});

const $items = $gallery.find(“.nwe-wp-gallery-list .nwe-wp-gallery-list-item”);

// Mostra as setas quando o usuário scrolla a lista
$list
.off(“scroll.nweGallery”)
.on(“scroll.nweGallery”, function () {
const $arrows = $(this).parent().find(“.nwe-wp-gallery-arrow”);
if ($arrows.is(“:visible”) === false) {
$arrows.fadeIn(opts.animation.arrowFadeInMs);
}
});

// Força um pequeno scroll inicial (como no bundle)
$list.scrollLeft(1);

// Clique em um thumb: ativa, troca imagem principal, atualiza contador
$items
.off(“click.nweGallery”)
.on(“click.nweGallery”, function () {
$items.removeClass(“active”);
$(this).addClass(“active”);

const $main = $gallery.find(“.nwe-wp-gallery-img”);
const data = this.dataset || {};
const original = data.original;
const pos = data.pos;

if (!original) return;

const $caption = $main.find(“span”);
const $img = $main.find(“img”);
$img.fadeOut(opts.animation.fadeMs, () => {
$img.attr(“src”, original);
$caption.html(data.caption);
$img.fadeIn(opts.animation.fadeMs);
});

if (pos != null) {
$gallery.find(“.page span”).html(pos);
}
});
}

/**
* Inicializa UMA galeria: Viewer + controles.
* @param {Element|jQuery} galleryEl
* @param {object} options
* @returns {void}
*/
function initSingleGallery(galleryEl, options = {}) {
const opts = mergeDeep({}, DEFAULTS, options);
const $ = getJquery(opts.$);
const ViewerClass = getViewer(opts.Viewer);

const $gallery = $(galleryEl);
if ($gallery.length === 0) return;

// 1) Viewer (clique na imagem e abre lightbox)
if (ViewerClass) {
// Evita duplicar Viewer caso você reinicialize via AJAX/hook
// (a lib geralmente seta “element.viewer”, mas isso depende da versão).
try {
// eslint-disable-next-line no-new
new ViewerClass($gallery[0], opts.viewerOptions);
} catch (e) {
// Se o Viewer não estiver disponível/compatível, segue só com os controles
// para não quebrar a página.
}
}

// 2) Controles (setas + thumbs)
bindGalleryControls($gallery, opts);
}

/**
* Inicializa TODAS as galerias que existem no DOM.
* @param {object} options
*/
function initAllGalleries(options = {}) {
const opts = mergeDeep({}, DEFAULTS, options);
const $ = getJquery(opts.$);

$(opts.selector).each(function () {
initSingleGallery(this, opts);
});
}

/**
* Reproduz o comportamento do bundle:
* – Ao DOMContentLoaded inicializa tudo
* – Se existir wp.hooks, registra o addAction para reinicializar galerias inseridas dinamicamente
*/
function bootstrapNweWpGallery(options = {}) {
const opts = mergeDeep({}, DEFAULTS, options);

global.addEventListener(“DOMContentLoaded”, function () {
initAllGalleries(opts);
});

// Hook usado no bundle: “nwe_next_post_after_insert”
if (global.wp && global.wp.hooks && typeof global.wp.hooks.addAction === “function”) {
global.wp.hooks.addAction(
“nwe_next_post_after_insert”,
“theme_next_post_after_insert”,
(containerEl) => {
if (!containerEl) return;

const galleries = containerEl.querySelectorAll(opts.selector);
if (!galleries || galleries.length === 0) return;

galleries.forEach((el) => initSingleGallery(el, opts));
}
);
}
}

// Helpers simples (sem depender de libs)
function isObject(item) {
return item && typeof item === “object” && !Array.isArray(item);
}

function mergeDeep(target, …sources) {
if (!sources.length) return target;
const source = sources.shift();
if (isObject(target) && isObject(source)) {
for (const key in source) {
if (isObject(source[key])) {
if (!target[key]) Object.assign(target, { [key]: {} });
mergeDeep(target[key], source[key]);
} else {
Object.assign(target, { [key]: source[key] });
}
}
}
return mergeDeep(target, …sources);
}

// Exports globais (pode trocar para export default se estiver em bundler)
global.NweWpGallery = {
initSingleGallery,
initAllGalleries,
bootstrapNweWpGallery,
};
})(window);
window.NweWpGallery.bootstrapNweWpGallery();

De acordo com a protetora, a quantidade de carrapatos encontrada nos cães indica que a negligência vinha de mais tempo. “Aquele tanto de carrapato não acontece em menos de uma semana, é improvável isso”, afirmou Michelle ao Jornal Opção. 

A delegada Simelli Lemes, titular do GPA, esclarece que a ação de resgate partiu da Central de Flagrantes, que recebeu a ocorrência na segunda-feira para dar continuidade ao procedimento. O ex-tutor foi identificado e qualificado no dia, mas não estava no local e não houve prisão em flagrante. “A polícia civil está investigando o caso. O procedimento é diligenciar para ouvir testemunhas, em seguida ouvir a versão dele”, declarou. 

/**
* nwe-wp-gallery.js
*
* Extraído do bundle (public.js) para uso em arquivo separado.
* Requer:
* – jQuery (window.jQuery)
* – Viewer (a lib usada no bundle; pode ser importada ou estar em window.Viewer)
*
* Estrutura esperada no HTML:
* .nwe-wp-gallery
* .nwe-wp-gallery-img img (imagem principal)
* .nwe-wp-gallery-cont-list
* .nwe-wp-gallery-arrow.left/.right (setas)
* .nwe-wp-gallery-list (container com scroll horizontal)
* .nwe-wp-gallery-list-item (thumb)
* data-original=”URL” (imagem grande)
* data-pos=”1″ (posição para o contador)
* .page span (contador/posição)
*/

(function (global) {
const DEFAULTS = {
selector: “.nwe-wp-gallery”,
viewerOptions: { title: true, url: “src” },
animation: {
scrollMs: 200,
fadeMs: 200,
arrowFadeInMs: 300,
scrollPadding: 10,
scrollMultiplier: 2,
},
};

function getJquery($) {
const jq = $ || global.jQuery;
if (!jq) {
throw new Error(“[nwe-wp-gallery] jQuery não encontrado (window.jQuery).”);
}
return jq;
}

function getViewer(ViewerClass) {
// No bundle ele aparece como “new y.a(…)”.
// Aqui aceitamos via injeção ou via global window.Viewer.
return ViewerClass || global.Viewer;
}

/**
* Liga os eventos e o comportamento do “thumb strip” + setas.
* @param {jQuery} $gallery – container .nwe-wp-gallery
* @param {object} opts
*/
function bindGalleryControls($gallery, opts) {
const $ = $gallery.constructor; // jQuery ref
const $list = $gallery.find(“.nwe-wp-gallery-list”);

// Clique nas setas para scroll horizontal
$gallery
.find(“.nwe-wp-gallery-cont-list .nwe-wp-gallery-arrow”)
.off(“click.nweGallery”)
.on(“click.nweGallery”, function () {
const itemWidth = $list.find(“.nwe-wp-gallery-list-item”).outerWidth();
const step = opts.animation.scrollMultiplier * itemWidth;

let next = $list[0].scrollLeft + step + opts.animation.scrollPadding;
if ($(this).hasClass(“left”)) {
next = $list[0].scrollLeft – step – opts.animation.scrollPadding;
}

$list.animate({ scrollLeft: next }, opts.animation.scrollMs);
});

const $items = $gallery.find(“.nwe-wp-gallery-list .nwe-wp-gallery-list-item”);

// Mostra as setas quando o usuário scrolla a lista
$list
.off(“scroll.nweGallery”)
.on(“scroll.nweGallery”, function () {
const $arrows = $(this).parent().find(“.nwe-wp-gallery-arrow”);
if ($arrows.is(“:visible”) === false) {
$arrows.fadeIn(opts.animation.arrowFadeInMs);
}
});

// Força um pequeno scroll inicial (como no bundle)
$list.scrollLeft(1);

// Clique em um thumb: ativa, troca imagem principal, atualiza contador
$items
.off(“click.nweGallery”)
.on(“click.nweGallery”, function () {
$items.removeClass(“active”);
$(this).addClass(“active”);

const $main = $gallery.find(“.nwe-wp-gallery-img”);
const data = this.dataset || {};
const original = data.original;
const pos = data.pos;

if (!original) return;

const $caption = $main.find(“span”);
const $img = $main.find(“img”);
$img.fadeOut(opts.animation.fadeMs, () => {
$img.attr(“src”, original);
$caption.html(data.caption);
$img.fadeIn(opts.animation.fadeMs);
});

if (pos != null) {
$gallery.find(“.page span”).html(pos);
}
});
}

/**
* Inicializa UMA galeria: Viewer + controles.
* @param {Element|jQuery} galleryEl
* @param {object} options
* @returns {void}
*/
function initSingleGallery(galleryEl, options = {}) {
const opts = mergeDeep({}, DEFAULTS, options);
const $ = getJquery(opts.$);
const ViewerClass = getViewer(opts.Viewer);

const $gallery = $(galleryEl);
if ($gallery.length === 0) return;

// 1) Viewer (clique na imagem e abre lightbox)
if (ViewerClass) {
// Evita duplicar Viewer caso você reinicialize via AJAX/hook
// (a lib geralmente seta “element.viewer”, mas isso depende da versão).
try {
// eslint-disable-next-line no-new
new ViewerClass($gallery[0], opts.viewerOptions);
} catch (e) {
// Se o Viewer não estiver disponível/compatível, segue só com os controles
// para não quebrar a página.
}
}

// 2) Controles (setas + thumbs)
bindGalleryControls($gallery, opts);
}

/**
* Inicializa TODAS as galerias que existem no DOM.
* @param {object} options
*/
function initAllGalleries(options = {}) {
const opts = mergeDeep({}, DEFAULTS, options);
const $ = getJquery(opts.$);

$(opts.selector).each(function () {
initSingleGallery(this, opts);
});
}

/**
* Reproduz o comportamento do bundle:
* – Ao DOMContentLoaded inicializa tudo
* – Se existir wp.hooks, registra o addAction para reinicializar galerias inseridas dinamicamente
*/
function bootstrapNweWpGallery(options = {}) {
const opts = mergeDeep({}, DEFAULTS, options);

global.addEventListener(“DOMContentLoaded”, function () {
initAllGalleries(opts);
});

// Hook usado no bundle: “nwe_next_post_after_insert”
if (global.wp && global.wp.hooks && typeof global.wp.hooks.addAction === “function”) {
global.wp.hooks.addAction(
“nwe_next_post_after_insert”,
“theme_next_post_after_insert”,
(containerEl) => {
if (!containerEl) return;

const galleries = containerEl.querySelectorAll(opts.selector);
if (!galleries || galleries.length === 0) return;

galleries.forEach((el) => initSingleGallery(el, opts));
}
);
}
}

// Helpers simples (sem depender de libs)
function isObject(item) {
return item && typeof item === “object” && !Array.isArray(item);
}

function mergeDeep(target, …sources) {
if (!sources.length) return target;
const source = sources.shift();
if (isObject(target) && isObject(source)) {
for (const key in source) {
if (isObject(source[key])) {
if (!target[key]) Object.assign(target, { [key]: {} });
mergeDeep(target[key], source[key]);
} else {
Object.assign(target, { [key]: source[key] });
}
}
}
return mergeDeep(target, …sources);
}

// Exports globais (pode trocar para export default se estiver em bundler)
global.NweWpGallery = {
initSingleGallery,
initAllGalleries,
bootstrapNweWpGallery,
};
})(window);
window.NweWpGallery.bootstrapNweWpGallery();

Em busca de um de recomeço

Apesar de tudo o que passaram, Luff e Afonso surpreendem pela docilidade. Os dois se mostram brincalhões, receptivos a pessoas desconhecidas e não apresentaram nenhum sinal de agressividade desde o resgate, pelo contrário, buscam carinho constantemente. Luff, inclusive, já foi flagrado em um vídeo passeando tranquilamente com um dos protetores que estão dando moradia para os animais. 

Com a recuperação em andamento, o projeto agora concentra esforços na adoção responsável dos dois cães, que serão encaminhados separadamente. A decisão, segundo a protetora, foi tomada para garantir mais atenção e cuidado a cada um. “A gente busca a adoção para o Luff, que é o pitbull, de forma que ele seja filho único na família que ele for adotado. Exatamente para ter uma atenção maior, cuidados, amor mesmo, até mais facilidade para a adaptação dele”, explicou.

A escolha também pesa o preconceito que ainda ronda a raça: mesmo sem nunca ter demonstrado reatividade, Luff precisa de um lar sem outros animais, onde receba todo o suporte necessário. Afonso, que segue internado, aguarda alta para também ser encaminhado a uma família que abra os braços para lhe acolher.

Os interessados em adotar Luff ou Afonso podem entrar em contato com o Patas com Propósito pelo perfil @patascompropositogo no Instagram. O projeto reforça a importância da adoção responsável e do acompanhamento veterinário contínuo, sobretudo em casos de animais que sofreram abandono e maus-tratos.

Leia também:

Binance sofre ataque hacker de R$ 34 bilhões em 20 minutos; veja como foi o roubo

Mais de 250 mil goianos podem desenvolver complicação ocular do diabetes

O post Dois cães são resgatados após mais de uma semana abandonados em casa em Goiânia e agora buscam novo lar apareceu primeiro em Jornal Opção.

Fonte: www.jornalopcao.com.br