// 0 : gif
// 1 : x
// 2 : y
// 3 : xv
// 4 : yv
// 5 : target
// 6 : target_x_offset
// 7 : target_y_offset

var rate=50
var spring=0.08;
var damp=0.82;
var rate_const=0.01;
var c_count=6;
var mx=0;
var my=0;
var x0=["img/mini-kelsey.gif",0,0,1,1,null,0,100];
var x1=["img/mini-kelsey.gif",0,0,0,0,x0  ,0,100];
var x2=["img/mini-kelsey.gif",0,0,0,0,x1  ,0,70];
var x3=["img/mini-kelsey.gif",0,0,0,0,x2  ,0,45];
var x4=["img/mini-kelsey.gif",0,0,0,0,x3  ,0,30];
var x5=["img/mini-kelsey.gif",0,0,0,0,x4  ,0,20];

var xx=[x0,x1,x2,x3,x4,x5];

var n;

var B=document.all;

function update(c)
{
  var tx=0,ty=0,fx,fy;
  var dx, dy, dist;
  var rc = rate*rate_const;

  if (c[5]==null)
  {
    tx=mx;
    ty=my;
  }
  else
  {
    tx=c[5][1];
    ty=c[5][2];
  }
  tx = tx+c[6];
  ty = ty+c[7];

  dx = tx - c[1];
  dy = ty - c[2];

  fx = spring * dx;
  fy = spring * dy;
      
  c[1] = c[1] + c[3]*rc + 0.5*fx*(rc*rc);
  c[2] = c[2] + c[4]*rc + 0.5*fx*(rc*rc);

  c[3] = c[3]*damp;
  c[4] = c[4]*damp;

  c[3] = c[3] + fx*rc;
  c[4] = c[4] + fy*rc;
}

function loop()
{
  var n,q,t=0;
  for (i=0; i<c_count; i++)
  {
    n="CC"+i;
    update(xx[i]);

    q=(B)?B[n].style : document.getElementById(n).style;
    q.left= xx[i][1];
    q.top = xx[i][2];
  }
}


for (var i=0; i<c_count; i++)
{
  var n="CC"+i;

  document.write("<span id=\""+n+"\" style=\"position:absolute; left="+i*50+"; top=100;\">")
  document.write("<img src='"+xx[i][0]+"' style='border: 0;'>")
  document.write("</span>");
}

function newPos(e)
{
  var fx=0,fy=0;
  if (document.all&&window.print)
  {
    fx=document.body.scrollLeft;
    fy=document.body.scrollTop;
  }
  mx=(B)?event.clientX+fx:e.pageX+2;
  my=(B)?event.clientY+fy:e.pageY+2;

  mx=mx-20;
}

if(document.layers)
  document.captureEvents(Event.MOUSEMOVE)
document.onmousemove=newPos

setInterval("loop()",rate)
