var dest_div = false;
var flyingDiv = false;
var cur_div = false;
var dest_x = false; var dest_y = false; 
var diffX = false;  var diffY = false;    
var curX = false;   var curY = false;     

function getTopPos(inputObj)
{		
  var returnValue = inputObj.offsetTop;
  while((inputObj = inputObj.offsetParent) != null)
  {
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
  }
  return returnValue;
}

function getLeftPos(inputObj)
{
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null)
  {
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
  }
  return returnValue;
}
	

function addFlyTo(divID, destID)
{
	if(!destID)
	{
		destID = 'map';
	}
	dest_div = document.getElementById(destID);
	if(!(dest_div && document.getElementById(divID)))
	{
		return;
	}
	if(!flyingDiv)
	{
		flyingDiv = document.createElement('DIV');
		flyingDiv.style.position = 'absolute';
		document.body.appendChild(flyingDiv);
	}
	dest_x = getLeftPos(dest_div);
	dest_y = getTopPos(dest_div);
	cur_div = document.getElementById(divID);

	curX = getLeftPos(cur_div);
	curY = getTopPos(cur_div);

	diffX = dest_x - curX;
	diffY = dest_y - curY;

	var contentCopy = cur_div.cloneNode(true);
	contentCopy.id='';
	flyingDiv.innerHTML = '';
	flyingDiv.style.left = curX + 'px';
	flyingDiv.style.top = curY + 'px';
	flyingDiv.appendChild(contentCopy);
	flyingDiv.style.display='block';
	flyingDiv.style.width = cur_div.offsetWidth + 'px';
	flyTo(divID);
}


function flyTo(divID)
{
	var maxDiff = Math.max(Math.abs(diffX),Math.abs(diffY));
	var moveX = (diffX / maxDiff) * 25;;
	var moveY = (diffY / maxDiff) * 25;	
	
	curX = curX + moveX;
	curY = curY + moveY;
	
	flyingDiv.style.left = Math.round(curX) + 'px';
	flyingDiv.style.top = Math.round(curY) + 'px';	
	
	if(moveX>0 && curX > dest_x){
		flyingDiv.style.display='none';		
	}
	if(moveX<0 && curX < dest_x){
		flyingDiv.style.display='none';		
	}
	if(moveY>0 && curY > dest_y){
		flyingDiv.style.display='none';		
	}
	if(moveY<0 && curY < dest_y){
		flyingDiv.style.display='none';		
	}
		
	if(flyingDiv.style.display=='block')setTimeout('flyTo("' + divID + '")',10); else flyingDiv.style.display='none';	
}
