var Project = {
  start: function() {
    $('nav .who').click(function(e){
      if($('.content .who').is('.active'))
        return false;
      $('.content > div').not('.active').css('left', '1000px');
      $('.content .active').animate(
        { left: '-1000px' }, 
        500
      );
      $('.content > div').removeClass('active');
      $('.content .who').animate(
        { left: '0px' },
        500
      );
      $('.content .who').addClass('active');
    });
    $('nav .what').click(function(e){
      if($('.content .what').is('.active'))
        return false;
      $('.content > div').not('.active').css('left', '1000px');
      $('.content .active').animate(
        { left: '-1000px' }, 
        500
      );
      $('.content > div').removeClass('active');
      $('.content .what').animate(
        { left: '0px' },
        500
      );
      $('.content .what').addClass('active');
    });
    $('nav .number').click(function(e){
      if($('.content .number').is('.active'))
        return false;
      $('.content > div').not('.active').css('left', '1000px');
      $('.content .active').animate(
        { left: '-1000px' }, 
        500
      );
      $('.content > div').removeClass('active');
      $('.content .number').animate(
        { left: '0px' },
        500
      );
      $('.content .number').addClass('active');
    });
    var url = decodeURIComponent(window.location.toString());
    var urlParts = url.split('://');
    urlParts = urlParts[1].split('/');
    switch(urlParts[2]) {
      case 'who':
        $('.content > div').css('left', '99999px');
        $('.content > div').removeClass('active');
        $('.content .who').css('left', '0px');
        $('.content .who').addClass('active');
      break;
      case 'what':
        $('.content > div').css('left', '99999px');
        $('.content > div').removeClass('active');
        $('.content .what').css('left', '0px');
        $('.content .what').addClass('active');      
      break;
      case 'number':
        $('.content > div').css('left', '99999px');
        $('.content > div').removeClass('active');
        $('.content .number').css('left', '0px');
        $('.content .number').addClass('active');      
      break;
    }
  },
  randomr: function(min, max) {
    return Math.floor(Math.random() * (max-min))+min;
  }
};

var Raven = {
  idle: null,
  seeds: null,
  start: function() {
    idle = setTimeout(function() { Raven.move(); }, 300);
    $('#raven').mousedown(function() { Raven.click(); });
  },
  move: function() {
    // add some entropy
    rx = Project.randomr(-2, 2);
    ry = Project.randomr(-2, 2);
    
    // restrict it so he doesn't fly away
    parseInt($('#raven').css('top'))+ry < 0 ? ry = 0 : ry;
    parseInt($('#raven').css('right'))+rx < 0 ? rx = 0 : rx;
    parseInt($('#raven').css('top'))+ry > 15 ? ry = 0 : ry;
    parseInt($('#raven').css('right'))+rx > 30 ? rx = 0 : rx;
    
    $('#raven').css({'top': parseInt($('#raven').css('top'))+ry+'px', right: parseInt($('#raven').css('right'))+rx+'px'});
    idle = setTimeout(function() { Raven.move(); }, 150);
  },
  drawEgg: function(can, w, h) {
  	c = can.getContext("2d");

  	centerX = w/2;
  	centerY = h/2;
   
  	// define size of oval
  	height = h-1;
  	width = w-(w/3);
   
  	controlRectWidth = width * 1.3;
    rot = Project.randomr(-30, 30);
    
  	c.beginPath();
  	c.moveTo(centerX,centerY - height/2);

  	c.bezierCurveTo(centerX-controlRectWidth/2,centerY-height/2,
  		centerX-controlRectWidth/2,centerY+height/2,
  		centerX,centerY+height/2);
   
  	c.bezierCurveTo(centerX+controlRectWidth/2,centerY+height/2,
  		centerX+controlRectWidth/2,centerY-height/2,
  		centerX,centerY-height/2);
   
  	c.fillStyle="#ffffff";
  	c.fill();
  	c.lineWidth=1;
  	c.strokeStyle="#333333"; 
  	c.stroke();	
  	c.closePath();
  },
  click: function() {
    egg = document.createElement('canvas');
    $('body').append(egg);
    
    dump = document.createElement('div');
    $(dump).addClass('dump');
    //$('body').append(dump);
    rx = Project.randomr(-40, 120);
    ry = Project.randomr(50, 450);
    bw = 20;
    rr = Project.randomr(0, 10);
    bw += rr;
    
    $(egg).css({
      position: 'absolute',
      top: parseInt($('#raven').css('top')) + 60,
      right: parseInt($('#raven').css('right')) + 35,
    });
    $(egg).attr('width', bw);
    $(egg).attr('height', bw);
    $(egg).attr('rel', 0);
    
    this.drawEgg(egg, bw-5, bw-5);
    
    $(egg).animate({
      top: 120+ry+'px', 
      right: 60+rx+'px'
    }, {
      duration: 2000,
      complete: function() {
        //Raven.grow(this);
      }
    });
  },
  grow: function(parent) {
    if(parseInt($(parent).attr('rel')) > parseInt($(parent).css('width'))/2) {
      return;
    } 
    r = 66;
    g = Project.randomr(180, 255);
    b = 73;
    t = Project.randomr(5, 20);
    
    l = (parseInt($(parent).attr('rel'))-1) * 2;
          
    grass = document.createElement('div');
    $(grass).addClass('grass');
    $(parent).append(grass);
    $(grass).css({'left': l, 'background-color': 'rgb('+r+', '+g+', '+b+')'});
    $(parent).attr('rel', parseInt($(parent).attr('rel'))+1);
    h = Project.randomr(parseInt($(parent).css('height')), parseInt($(parent).css('height'))+10);
    $(grass).animate({
      height: h
    }, {
      duration: 1000*t,
      complete: function() {
        if(parseInt($(parent).attr('rel')) > parseInt($(parent).css('width'))/2) {
          $(parent).css('background-color', 'transparent');
          return;
        }      
      }
    });
    setTimeout(function() { Raven.grow(parent); }, 500);
  }
};

$(function() {
  Project.start();
  Raven.start();
});
