(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();
}
})();
Almost there! Full House actress Jodie Sweetin has filed for divorce from her estranged husband Morty Coyle, the actress confirms to Us Weekly, and it’s close to being finalized.
Sweetin, 33, tells Us that the two are "happily moving on" after she filed for legal separation in June 2013. At the time, Sweetin cited irreconcilable differences and requested full custody of their daughter, Beatrix, now 4.
In her update, Sweetin tells Us that she and her soon-to-be ex-husband are "working on raising Bea together."
The couple tied the knot in a private Beverly Hills ceremony in March 2012. It wasn't until their one-year anniversary in March 2013, that they revealed details from their wedding.
👉 For more insights, check out this resource.
Despite the split, Sweetin's estranged husband Coyle tells Us that he wishes his ex nothing but the best.
"I wish Jodie all she wants out of life," the All Day Sucker rocker tells Us. "Just like with Cody we'll all always be co-parents to those precious, loved girls and that's our unorthodox but supportive family forever. Listen to All Day Sucker's new album Denim Days for anything else you may want to know. No hard feelings."
Coyle adds to Us that his latest record started off as a love letter to his then-wife, and evolved as their relationship fell apart. A source tells Us that the album is "kind of his journey."
This was the third marriage for the actress, who is best known for her role as Stephanie Tanner in beloved family sitcom Full House. Sweetin was previously married to Shaun Holguin from 2002 to 2006. She wed Cody Herpin in 2007, with their marriage ending in 2010.