(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();
}
})();
Kissing, chemistry and sparks are flying on the set of Monte Carlo between Leighton Meester and Luke Bracey!
Leighton Meester has been a single lady since breaking up with her Gossip Girl ex Sebastian Stan last spring, but her relationship status may be changing. An insider tells Hollywoodlife.com things between Leighton and her on-screen Monte Carlo love interestLuke Bracey, are heating up to what could be a sizzling summer romance!
“[They are] not currently an official item, but there is certainly an attraction,” our source spills. “They are very close, but don’t look for wedding bells anytime soon.”
Judging from the pics leaked from their steamy on-camera kissing scenes, 24-year-old Leighton is very at home in Luke’s arms.
A relative unknown in the acting biz, Luke only began acting professionally on the Australian soap opera Home and Away a year ago and this romantic comedy, which also stars teen megastar Selena Gomez and Katie Cassidy, is his first big break.
👉 For more insights, check out this resource.
Do Luke and Leighton equal love forever? Stay tuned.
Aimee Curran, with reporting by Russ Weakland
Read More On Gorgeous Leighton HERE:
- Hey BFFs-Katie Cassidy Is Joining Her New Bestie, Leighton Meester, On ‘Gossip Girl!;
- ‘Gossip Girl’ Is Bringing Sexy To A Different City-Will Shoot Episodes In Paris!
- Tons Of Celebs Went Out After The Met Ball! Look Who Hit The After Party At NYC’s Boom Boom Room!
- OMG! Another ‘Gossip Girl’ Couple Calls It Quits – Leighton Meester Dumps BF Sebastian Stan!
- Do You Love Leighton Meester’s Lightened Up Locks?
.
👉 Discover more in this in-depth guide.