Template:Marburg/confetti

var currentConfettiScript=document.scripts[document.scripts.length-1];$(document).ready(function(){var t=document.createElement("canvas");t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="100%",t.style.height="100%",currentConfettiScript.parentElement.insertBefore(t,currentConfettiScript);var e=t.getContext("2d"),i=Date.now(),a=i,o=0,n=40;t.width=t.parentNode.clientWidth,t.height=t.parentNode.clientHeight;var r=!1;var l=[],s=.15,d=5.2,p=15.2,c=30;function h(t){t.radius=u(10,20),t.position=f(t.radius),t.rotation=u(0,360),t.velocity={x:u(d,p)*(1==u(0,2)?-1:1),y:u(d,p)*(1==u(0,2)?-1:1)},t.lifetime=u(3,5),t.spawnTime=i,t.color="rgb("+u(0,255)+", "+u(0,255)+", "+u(0,255)+")",t.alpha=0,t.fadeState=-1}function f(e){for(var i,a,o,n,r={x:u(0,t.width),y:u(0,15)},s=!0,d=0;d<l.length;d++){var p=l[d];(i=p.position,a=r,void 0,void 0,o=i.x-a.x,n=i.y-a.y,Math.sqrt(o*o+n*n))<e+p.radius+c&&(s=!1)}return s?r:-1}function u(t,e){return Math.floor(Math.random()*(e-t+1))+t}!function d(){if(n>0){if(requestAnimationFrame(d),u=t.getBoundingClientRect(),v=u.top,y=u.bottom,v<window.innerHeight&&y>=0&&!r){for(var p=0;p<40;p++){var c={id:p,enabled:!0};h(c),l.push(c)}r=!0}var u,v,y;r&&(t.width=t.parentNode.clientWidth,t.height=t.parentNode.clientHeight,e.clearRect(0,0,e.width,e.height),function(){for(var a=0;a<l.length;a++){var r=l[a];if(r.enabled){if(-1==r.position){if(r.position=f(r.radius),-1==r.position)continue;r.fadeState=0}switch(r.position.x+=r.velocity.x*o*.1,r.position.y+=r.velocity.y*o,(i-r.spawnTime)/1e3>=r.lifetime&&(r.fadeState=1),r.rotation+=.1*o,r.fadeState){case 0:r.alpha<1&&(r.alpha+=s*o),r.alpha>=1&&(r.alpha=1,r.fadeState=-1);break;case 1:r.alpha>0&&(r.alpha-=s*o),r.alpha<=0&&(r.enabled=!1,0==--n&&(l=[],t.parentNode.removeChild(t)))}e.globalAlpha=.2*r.alpha,e.translate(r.position.x,r.position.y),e.rotate(r.rotation),d=r,e.fillStyle=d.color,e.fillRect(-d.radius/2,-d.radius/2/2,d.radius,d.radius/2),e.rotate(-1*r.rotation),e.translate(-r.position.x,-r.position.y)}}var d}()),i=Date.now(),o=.01*(i-a),a=i}}()});