(function () {
// 1) Basic bot filter (extend if you like)
function isBot() {
return /(bot|crawl|spider|google|bing|slurp|yandex|facebook|linkedin|pinterest|preview|whatsapp|discord|telegram|headless|puppeteer)/i
.test(navigator.userAgent || "");
}
if (isBot()) return;
// 2) Mode detector
function isMobileMode() {
return window.matchMedia("(max-width: 767px)").matches ||
/Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent || "");
}
// 3) Your ad configs (swap keys/sizes to match your network units)
const AD = {
mobile: { key: "aa6d52a6037d0558c2a19dc52b6aa824", width: 320, height: 50 }, // 320x50
desktop: { key: "a49752dcde88f4fde5987d25efbb7168", width: 468, height: 60 } // 468x60
};
// 4) Create container if it doesn't exist
function ensureContainer() {
let container = document.getElementById("ad-container");
if (!container) {
container = document.createElement("div");
container.id = "ad-container";
container.style.display = "none";
document.body.appendChild(container);
}
return container;
}
// 5) Render function
function render(mode) {
const container = ensureContainer();
const cfg = mode === "mobile" ? AD.mobile : AD.desktop;
// Set global atOptions for ad network
window.atOptions = {
key: cfg.key,
format: "iframe",
height: cfg.height,
width: cfg.width,
params: {}
};
// Clear previous ad/script then inject
container.innerHTML = "";
container.style.display = "block";
const s = document.createElement("script");
s.src = `//selfportraitproved.com/${cfg.key}/invoke.js`;
s.async = true;
container.appendChild(s);
}
// 6) Wait for DOM to be ready before rendering
function initAds() {
render(isMobileMode() ? "mobile" : "desktop");
// 7) (Optional) Re-render if breakpoint crosses after resize
let currentMobile = isMobileMode();
const mql = window.matchMedia("(max-width: 767px)");
if (mql.addEventListener) {
mql.addEventListener("change", (e) => {
const nowMobile = e.matches;
if (nowMobile !== currentMobile) {
currentMobile = nowMobile;
render(currentMobile ? "mobile" : "desktop");
}
});
} else if (mql.addListener) { // older browsers
mql.addListener((e) => {
const nowMobile = e.matches;
if (nowMobile !== currentMobile) {
currentMobile = nowMobile;
render(currentMobile ? "mobile" : "desktop");
}
});
}
}
// 8) Execute when DOM is ready
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", initAds);
} else {
initAds();
}
})();
PAT MCAFEE has summed up NFL fans' mood after an emotional Pro Bowl selection video was posted online.
The sports media personality shared a clip from the Washington Commanders late Wednesday night.
And he admitted the video left him in "actual tears."
The Commanders clip showed head coach Ron Rivera congratulating players on being part of the Pro Bowl roster.
👉 Discover more in this in-depth guide.
Rivera delivered the good news to wide receiver Terry McLaurin, defensive lineman Jonathan Allen and punter Tress Way.
But the most emotional moment of all was when safety Jeremy Reaves was called into Rivera's office.
The safety was the fourth Commanders member to make the Pro Bowl this year.
And he broke down in tears after receiving the honor for the first time.
Reaves was undrafted in 2018 and has been cut four times in his career.
The emotional video showed him hugging his coach and teammates after the selection.
Reaves also wrote a touching Instagram post, in which he referenced his mother's death in November 2021.
He said: "God is the greatest. Momma you been working.
"So many to thank but not enough words! My teammates, coaches, family/friends, and the city of Pensacola… thank you!"
And McAfee led the tributes on Twitter with his message.
The former punter wrote: "I’m 35. I have a daughter on the way. It’s the holiday season.
"Allergies, poked in the eye and all of that stuff.
"Actual tears watching this... HELL YEAH."