
 
var y = 1000;
var gc = null;
var canvas = null;
var update = function() {};

 
function init() {
    canvas = document.getElementById("canvas")
    gc = canvas.getContext("2d")
    updateScreen();
}
 
function blitFrom(image, from, to, width, height) {
    gc.drawImage(image, from.x, from.y, width, height, to.x, to.y, width, height);
}

function blit(image, to) {
    gc.drawImage(image, to.x, to.y);
}


function clear() {
    gc.clearRect(0,0, canvas.width, canvas.height);
}

function V(x, y) {
    var vec = { x: x, y: y };
        
    vec.add = function (v) {
	vec.x = vec.x + v.x;
	vec.y = vec.y + v.y;
	return vec;
    }
    
    vec.mul = function (n) {
	vec.x = vec.x * n;
	vec.y = vec.y * n;
	return vec;
    }
    
    return vec;
}

function loadImage(file) {
    var image= new Image();
    image.src = file;
    return image;
}

window.onload = init;




var image = loadImage("zazaka.png");
var bg = loadImage("bg.png");
var particles = [];

for(var i=0; i<100; i++) particles[i] =
 {pos: V(370,150),
  vel: V(Math.random()*10-5, Math.random()*10-5),
  angle: 0, av: (Math.random()-0.5)*0.1,
  scale: 1.0, sv: (Math.random()-0.5)*0.1 };



function updateScreen() {
   gc.globalAlpha = 0.7;
   // gc.globalCompositeOperation = "source-over";
   // gc.globalCompositeOperation = "lighter";
   gc.clearRect(0,0,canvas.width,canvas.height);
   
   // for(var x=-5; x<15; x++)
   //   for(var y=-5; y<10; y++) {
   //     blit(bg, V(x*64 + (particles[0].pos.x*0.3), y*64 + (particles[1].pos.y*0.3)));
   // }

   for(var i=0; i < particles.length; i++) {
     var p = particles[i];   

     gc.save();     
     gc.translate(p.pos.x, p.pos.y);
     gc.rotate(p.angle);
     gc.scale(p.scale, p.scale);
     blit(image, V(-32, -32));
     gc.restore();

     p.pos.add(p.vel);
     p.angle = p.angle + p.av;
     p.scale = p.scale + p.sv;

     if(p.scale < 0.2 || p.scale > 2)
       p.sv = -p.sv;
     if(p.pos.x < 0 || p.pos.x > canvas.width)
       p.vel.x = -p.vel.x;
     if(p.pos.y < 0 || p.pos.y > canvas.height)
       p.vel.y = -p.vel.y;
   }
   setTimeout(updateScreen,10);
}

