Source for demo by Paulo Falcao.
W=320;p=k=40;t=0;d=document;g=d.getElementById('c');d.write("<style>*{margin:0;position:absolute;background:#000}</style>");c=g.getContext('2d');L=W/2;m=Math;c.t=c.translate;g.width=g.height=W;P="px";d.addEventListener("mousemove",function(a){p=m.abs(-w/16+a.clientX/8);k=m.abs(-h/16+a.clientY/8)},0);setInterval(function(){(s=g.style).width=(l=(((w=innerWidth)>(h=innerHeight))?h:w))+P;s.height=(w>h?h:w)+P;s.left=(w/2-l/2)+P;c.globalCompositeOperation="source-over";c.save();c.t(L,L);c.rotate(m.sin(t*.02)*.5);c.t(-L,-L);c.drawImage(g,10,10,W-20,W-20,0,0,W,W);c.restore();c.fillStyle="rgba(0,0,0,.04)";c.rect(0,0,W,W);c.fill();c.globalCompositeOperation="lighter";for(i=0;i<3;i++){c.fillStyle="rgba("+(i==0?L:0)+","+(i==1?L:0)+","+(i==2?L:0)+",.31)";c.beginPath();c.arc(W/2+m.sin(t*.04+i*1.3)*k,W/2+m.cos(t*.03-i*2.3)*k,p,0,m.PI*2,0);c.fill()}t++},10)