/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
var mindscape = new Object();
mindscape.load = Array("background", "mountain", "cloud01", "cloud02", "cloud03", "cloud04", "cloud05");
mindscape.images = new Object();
mindscape.progress = 0;
mindscape.ready = false;
mindscape.wind = 5;
mindscape.clouds = 30;
mindscape.state = new Object();
mindscape.debug = false;
for (i in mindscape.load) {
  var image = new Image();
  image.name = mindscape.load[i];
  $(image)
    .load(function () {
      mindscape.images[this.name] = this;
      mindscape.progress++;
      if (mindscape.progress ==  mindscape.load.length) {
        if (mindscape.ready)
          init_mindscape();
        else mindscape.ready = true;
      }
    })
    .error(function () {
    })
    .attr('src', '/media/style/images/mindscape/' +  mindscape.load[i] + '.png');
}
$(document).ready(function () {
  if (mindscape.ready)
    init_mindscape();
  else mindscape.ready = true;
});
function get_current_time() {
  return (new Date()).getTime() / 3000;
}

function paint_mindscape() {
  var ctx = $('#animation')[0].getContext("2d");
  ctx.drawImage(mindscape.images['background'], 0, 0);
  for (var i = 0; i < mindscape.state.clouds.length; i++) {
    var cloud = mindscape.state.clouds[i];
    ctx.globalAlpha = cloud.transparency;
    var image = mindscape.images['cloud0' + cloud.src];
    if (image == undefined) continue;
    ctx.drawImage(image, cloud.x, cloud.y, 
      image.width * cloud.scale, image.height * cloud.scale);
    if (mindscape.debug) {
      ctx.globalAlpha = 1;
      ctx.fillText(i + ", " + cloud.src + ", " + cloud.scale.toFixed(2), cloud.x, cloud.y);
    }
  }
  var mountain = mindscape.images['mountain'];
  ctx.drawImage(mountain, 0, mindscape.height - mountain.height + 5);
}

function update_mindscape() {

  mindscape.state.clouds = [];
  var x = get_current_time();

  var span = 500;
  var speed = mindscape.wind;
  for (var i = 0; i < mindscape.clouds; i++) {
    var cloud = Object();
    var offset = i * (span / mindscape.clouds);
    var seed = (Math.floor((x + offset) / (span + i)));
    var life = ((x + offset) / (span + i)) - seed;
    var distance = (i + 1) / 2 + (seed % 10) / 100;
    cloud.transparency = 1 ; //Math.min(1, Math.min(0.5, 1 / Math.max(distance, 0.5)));
    cloud.scale = 1 / Math.max(distance, 0.5);
    cloud.src = (seed % 5)+1;
    var image = mindscape.images['cloud0' + cloud.src];
    cloud.x = mindscape.width - (life * (mindscape.width + image.width * cloud.scale * 8));
    cloud.y = mindscape.height * 0.95 - mindscape.height / distance; // + (mindscape.height / 10) * (10 - distance);
    mindscape.state.clouds[i] = cloud;
  }
  paint_mindscape();
  setTimeout(update_mindscape, 50);
}

function init_mindscape() {
  $('#animation').attr('width', $('#header').width());
  $('#animation').attr('height', $('#header').height());
  mindscape.width = $('#header').width();
  mindscape.height = $('#header').height();
  update_mindscape();
}


