var fallFromYPosition = -30;	// 0 = top, other numbers represents pixels from top
var slidePixelPerMove = 15;	// Higher = faster
var slideTimeoutBetweenMoves = 5; 	// Milliseconds
var slideInReverseOrder = false;	// Start with last item?

/* Don't change anything below here */

var dhtmlgoodies_fallingLinks;
var fallingItems = new Array();
var absolutePositionedItems = new Array();
var currentFallingObject = false;

function getTopPos(inputObj)
{		
  var returnValue = inputObj.offsetTop;
  while((inputObj = inputObj.offsetParent) != null){
  	returnValue += inputObj.offsetTop;
  }
  return returnValue;
}

function getLeftPos(inputObj)
{
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null){
  	returnValue += inputObj.offsetLeft;
  }
  return returnValue;
}
	

function slideDownLinks(linkIndex)
{
	var topPos = currentFallingObject.style.top.replace('px','')/1;
	topPos = topPos + slidePixelPerMove;
	var slideEnded = false;

	if(topPos>=fallingItems[linkIndex]['top']){
		topPos = fallingItems[linkIndex]['top'];
		slideEnded = true;
	}
	
	currentFallingObject.style.top = topPos + 'px';
	
	if(!slideEnded){
		setTimeout('slideDownLinks(' + linkIndex + ')',slideTimeoutBetweenMoves);
		return;
	}else{
		currentFallingObject.style.display='none';
		fallingItems[linkIndex]['obj'].style.visibility = 'visible';
		
		if(linkIndex<fallingItems.length-1 && !slideInReverseOrder){
			linkIndex = linkIndex + 1;
			currentFallingObject = absolutePositionedItems[linkIndex];
			currentFallingObject.style.display='block';
			slideDownLinks(linkIndex);
			return;
		}
		
		if(linkIndex>0 && slideInReverseOrder){
			linkIndex = linkIndex - 1;
			currentFallingObject = absolutePositionedItems[linkIndex];
			currentFallingObject.style.display='block';
			slideDownLinks(linkIndex);
		}
	}
	
}


function initFallingLinks()
{
	dhtmlgoodies_fallingLinks = document.getElementById('dhtmlgoodies_fallingLinks');
	var subs = dhtmlgoodies_fallingLinks.getElementsByTagName('*');
	for(var no=0;no<subs.length;no++){
		
		var thisIndex = fallingItems.length;
		fallingItems[thisIndex] = new Array();
		fallingItems[thisIndex]['obj'] = subs[no];	
		fallingItems[thisIndex]['left'] = getLeftPos(subs[no]);	
		fallingItems[thisIndex]['top'] = getTopPos(subs[no]);	
		
		
		
		absolutePositionedItems[thisIndex] = document.createElement('DIV');
		absolutePositionedItems[thisIndex].style.display='none';
		absolutePositionedItems[thisIndex].style.position='absolute';
		absolutePositionedItems[thisIndex].style.left=fallingItems[thisIndex]['left'] + 'px';
		absolutePositionedItems[thisIndex].style.top= fallFromYPosition + 'px';
		absolutePositionedItems[thisIndex].className = 'dhtmlgoodies_fallingLinks';
		
		document.body.appendChild(absolutePositionedItems[thisIndex]);
		
		var innerItem = document.createElement(subs[no].tagName);
		innerItem.innerHTML = subs[no].innerHTML;	
		absolutePositionedItems[thisIndex].appendChild(innerItem);	
		
		innerItem.style.visibility = 'visible';		
	}
	
	if(absolutePositionedItems.length>0){
		if(slideInReverseOrder)startIndex = absolutePositionedItems.length-1; else startIndex = 0;
		currentFallingObject = absolutePositionedItems[startIndex];
		currentFallingObject.style.display='block';
		slideDownLinks(startIndex);
	}
}


window.onload = initFallingLinks;

