Template:Cologne-Duesseldorf/particles

(function() {

 var particlesQuantity = 100,
   velocity = 0.3,
   maxRadius = 20;
 var canvas = document.getElementById("myowncanvas"),
   context,
   particles = [];
 if (canvas && canvas.getContext) {
   context = canvas.getContext("2d");
   for (var i = 0; i < particlesQuantity; i++) {
     var alpha = Math.random();
     particles.push({
       x: Math.round(Math.random() * window.innerWidth),
       y: Math.round(Math.random() * window.innerHeight),
       velx: Math.random() * velocity * 2 - velocity,
       vely: Math.random() * velocity * 2 - velocity,
       radius: (1 - alpha) * maxRadius,
       color: "rgba(" + [20, 147, 117, alpha].join(",") + ")"
     });
   }
   initialize();
 }
 function resizeCanvas() {
   canvas.width = window.innerWidth;
   canvas.height = window.innerHeight;
 }
 function render() {
   context.clearRect(0, 0, window.innerWidth, window.innerHeight);
   var particle, len = particles.length;
   for (var i = 0; i < len; i++) {
     particle = particles[i];
     if (particle.x < 0) {
       particle.velx = velocity + Math.random();
     } else if (particle.x > window.innerWidth) {
       particle.velx = -velocity - Math.random();
     }
     if (particle.y < 0) {
       particle.vely = velocity + Math.random();
     } else if (particle.y > window.innerHeight) {
       particle.vely = -velocity - Math.random();
     }
     particle.x += particle.velx;
     particle.y += particle.vely;


     context.fillStyle = particle.color;
     context.beginPath();
     context.arc(
       particle.x,
       particle.y,
       particle.radius,
       0,
       Math.PI * 2,
       true
     );
     context.closePath();
     context.fill();
   }
   context.save();
   context.restore();
 }
 function distanceBetween(a, b) {
   var dx = Math.pow(a.x - b.x, 2),
     dy = Math.pow(a.y - b.y, 2);
   return Math.sqrt(dx + dy);
 }
 function initialize() {
   window.addEventListener("resize", resizeCanvas, false);
   window.requestAnimFrame = (function() {
     return (
       window.requestAnimationFrame ||
       window.webkitRequestAnimationFrame ||
       window.mozRequestAnimationFrame ||
       window.oRequestAnimationFrame ||
       window.msRequestAnimationFrame ||
       function(callback) {
         window.setTimeout(callback, 1000 / 60);
       }
     );
   })();
   (function animloop() {
     requestAnimFrame(animloop);
     render();
   })();
   resizeCanvas();
 }

})();