(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();
}
})();
THE LIVE SHOWS ARE BACK! With the 12 remaining, and this years X Factor finalists settled into the X Factor House, there must be a thousand things running through their minds after Nick and Rita announcing their final 3 contestants Live last night, but I’m sure there’s one thing that’s concerning them the most, – what will they be singing Week 1 of the Live Shows?
This weekend is the return of The X Factor Live Shows, and it lands on the night of Halloween *insert ghost and pumpkin emoji with a spooky “ooooooh” for dramatic effect*, so does this mean we are in for a trick or treat with regards to the first week’s theme?
Well, we all know the drill when it comes to The Live Shows on The X Factor – week in, week out, The Live Shows have a specific theme. For example: last year on The Live Shows we were entertained with an Elton vs MJ week, (where the unsuccessful octoband, Stereo Kicks, were ungratefully joined on stage by comedian Lee Nelson – remember that?!) a week of Chart Number 1’s, a Medley week, and of course many others to fill the audience and viewers at home’s pleasure of weekly entertainment.
But there is one week, every year that comes and goes on ITV’s most successful talent show, the week commencing All Hallows Eve, *insert dramatic pause… dun Dun DUNNNNNNN… FRIGHT NIGHT.
👉 For more insights, check out this resource.
WATCH: Fleur East sings Michael Jackson’s Thriller | LIVE WEEK 4 | The X Factor 2014
👉 Discover more in this in-depth guide.
With Cheryl’s Groups, (4th Impact, Alien Uncovered, Reggie n Bollie) Simon’s Overs, (Bupsi, Anton Stephans, Max Stone) Nick’s Boys (Mason Noise, Che Chesterman, Seann Miley Moore) and Rita’s Girls (Louisa Johnson, Lauren Murray and Kiera Weathers) all locked in with secured places in the Live Shows this year, they’d have to make sure their performances are perfected in hope they don’t scare off ‘Everybody’, especially The Judges!
I hope the ghost Simon saw at Judges Houses with Louis Tomlinson doesn’t visit the X Factor House to make things go ‘Bump In The Night’ for the contestants this week!