(function(){
function init(){
const config = {
text: "God Påske",
eggs: 12,
grass: "https://cdn.gocms1.com/themes/easter2/grass5.png",
bunny: "https://cdn.gocms1.com/themes/easter2/rabit.png",
start: "2026-03-16",
end: "2026-04-05"
};
const today = new Date().toISOString().split("T")[0];
if(config.start && today < config.start) return;
if(config.end && today > config.end) return;
if(!document.body){
setTimeout(init,50);
return;
}
/* STYLE */
const style = document.createElement("style");
style.innerHTML = `
#easter-overlay{position:fixed;bottom:0;left:0;width:100%;height:100%;z-index:9999999999;overflow:hidden;}
.easter-grass{position:absolute;bottom:0;width:100%;height:120px;background:url('${config.grass}') repeat-x bottom;background-size:auto 120px;}
.easter-bunny-wrap{position:absolute;bottom:-20px;right:10px;transform:translateY(200px);animation:bunnyPop 1.2s ease forwards;}
.easter-bunny{width:220px;}
@keyframes bunnyPop{0%{transform:translateY(200px);opacity:0;}100%{transform:translateY(0);opacity:1;}}
.easter-sign{position:absolute;bottom:140px;right:150px;background:#fff;padding:12px 20px;border-radius:10px;box-shadow:0 10px 20px rgba(0,0,0,0.2);opacity:0;transform:translateY(20px);transition:.4s;}
.easter-sign.show{opacity:1;transform:translateY(0);}
.easter-egg{position:absolute;width:40px;opacity:0;animation:eggPop .6s ease forwards;}
@keyframes eggPop{0%{transform:translateY(40px) scale(.5);opacity:0;}70%{transform:translateY(-5px) scale(1.1);opacity:1;}100%{transform:translateY(0) scale(1);opacity:1;}}
`;
document.head.appendChild(style);
/* HTML */
const overlay = document.createElement("div");
overlay.id = "easter-overlay";
overlay.innerHTML = `
${config.text}
`;
document.body.appendChild(overlay);
setTimeout(()=>document.getElementById("speech").classList.add("show"),400);
document.addEventListener("click",()=>overlay.remove());
/* EGGS */
const eggImages = [
"https://cdn.gocms1.com/themes/easter2/egg1.png",
"https://cdn.gocms1.com/themes/easter2/egg2.png",
"https://cdn.gocms1.com/themes/easter2/egg3.png",
"https://cdn.gocms1.com/themes/easter2/egg4.png",
"https://cdn.gocms1.com/themes/easter2/egg5.png",
"https://cdn.gocms1.com/themes/easter2/egg6.png",
"https://cdn.gocms1.com/themes/easter2/egg7.png",
"https://cdn.gocms1.com/themes/easter2/egg8.png",
"https://cdn.gocms1.com/themes/easter2/egg9.png"
];
let lastEgg = null;
function getRandomEgg(){
let img;
do{
img = eggImages[Math.floor(Math.random()*eggImages.length)];
} while(img === lastEgg);
lastEgg = img;
return img;
}
let placed = [];
let i = 0;
function isValid(x){
for(let p of placed){
if(Math.abs(p-x)<60)return false;
}
return true;
}
function spawnEggs(){
function spawn(){
if(i>=config.eggs) return;
const egg = document.createElement("img");
egg.src = getRandomEgg();
egg.className = "easter-egg";
let x, attempts=0;
do{
x=Math.random()*(window.innerWidth-60);
attempts++;
}while(!isValid(x)&&attempts<50);
placed.push(x);
let rotate=(Math.random()*30)-15;
egg.dataset.baseRotate = rotate;
egg.style.left=x+"px";
egg.style.bottom=(Math.random()*20)+"px";
egg.style.rotate = rotate+"deg";
egg.style.scale = 0.85 + Math.random()*0.3;
overlay.appendChild(egg);
/* KLÆK */
setTimeout(()=>{
function eggShake(){
let shakes=0;
const interval=setInterval(()=>{
let randomRotate=(Math.random()*8)-4;
let base=parseFloat(egg.dataset.baseRotate);
let scale=1+(Math.random()*0.03);
egg.style.rotate = (base+randomRotate)+"deg";
egg.style.scale = scale;
shakes++;
if(shakes>6){
clearInterval(interval);
egg.style.rotate = base+"deg";
egg.style.scale = 1;
}
},60+Math.random()*40);
}
eggShake();
setInterval(()=>eggShake(),3000+Math.random()*5000);
/* IDLE */
function idleMove(){
let base=parseFloat(egg.dataset.baseRotate);
let drift=(Math.random()*4)-2;
egg.style.rotate = (base+drift)+"deg";
egg.style.scale = 1 + (Math.random()*0.03);
setTimeout(()=>{
egg.style.rotate = base+"deg";
egg.style.scale = 1;
},400+Math.random()*400);
}
function idleLoop(){
let delay = 2000 + Math.random()*4000;
setTimeout(()=>{
idleMove();
idleLoop();
},delay);
}
idleLoop();
},600+Math.random()*1200);
i++;
setTimeout(spawn,250+Math.random()*400);
}
spawn();
}
setTimeout(spawnEggs,900);
}
if(document.readyState==="loading"){
document.addEventListener("DOMContentLoaded",init);
}else{
init();
}
})();