_='a=docu@ALEle@AsByTagNa@Dcanvas")[0];c=aLCoAextD2d"wWidF;hH&;fc=PI;a.widF=w;a.h&=h;m=255;n=128;z=[[GGnGGn]];cx=w/4cy=h-h/4lr=?;sr=7;0function f){OhJ0;32>e;e++)g=0;12>g;g++)b=g/1fc,x=cx+<cosy=cy-<sd=z[g],,c.arc(x,y,sf/:,fc,!1),rgbaD+d[0d[1d[2e/m+")",(;O.1*$.9*h,$?*f.8h,30J.5 J1.3 K+;setTi@outD"+K"",?)};;Rect((b+2/8)*l6:/2,%(1.6-.wStylJ"0,RenderScene(],[MaF. e,3h]+", "+=wdow.nerc.begPaF()c.fill(?*K,$m,r*e*(s();parseIA(2*for(var (Ke)/#000"inw,0m*w).$h)&eight:4)+2)<1e+?50@meAntD("FthGn,Je=Kf+L.getO';for(Y in $='OLKJGFDA@?<:&$ ')with(_.split($[Y]))_=join(pop());eval(_)
// Setup canvas to fill screen
a = document.getElementsByTagName("canvas")[0];
c = a.getContext("2d");
w = window.innerWidth;
h = window.innerHeight;
fc = 2 * Math.PI;
a.width = w;
a.height = h;
m = 255;
n = 128;
z = [[m,0,0],[m,n,0],[m,m,0],[n,m,0],[0,m,0],[0,m,n],[0,m,m],[0,n,m],[0,0,m],[n,0,m],[m,0,m],[m,0,n]];
cx = parseInt(w / 4); // Center x
cy = h - parseInt(h / 4); // Center y
lr = 50; // Large radius
sr = 7; // Small radius
RenderScene(0);
// Render scene
function RenderScene(t){
c.fillStyle = "#000";
c.fillRect(0, 0, w, h);
// Render tower of circles
for (var l = 0; l < 32; l++){
// Render circle of smaller circles
for (var i = 0; i < 12; i++){
b = (i/12)*fc;
x = cx + (l * 12) + Math.cos(b + ((t+l))/2/8) * (lr * l * (Math.sin((t+l)/64) + 2))/2;
y = cy - (l * 12) + Math.sin(b + ((t+l)/2)/8) * (lr * l * (Math.sin((t+l)/64) + 2))/2;
d = z[i];
c.beginPath();
c.arc(x, y, ((sr * l))*(Math.sin(t/4) + 2), 0, fc, false);
c.fillStyle = "rgba(" + d[0] + ", " + d[1] + ", " + d[2] + ", " + l/m + ")";
c.fill();
}
}
// window frame parts
c.fillStyle = "#000";
// Top
c.beginPath();
c.fillRect(0, 0, w, h * 0.1);
// Bottom
c.fillRect(0, h * 0.9, w, h);
// V Bar 1
var x1 = (t * 50) % (w * 1.6) - (w * 0.2);
c.fillRect(x1, 0, w * 0.2, h);
// V Bar 2
var x2 = (t * 50 + w * 0.8) % (w * 1.6)- (w * 0.2);
c.fillRect(x2, 0, w * 0.2, h);
// Window bars
c.fillRect(0, h * 0.2, w, 30);
var x3 = (t * 50 + w * 0.5) % (w * 1.6) - (w * 0.2);
c.fillRect(x3, 0, 30, h * 0.2);
var x3 = (t * 50 + w * 1.3) % (w * 1.6) - (w * 0.2);
c.fillRect(x3, 0, 30, h * 0.2);
t++;
setTimeout("RenderScene(" + t + ");", 50);
}