var StartAstrolabe = function() {
  var canvas     = document.getElementById("astrolabe"),
      context    = canvas.getContext("2d"),
      bfrCanvas  = document.createElement("canvas"),
      bfrContext = bfrCanvas.getContext("2d"),
      loader     = imgLoader(),
      fragments  = [],
      imageHashes;

  var tick = function() {
    context.clearRect(0, 0, canvas.width, canvas.height);
    if( !spinner.complete() ) {
      spinner.tick();
      spinner.draw();
      setTimeout(tick, 33);
    } else {
      context.clearRect(0, 0, canvas.width, canvas.height);
      context.drawImage(bfrContext.canvas, 0, 0);

      setTimeout(tick, 33);
      bfrContext.clearRect(0, 0, canvas.width, canvas.height);
      bfrContext.drawImage(images["background"], 0, 0);
      for(var i in fragments) {
        fragments[i].tick();
        fragments[i].draw();
      }
      bfrContext.drawImage(images["cover"], -8, 18);

    }

  }

  var setupAstrolabeFragments = function() {
    bfrCanvas.height = canvas.height;
    bfrCanvas.width  = canvas.width;
    images = loader.images();
    fragments.push( astrolabeFragment(images["sprite1"], images["mask1"], bfrContext, 0) );
    fragments.push( astrolabeFragment(images["sprite2"], images["mask2"], bfrContext, 0) );
    fragments.push( astrolabeFragment(images["sprite3"], images["mask3"], bfrContext, 25) );
    for(var i in fragments) {
      fragments[i].draw();
    }
  };

  loader.push("background", "astrolabe_graphics/background.jpg"   );
  loader.push("sprite1",    "astrolabe_graphics/astrolabe.png"    );
  loader.push("sprite2",    "astrolabe_graphics/astrolabe2.png"   );
  loader.push("sprite3",    "astrolabe_graphics/astrolabe3.png"   );
  loader.push("mask1",      "astrolabe_graphics/glasslessmask_sm.png");
  loader.push("mask2",      "astrolabe_graphics/glass1mask_sm.png"   );
  loader.push("mask3",      "astrolabe_graphics/glass2mask_sm.png"   );
  loader.push("cover",      "astrolabe_graphics/glassonly.png"    );

  var spinner = progressSpinner(canvas, context, loader,
    "astrolabe_graphics/tiny_astrolabe.png", setupAstrolabeFragments);

  tick();
}

