
(function () {
"use strict";
/* LES TRES FOTOGRAFIES REALS */
const FONS = [
"https://www.wolfnord.com/wp-content/uploads/2026/11/fons1.jpg",
"https://www.wolfnord.com/wp-content/uploads/2026/11/fons2.jpg",
"https://www.wolfnord.com/wp-content/uploads/2026/11/fons3.jpg"
];
/* ==================================== MODE DE FUNCIONAMENT
"diari" = canvia cada dia "visita" = aleatori a cada carrega "presentacio" = canvia automaticament
==================================== */
const MODE = "diari";
/* INTERVAL DE LA PRESENTACIO 12000 = 12 segons */
const INTERVAL = 12000;
/* ELEMENTS DE LA PAGINA */
const capes = [
document.getElementById("wn-bg1"),
document.getElementById("wn-bg2")
];
if (!capes[0] || !capes[1]) return;
let capaActiva = 0; let indexActual = 0; let canviEnCurs = false;
/* NUMERO PSEUDOALEATORI ESTABLE */
function hash(numero) {
let x = numero >>> 0;
x = Math.imul( x ^ (x >>> 16), 0x85ebca6b );
x = Math.imul( x ^ (x >>> 13), 0xc2b2ae35 );
return (x ^ (x >>> 16)) >>> 0;
}
/* DATA ACTUAL DE CATALUNYA */
function obtenirDia() {
const parts = new Intl.DateTimeFormat( "en-GB", { timeZone: "Europe/Madrid", year: "numeric", month: "2-digit", day: "2-digit" } ).formatToParts(new Date());
const dades = {};
parts.forEach(function (part) { dades[part.type] = part.value; });
return Math.floor(
Date.UTC( Number(dades.year), Number(dades.month) - 1, Number(dades.day) ) / 86400000
);
}
/* IMATGE DIARIA SENSE REPETICIONS EN DIES CONSECUTIUS */
function imatgeDelDia() {
if (FONS.length <= 1) return 0; const avui = obtenirDia(); const inici = Math.floor( Date.UTC(2026, 0, 1) / 86400000 ); let index = 0; for (let dia = inici; dia <= avui; dia++) { if (dia === inici) { index = hash(dia) % FONS.length; } else { let seguent = hash(dia) % (FONS.length - 1); if (seguent >= index) { seguent++; }
index = seguent;
}
}
return index;
}
/* IMATGE ALEATORIA */
function aleatoria(excloure = -1) {
if (FONS.length <= 1) return 0; if (excloure < 0) { return Math.floor( Math.random() * FONS.length ); } let resultat = Math.floor( Math.random() * (FONS.length - 1) ); if (resultat >= excloure) { resultat++; }
return resultat;
}
/* CARREGAR I MOSTRAR IMATGE */
function mostrar(index, primera = false) {
if (canviEnCurs) return;
canviEnCurs = true;
const desti = primera ? 0 : 1 - capaActiva;
const capaNova = capes[desti];
const imatge = new Image();
imatge.onload = function () {
capaNova.src = imatge.src;
requestAnimationFrame(function () {
capaNova.classList.add("active");
if (!primera) {
capes[capaActiva] .classList.remove("active");
}
capaActiva = desti; indexActual = index; canviEnCurs = false;
});
};
imatge.onerror = function () {
console.warn( "WolfNord: error carregant imatge", FONS[index] );
canviEnCurs = false;
if (primera && FONS.length > 1) {
mostrar( (index + 1) % FONS.length, true );
}
};
imatge.src = FONS[index];
}
/* SELECCIONAR PRIMERA FOTOGRAFIA */
if (MODE === "diari") {
indexActual = imatgeDelDia();
} else {
indexActual = aleatoria();
}
mostrar(indexActual, true);
/* PRESENTACIO AUTOMATICA */
if ( MODE === "presentacio" && FONS.length > 1 ) {
setInterval(function () {
if (document.hidden || canviEnCurs) { return; }
const seguent = aleatoria(indexActual);
mostrar(seguent, false);
}, INTERVAL);
}
/* ACTUALITZACIO DIARIA A MITJANIT */
if (MODE === "diari") {
let diaMostrat = obtenirDia();
setInterval(function () {
const diaActual = obtenirDia();
if (diaActual !== diaMostrat) {
diaMostrat = diaActual;
mostrar(imatgeDelDia(), false);
}
}, 30000);
}
})();