var seeds = new Array();
var seedbed = null;
var seedframe = 0;
var seedimg = null;
var seedhs = {maxscore:0};

function preventSelect()
{
  return false;
}

function newseed(x, y)
{
  if (seedbed == null) {
    seedbed = document.getElementById('seedbed');
    if (seedbed == null) 
      return;
    seedimg = document.createElement('IMG');
    if (typeof seedimg.style.filter == 'undefined') {
      seedimg.src = '/seed.png';
      seedimg.style.cssText = "position:absolute;left:-40px;top:30px;width:30px;height:40px;-moz-user-select:none;";
    }
    else { // use ie filter
      seedimg = document.createElement('DIV');
      seedimg.style.cssText = "position:absolute;left:-40px;top:30px;width:30px;height:40px;";
      seedimg.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale', src='/seed.png')";
    }
  }
  var seed = seedimg.cloneNode(true);
  seed.onselectstart = preventSelect;
  seed.onselect = preventSelect;
  seed.ondblclick = preventSelect;
  seed.onmousedown = preventSelect;
  seed.ondragstart = preventSelect;
  seed.scale = 0.5 + Math.random() * 0.5;
  seed.xloc = x - 15 * seed.scale;
  seed.yloc = y - 20 * seed.scale;
  seed.xvel = 1;
  seed.yvel = 0;
  seed.xwind = 3 * Math.random();
  seed.ywind = Math.random()-0.5;
  seed.style.width = Math.round(30*seed.scale) + 'px';
  seed.style.height = Math.round(40*seed.scale) + 'px';
  seeds[seeds.length] = seed;
  seedbed.appendChild(seed);
  return false;
}

function blowseeds()
{
  if (seeds.length < 3 && Math.random() < 0.01 || seeds.length == 0)
    newseed(-20, 50+Math.random()*20);

  var maxx = document.body.offsetWidth + 16;

  for(var i = seeds.length-1; i >= 0; --i) {
    var seed = seeds[i];
    seed.xloc += (0.5 + seed.xvel) * 0.5;
    seed.yloc += (seed.yvel) * 0.5;
    seed.xvel += seed.xwind * 0.1;
    seed.yvel += seed.ywind * 0.1;
    seed.xvel *= 0.99;
    seed.yvel *= 0.99;
    seed.xwind *= 0.9;
    seed.ywind *= 0.9;
    if (Math.random() < 0.01) {
      seed.xwind = 3 * Math.random();
      seed.ywind = Math.random();
      if (seed.yloc + 20 * seed.scale > 45)
        seed.ywind = -seed.ywind;
    };
    seed.style.left = Math.round(seed.xloc) + 'px';
    seed.style.top = Math.round(seed.yloc) + 'px';
    if (seed.xloc > maxx || seed.xloc < -50 || seed.yloc < -50 || seed.yloc > 120) {
      seedbed.removeChild(seed);
      seeds.splice(i, 1); // remove element i
    }
  }
  // scoring !
  if (seeds.length > seedhs.maxscore) {
    seedhs.maxscore = seeds.length;
    document.cookie = 'seed_hs='+seedhs.maxscore+';path=/'; 
  }
  if (seedhs.maxscore > 15 && seedhs.scoretable == null) {
    seedhs.scoretable = document.createElement('DIV');
    seedhs.scoretable.style.cssText = "position:absolute;left:3px;top:60px;color:#bbbbff;font-size:9px;margin:0px;-moz-user-select:none;";
    seedhs.unselectable = 'On';
    seedhs.scoretable.innerHTML = "<div id='seedbed_score'></div><div id='seedbed_highscore'>&nbsp;</div>";
    seedbed.appendChild(seedhs.scoretable);
    seedhs.scoretarget = seedhs.scoretable.firstChild;
    seedhs.highscoretarget = seedhs.scoretable.firstChild.nextSibling;
    seedhs.highscore = 1000000000;
    seedhs.gothighscore = false;
    seedbed.onselectstart = function () { return false; };
    req = document.createElement('SCRIPT');
    req.type = "text/Javascript";
    req.src = "/seed.php?cmd=getscore";
    req.src += "&jsontime=" + (new Date()).getTime();
    document.getElementsByTagName('head')[0].appendChild(req);
  }
  if (seedhs.scoretarget != null) {
    seedhs.scoretarget.innerHTML = 'Seeds: <span style="color:#ffffff">'+seeds.length+'</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Your Highest: <span style="color:#ffffff">'+seedhs.maxscore+'</span>';
    if (seedhs.maxscore > seedhs.highscore && !seedhs.gothighscore) {
      seedhs.gothighscore = true;
      seedhs.highscoretarget.innerHTML = 'New High Score! <a href="#" onmousedown="seedhs.savescore()">Submit</a>';
      seedhs.savescore = function() { setTimeout("window.location.href = '/seed.php?cmd=savescore';", 100); };
    }
  }
  setTimeout("blowseeds()", 40)
}

setTimeout("blowseeds()", 1000)

function seedblower(e)
{
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
	for(var i = 0; i < seeds.length; ++i) {
    var seed = seeds[i];
    var dx = (seed.xloc+15*seed.scale) - posx;
    var dy = (seed.yloc+20*seed.scale) - posy;
    var mag = Math.sqrt(dx*dx + dy*dy);
    if (mag > 0 && mag < 50) {
      seed.xwind = 0.2 * (50-mag) * dx / mag;
      seed.ywind = 0.2 * (50-mag) * dy / mag;
    }
  }
}

function seedgrower(e)
{
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
  newseed(posx, posy);
  e.cancelBubble = true;
  if (e.stopPropagation) e.stopPropagation();
  return false;
}
