(function(){
function markInternalLinks(){
var siteUrl=window.location.hostname;
var links=document.querySelectorAll('a:not([data-multilang-link]):not([data-multilang-external])');
links.forEach(function(link){
var href=link.getAttribute('href');
if(!href) return;
if(href.startsWith('/')||href.startsWith('./')||href.startsWith('?')||href.startsWith('#')){
link.setAttribute('data-multilang-link', 'true');
}else if(href.startsWith('http')){
try {
var url=new URL(href);
if(url.hostname===siteUrl){
link.setAttribute('data-multilang-link', 'true');
}else{
link.setAttribute('data-multilang-external', 'true');
}} catch (e){
link.setAttribute('data-multilang-external', 'true');
}}
});
}
function updateInternalLinks(lang){
var flags=document.querySelector('.multilang-flags');
var useQueryString=flags&&flags.getAttribute('data-use-query-string')==='1';
var defaultLang=window.multilangLangBar&&window.multilangLangBar.defaultLang ? window.multilangLangBar.defaultLang:'en';
if(!useQueryString) return;
markInternalLinks();
var links=document.querySelectorAll("a[data-multilang-link]");
links.forEach(function(link){
if(link.closest('.multilang-flags')) return;
var href=link.getAttribute('href');
if(!href) return;
try {
var url=new URL(href, window.location.origin);
if(lang===defaultLang){
url.searchParams.delete('lang');
var cleanUrl=url.pathname + url.search + url.hash;
cleanUrl=cleanUrl.replace(/([&?])lang=[^&#]*(&)?/, function(match, p1, p2){
if(p1==='?'&&p2) return '?';
if(p1==='&'&&p2) return '&';
return '';
});
cleanUrl=cleanUrl.replace(/\?$/, '');
cleanUrl=cleanUrl.replace(/\?&/, '?');
if(cleanUrl.endsWith('?')){
cleanUrl=cleanUrl.slice(0, -1);
}
link.setAttribute('href', cleanUrl);
}else{
url.searchParams.set('lang', lang);
link.setAttribute('href', url.pathname + url.search + url.hash);
}} catch (e){
}});
}
function startLinkObserver(){
var flags=document.querySelector('.multilang-flags');
var useQueryString=flags&&flags.getAttribute('data-use-query-string')==='1';
var defaultLang=window.multilangLangBar&&window.multilangLangBar.defaultLang ? window.multilangLangBar.defaultLang:'en';
var params=new URLSearchParams(window.location.search);
var cookieLang=window.getLangCookie ? window.getLangCookie():defaultLang;
var currentLang=params.get('lang')||cookieLang||defaultLang;
if(!useQueryString) return;
var observer=new MutationObserver(function(mutations){
var hasNewLinks=false;
mutations.forEach(function(mutation){
if(mutation.addedNodes.length > 0){
mutation.addedNodes.forEach(function(node){
if(node.nodeType===1){
if(node.tagName==='A'||node.querySelector('a')){
hasNewLinks=true;
}}
});
}});
if(hasNewLinks){
markInternalLinks();
updateInternalLinks(currentLang);
}});
observer.observe(document.body, { childList: true, subtree: true });
}
document.addEventListener('DOMContentLoaded', function (){
var params=new URLSearchParams(window.location.search);
var flags=document.querySelector('.multilang-flags');
var useQueryString=flags&&flags.getAttribute('data-use-query-string')==='1';
var defaultLang=window.multilangLangBar&&window.multilangLangBar.defaultLang ? window.multilangLangBar.defaultLang:'en';
var cookieLang=window.getLangCookie ? window.getLangCookie():defaultLang;
var currentLang=params.get('lang')||cookieLang||defaultLang;
if(useQueryString&&!params.get('lang')&&currentLang!==defaultLang){
window.location.replace(window.location.pathname + '?lang=' + currentLang);
}
if(useQueryString&&params.get('lang')===defaultLang){
var url=new URL(window.location.href);
url.searchParams.delete('lang');
var cleanUrl=url.pathname + url.search + url.hash;
cleanUrl=cleanUrl.replace(/\?$/, '');
cleanUrl=cleanUrl.replace(/\?&/, '?');
if(cleanUrl.endsWith('?')){
cleanUrl=cleanUrl.slice(0, -1);
}
history.replaceState(null, '', cleanUrl);
}
markInternalLinks();
updateInternalLinks(currentLang);
startLinkObserver();
});
document.addEventListener('DOMContentLoaded', function (){
setTimeout(()=> {
document.querySelectorAll('.multilang-flags').forEach(el=> {
el.classList.add('ready');
});
}, 100);
});
const params=new URLSearchParams(window.location.search);
window.getLangCookie=function(){
const match=document.cookie.match(new RegExp('(?:^|;\s*)lang=([^;]+)'));
return match ? decodeURIComponent(match[1]):null;
};
window.setLangCookie=function(value){
const d=new Date();
d.setFullYear(d.getFullYear() + 1);
document.cookie='lang=' + encodeURIComponent(value) +
';expires=' + d.toUTCString() +
';path=/';
};
window.normalizeLang=function(code){
if(!code) return null;
return code.split("-")[0].toLowerCase();
};
let defaultLang='en';
if(window.multilangLangBar){
defaultLang=window.multilangLangBar.defaultLang||'en';
}
let lng=params.get("lang")||window.getLangCookie();
if(!lng){ lng=document.documentElement.getAttribute("lang"); }
if(!lng){ lng=navigator.language||navigator.userLanguage||defaultLang; }
lng=normalizeLang(lng)||defaultLang;
document.body.className=document.body.className.replace(/\blang-[a-z]{2}\b/g, '').trim();
document.body.classList.add('lang-' + lng);
document.querySelector('html').setAttribute("data-lang", lng);
document.querySelector('html').setAttribute("lang", lng);
document.body.setAttribute("lang", lng);
window.setLangCookie(lng);
if(window.multilangLangBar&&window.multilangLangBar.html){
document.body.insertAdjacentHTML('beforeend', window.multilangLangBar.html);
}
let useQueryString=false;
const flags=document.querySelector('.multilang-flags');
if(flags){
useQueryString=flags.getAttribute('data-use-query-string')==='1';
}
if(useQueryString&&!params.get('lang')&&lng!==defaultLang){
window.location.replace(window.location.pathname + '?lang=' + lng);
return;
}
document.querySelectorAll('.multilang-flags li').forEach(function(li){
li.addEventListener('click', function(e){
var a=li.querySelector('a');
var href=a.getAttribute('href');
var flags=li.closest('.multilang-flags');
var useQueryString=flags&&flags.getAttribute('data-use-query-string')==='1';
var refreshOnSwitch=flags&&flags.getAttribute('data-refresh-on-switch')==='1';
var defaultLang=window.multilangLangBar&&window.multilangLangBar.defaultLang ? window.multilangLangBar.defaultLang:'en';
var lang=a.getAttribute('hreflang');
lang=window.normalizeLang(lang);
setTimeout(function(){
updateInternalLinks(lang);
}, 50);
if(useQueryString){
var url=new URL(window.location.href);
if(lang===defaultLang){
url.searchParams.delete('lang');
var cleanUrl=url.pathname + url.search + url.hash;
cleanUrl=cleanUrl.replace(/\?$/, '');
cleanUrl=cleanUrl.replace(/\?&/, '?');
if(cleanUrl.endsWith('?')){
cleanUrl=cleanUrl.slice(0, -1);
}
history.replaceState(null, '', cleanUrl);
}else{
url.searchParams.set('lang', lang);
var newUrl=url.pathname + url.search + url.hash;
if(!url.searchParams.get('lang')){
newUrl +=(url.search ? '&':'?') + 'lang=' + lang;
}
history.replaceState(null, '', newUrl);
}}			if(lang===defaultLang&&useQueryString){
e.preventDefault();
if(refreshOnSwitch){
window.location.href=href;
}else{
document.body.className=document.body.className.replace(/\blang-[a-z]{2}\b/g, '').trim();
document.body.classList.add('lang-' + lang);
document.querySelector('html').setAttribute('data-lang', lang);
document.querySelector('html').setAttribute('lang', lang);
document.body.setAttribute('lang', lang);
window.setLangCookie(lang);
updatePageTitle(lang);
updateInternalLinks(lang);
}
return;
}
if(href==='#'||!useQueryString||(href==='/'&&!useQueryString)){
e.preventDefault();
document.body.className=document.body.className.replace(/\blang-[a-z]{2}\b/g, '').trim();
document.body.classList.add('lang-' + lang);
document.querySelector('html').setAttribute('data-lang', lang);
document.querySelector('html').setAttribute('lang', lang);
document.body.setAttribute('lang', lang);
window.setLangCookie(lang);
updatePageTitle(lang);
updateInternalLinks(lang);
return;
}
if(useQueryString&&href&&href.indexOf('?lang=')===0){
e.preventDefault();
if(refreshOnSwitch){
window.location.href=href;
}else{
document.body.className=document.body.className.replace(/\blang-[a-z]{2}\b/g, '').trim();
document.body.classList.add('lang-' + lang);
document.querySelector('html').setAttribute('data-lang', lang);
document.querySelector('html').setAttribute('lang', lang);
document.body.setAttribute('lang', lang);
window.setLangCookie(lang);
updatePageTitle(lang);
updateInternalLinks(lang);
}
return;
}
document.body.className=document.body.className.replace(/\blang-[a-z]{2}\b/g, '').trim();
document.body.classList.add('lang-' + lang);
document.querySelector('html').setAttribute('data-lang', lang);
document.querySelector('html').setAttribute('lang', lang);
document.body.setAttribute('lang', lang);
window.setLangCookie(lang);
updatePageTitle(lang);
updateInternalLinks(lang);
});
});
function updatePageTitle(lang){
var titles=window.multilangPageTitles||(window.multilangLangBar&&window.multilangLangBar.pageTitles);
var taglines=window.multilangPageTaglines||(window.multilangLangBar&&window.multilangLangBar.pageTaglines);
var siteName=window.multilangLangBar&&window.multilangLangBar.siteName;
var newTitle='';
if(titles&&titles[lang]){
newTitle=titles[lang];
}
else if(titles&&lang!=='en'&&titles['en']){
newTitle=titles['en'];
}
else if(titles&&titles['original']){
newTitle=titles['original'];
}
var newTagline='';
if(taglines){
if(taglines[lang]){
newTagline=taglines[lang];
}
else if(lang!=='en'&&taglines['en']){
newTagline=taglines['en'];
}
else if(taglines['original']){
newTagline=taglines['original'];
}}
var titleParts=[];
if(newTitle){
titleParts.push(newTitle);
}
if(newTagline){
titleParts.push(newTagline);
}
if(siteName){
titleParts.push(siteName);
}
if(titleParts.length > 0){
document.title=titleParts.join(' - ');
}
updatePageHeadings(newTitle, newTagline);
}
function updatePageHeadings(newTitle, newTagline){
var markedElements=document.querySelectorAll('[data-multilang-title="true"]');
if(markedElements.length > 0){
markedElements.forEach(function(element){
element.textContent=newTitle;
});
}
if(newTagline){
var taglineElements=document.querySelectorAll('.site-description, .site-tagline, [data-multilang-tagline="true"]');
if(taglineElements.length > 0){
taglineElements.forEach(function(element){
element.textContent=newTagline;
});
}}
}
var currentLang=window.getLangCookie()||'en';
var link=document.createElement('link');
link.rel='stylesheet';
link.href=window.multilangLangBar.pluginPath+'/css/language-switcher.css';
document.head.appendChild(link);
})();
(()=> {
let mobileBreakPoint=1024;
let menuObserver;
let articleSwiperObserver;
document.addEventListener('DOMContentLoaded', ()=> {
addLoadedClass();
checkHasSlider();
checkSticky();
initMenuObserver();
setupArticlesLightboxes();
setBGSliderMesh();
});
window.addEventListener('scroll', ()=> {
checkSticky();
});
function setBGSliderMesh(){
let mesh=document.querySelector('#bg-slider-container');
if(!mesh) return;
const images=mesh.querySelectorAll('img');
if(images.length===0) return;
let loadedCount=0;
images.forEach(img=> {
if(img.complete&&img.naturalWidth!==0){
loadedCount++;
}else{
img.addEventListener('load', ()=> {
loadedCount++;
if(loadedCount===images.length){
mesh.classList.add('dark-mesh');
}}, { once: true });
}});
if(loadedCount===images.length){
mesh.classList.add('dark-mesh');
}}
let articlesLightboxObserver;
let cachedArticleLinks=[];
function setupArticlesLightboxes(){
articleSwiperObserver=new MutationObserver(function(mutations){
setupArticleBoxes();
});
if(jQuery('.articles .swiper-wrapper').length<=0){
return;
}
articleSwiperObserver.observe(jQuery('.articles .swiper-wrapper')[0], {
attributes: true,
attributeFilter: ['class'],
childList: true,
subtree: true
});
function setupArticleLinks(){
var articleLinks=document.querySelectorAll('.articles a[data-rel*=image_carousel]');
articleLinks.forEach(function(link){
if(jQuery(link).attr('data-original-image')){ return; }
jQuery(link).attr('data-rel','article_carousel');
let img=jQuery(link).attr('href');
let thumb=jQuery(link).find('img').attr('data-orig-src');
link.setAttribute('data-original-image', img);
link.setAttribute('href', themeVars.themeUrl+'/php/article.php?article='+img);
link.setAttribute('data-type', 'iframe');
link.classList.add('lightbox-article');
cachedArticleLinks.push({
element: link,
originalImage: img
});
});
}
setupArticleLinks();
setupArticleBoxes();
function setupArticleBoxes(){
setTimeout(function(){
jQuery('.articles a[data-rel*=article_carousel]').each(function(){
reapplyLightBox(this);
});
},0);
}}
function closeLightBox(e){
if(e.target.closest('.ilightbox-close') ||
e.target.closest('.ilightbox-overlay')&&e.target.classList.contains('ilightbox-overlay')){
jQuery('.ilightbox-overlay, .ilightbox-wrapper').remove();
const lightbox=jQuery('.ilightbox-holder:visible');
if(lightbox.length){
const instance=jQuery('a[data-rel*="iLightbox"]').first().data('ilightbox');
if(instance){
instance.close();
}else{
lightbox.remove();
jQuery('body').removeClass('ilightbox-noscroll ilightbox-noscroll-checked light-box-articles');
}}
}}
function reapplyLightBox(obj){
jQuery(obj).off('click').on('click', function(e){
e.preventDefault();
e.stopPropagation();
closeLightBox(e);
jQuery.iLightBox([{
URL: jQuery(this).attr('href'),
type: jQuery(this).attr('data-type')||'image',
title: jQuery(this).attr('title')||''
}], {
skin: 'metro-white'
});
jQuery('.ilightbox-overlay').off('click').click(function(e){
closeLightBox(e);
});
});
}
function checkArticlesLightbox(){
let articleSelector='.articles';
function checkLightboxSource(){
var $holder=jQuery('.ilightbox-holder:visible').first();
if(!$holder.length){
return;
}
var $currentImg=$holder.find('iframe').first();
if(!$currentImg.length||!$currentImg.attr('src')){
setTimeout(checkLightboxSource, 0);
return;
}
var currentSrc=$currentImg.attr('src');
var articleMatch=currentSrc.match(/article\.php\?article=(.+)/);
var currentFilename='';
if(articleMatch){
currentFilename=decodeURIComponent(articleMatch[1]).split('/').pop().split('?')[0];
}else{
currentFilename=currentSrc.split('/').pop().split('?')[0].replace(/-\d+x\d+/, '');
}
var isFromArticles=false;
for (var i=0; i < cachedArticleLinks.length; i++){
var cachedLink=cachedArticleLinks[i];
var linkFilename=cachedLink.originalImage.split('/').pop().split('?')[0];
if(currentFilename.indexOf(linkFilename.replace(/\.[^.]+$/, ''))!==-1 ||
linkFilename.indexOf(currentFilename.replace(/\.[^.]+$/, ''))!==-1){
isFromArticles=true;
break;
}}
if(isFromArticles){
jQuery('body').addClass('light-box-articles');
updateArticleThumbnailsWithObserver();
}else{
jQuery('body').removeClass('light-box-articles');
}}
if(articlesLightboxObserver){
articlesLightboxObserver.disconnect();
}
articlesLightboxObserver=new MutationObserver(function(mutations){
var isVisible=jQuery('.ilightbox-holder:visible').length > 0;
var wasChecked=jQuery('body').hasClass('ilightbox-noscroll-checked');
if(isVisible){
if(!wasChecked){
jQuery('body').addClass('ilightbox-noscroll-checked');
setTimeout(checkLightboxSource, 50);
}}else{
if(wasChecked){
jQuery('body').removeClass('ilightbox-noscroll-checked light-box-articles');
}}
});
articlesLightboxObserver.observe(document.body, {
attributes: true,
attributeFilter: ['class'],
childList: true,
subtree: true
});
jQuery(document).on('click', '.ilightbox-next-button, .ilightbox-prev-button', function(){
setTimeout(checkLightboxSource, 0);
});
function getActiveCarouselGroup(){
var hash=window.location.hash;
var match=hash.match(/#iLightbox\[(.*?)\]/);
return match ? match[1]:null;
}
function updateArticleThumbnailsWithObserver(){
function doUpdate(){
var selectors=[
'.ilightbox-thumbnails-grid .ilightbox-thumbnail',
'.ilightbox-thumbnails .ilightbox-thumbnail',
'.ilightbox-thumbnail',
'.ilightbox-holder .ilightbox-thumbnail'
];
var $thumbs=jQuery();
var usedSelector='';
for (var i=0; i < selectors.length; i++){
$thumbs=jQuery(selectors[i]);
if($thumbs.length > 0){
usedSelector=selectors[i];
break;
}}
if($thumbs.length===0){
return false;
}
var group=getActiveCarouselGroup();
if(!group){
return false;
}
var linksByIndex=[];
jQuery('.articles .swiper-slide').each(function(){
slideIndex=parseInt(jQuery(this).attr('data-swiper-slide-index'), 10);
if(isNaN(slideIndex)){
slideIndex=jQuery(this).attr('aria-label');
if(typeof slideIndex==="string"){
slideIndex=parseInt(slideIndex.split('/')[0].trim());
}}
var $link=jQuery(this).find('a[data-rel="iLightbox[' + group + ']"]').first();
if($link.length > 0&&!isNaN(slideIndex)){
linksByIndex[slideIndex]=$link;
}});
var orderedLinks=[];
for (var i=0; i < linksByIndex.length; i++){
if(linksByIndex[i]){
orderedLinks.push(linksByIndex[i]);
var src=linksByIndex[i].find('img').attr('data-orig-src')||linksByIndex[i].find('img').attr('src');
}}
var updated=0;
$thumbs.each(function(idx){
var $thumb=jQuery(this);
if(idx >=orderedLinks.length){
return;
}
var $link=orderedLinks[idx];
var thumbSrc=$link.find('img').attr('data-orig-src')||$link.find('img').attr('src')||$link.attr('data-thumbnail');
if(thumbSrc){
$thumb.empty().css('opacity', '0.5');
let $img=jQuery('<img>').attr('src', thumbSrc);
$img.on('load', function(){
$thumb.css('opacity', '1');
});
$thumb.html($img);
updated++;
}});
return updated > 0;
}
if(doUpdate()){
return;
}
var attempts=0;
var maxAttempts=30;
var checkInterval=setInterval(function(){
attempts++;
if(doUpdate()||attempts >=maxAttempts){
clearInterval(checkInterval);
}}, 100);
}
updateArticleThumbnailsWithObserver();
}
function initMenuObserver(){
const target=document.querySelector('header .fusion-header-has-flyout-menu');
if(!target) return;
const observer=new MutationObserver(mutations=> {
mutations.forEach(mutation=> {
if(mutation.type==='attributes'&&mutation.attributeName==='class'){
if(target.classList.contains('fusion-flyout-active')){
}}
});
});
observer.observe(target, { attributes: true, attributeFilter: ['class'] });
}
function addLoadedClass(){
document.body.classList.add('loaded');
}
function checkHasSlider(){
if(document.querySelectorAll('#sliders-container .slides li').length > 0){
document.body.classList.add('has_slider');
}}
function checkSticky(){
let isTop=window.scrollY===0||document.documentElement.scrollTop===0;
if(isTop){
document.body.classList.remove('sticky');
}else{
if(!document.body.classList.contains('sticky')){
document.body.classList.add('sticky');
}}
}})();