var t; //timer
// frames per  second
var fps=18;
var acceleration=15;
var speedlimit=40;
// bubble snaps to these points, first is parked
var snapto = new Array (130,232,295,365,428,490,567,642) 

var  disabled=false;

// Move element d to point snapto[p]
function moveit(div,p){
		d=document.getElementById(div);
		// starting position
		start=parseInt(d.style.left.replace(/px/,""));
		// destination position
		destination=snapto[p];
		moveit_step(div,start,destination,0);
}
// iterative steps for animation
function moveit_step(div,start,destination,position){
	if(!disabled&&start!=destination){
	clearTimeout(t);
	d=document.getElementById(div);
	distance=Math.abs(destination-start);
	progress=position / distance;

	x=2*(position/distance)-(1);
	jump=-acceleration*distance*.01*Math.pow(x,2)+(acceleration*distance*0.01)+0.25;
	//   check speed
	if(jump>speedlimit) jump=speedlimit;
	
	position +=jump;
	// convert to css position
	if(start<destination){
		left=(start+position);
	}else{
		left=(start-position);
	}
	//check bounds, is this  needed?
	if(destination>start&&left>destination){
		left=destination;
	}
	if(destination<start&&left<destination){
	  left=destination;
	 }
	d.style.left=left+"px";
	// continue
	if((destination>start&&left<destination)
	||(destination<start&&left>destination)){
		t=setTimeout("moveit_step('"+div+"',"+start+","+destination+","+position+")",1000/fps);
	}
	
	}else{
	
	clearTimeout(t);
	}
}


