/************************************************************************************************************
(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だとトップ。それ以外の数字の場合はトップからの位置（単位はピクセル）
var slidePixelPerMove = 15;	// 数字が大きいほど早い
var slideTimeoutBetweenMoves = 5; 	// 単位はミリ秒
var slideInReverseOrder = false;	// 落下させるテキストの順番

/*これ以降のコードは変更不可*/

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;
