
/************************************************************************************************************
(C) www.dhtmlgoodies.com, December 2005

This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	

Terms of use:
You are free to use this script as long as the copyright message is kept intact. However, you may not
redistribute, sell or repost it without our permission.

Thank you!

www.dhtmlgoodies.com
Alf Magne Kalleland

************************************************************************************************************/
	
var fallFromYPosition = -30;	// 0 = top, other numbers represents pixels from top
var slidePixelPerMove = 10;	// 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;
