var mover = new Object();
mover.speed = 1;				// Moves each node by this amount in pixels each interval
mover.interval = 36;		// Sets time in milliseconds between intervals
mover.nodeOffset = 36;	// How far above and below containers boundries to keep node
mover.spacing = 36;			// How much space between nodes in pixels
mover.pause = true;			// If true, scrolling will pause for time specified in mover.timeout
mover.pauseOffset = 1;	// Adjusts the alignment to center by this amount in pixels
mover.timeout = 1000;		// Time to pause when node reaches center

function initMover() {
	mover.children = null;
	mover.nodePosition = 0;
	mover.nodeIndex = 0;
	mover.practiceAreas = new Array();

	paPages = paPages.split('<;>');
	for(i=0;i<=paPages.length-1;i++) {
		tmpNode=paPages[i].split('<:>');
		tmpImg = new Image();
		tmpImg.src=tmpNode[2];
		mover.practiceAreas[i] = {title:tmpNode[0],link:tmpNode[1],slide:tmpImg,position:0};
	}

	mover.container = document.getElementById('practiceAreas');
	mover.tCenter = mover.container.offsetHeight/2;
	mover.tDistance = (mover.lBound-mover.uBound)/2;
	mover.uBound = 0-mover.nodeOffset;
	mover.lBound = mover.container.offsetHeight+mover.nodeOffset;
	addPracticeArea();
	startTimer();
}

function moverRun() {
	mover.children = mover.container.getElementsByTagName('li');
	for(i=0;i<=mover.children.length-1;i++) {
		if(moveNode(i)) {
			mover.container.removeChild(mover.children[i]);
		}
		if(i+1 == mover.children.length) {
			if((mover.lBound)-(mover.children[i].offsetHeight+mover.nodePosition) >= mover.spacing) {
				addPracticeArea();
			}
		}
	}
}

function addPracticeArea() {
	// Create the new list element
	AreaListItem = document.createElement('li');
	AreaListItem.setAttribute('id','p'+mover.nodeIndex);
	AreaListItem.innerHTML = '<a onMouseOver="stopTimer('+mover.nodeIndex+')" onMouseOut="startTimer('+mover.nodeIndex+')" href="'+mover.practiceAreas[mover.nodeIndex].link+'">'+mover.practiceAreas[mover.nodeIndex].title+'</a>';
	AreaListItem.style.top = (mover.container.offsetHeight+mover.nodeOffset)+"px";

	mover.container.appendChild(AreaListItem);
	if(++mover.nodeIndex>mover.practiceAreas.length-1) mover.nodeIndex = 0;
}

function moveNode(nodeIndex) {
	// Calculate new node position
	node = mover.children[nodeIndex];
	mover.nodePosition = parseInt(node.style.top)-mover.speed;
	nodeID = node.getAttribute('id').replace('p','');

	// If mover.pause is true, then pause scrolling when node is at center

	if(mover.nodePosition+node.offsetHeight/2 <= mover.tCenter+mover.pauseOffset && mover.practiceAreas[nodeID].position > mover.tCenter+mover.pauseOffset) {
		mover.practiceAreas[nodeID].position = mover.nodePosition+node.offsetHeight/2;
		
		if(mover.pause) {
			clearInterval(mover.timer);
			mover.pausetimer = setTimeout("startTimer()",mover.timeout);
		}

		if(mover.practiceAreas[nodeID].slide != 'none') {
			newSlide = mover.practiceAreas[nodeID].slide;
			newSlide.setAttribute('alt','');
			newSlide.setAttribute('style','display:none');
			document.getElementById('aniImages').appendChild(newSlide);
			fadeInSlide(Math.floor(mover.timeout/50));
		}
	}

	// Move node and set opacity
	node.style.top = mover.nodePosition+"px";
	mover.practiceAreas[nodeID].position = mover.nodePosition+node.offsetHeight/2;
	setNodeOpacity(nodeIndex);

	// Last we check to see if the node has gone out of bounds yet
	if(mover.nodePosition+node.offsetHeight<mover.uBound) {
		return true;
	} else {
		return false;
	}
}

function setNodeOpacity(nodeIndex) {
	node = mover.children[nodeIndex];
	dist = mover.tCenter - (mover.nodePosition+(node.offsetHeight/2));
	nodeOpacity = 100-Math.abs(dist);
	if(nodeOpacity<=0) nodeOpacity = 1;
	if(nodeOpacity>99) nodeOpacity = 99;
	node.style.opacity = nodeOpacity/100;
	node.style.filter = "alpha(opacity="+nodeOpacity+")";
}

function fadeInSlide(fadeTime) {
	iContainer = document.getElementById('aniImages');
	iChildren = iContainer.getElementsByTagName('img');
	if(iChildren.length > 1) {
		i = iChildren.length - 1;
	} else {
		i = 0;
	}

	if(fadeTime) {
		nodeOpacity = Math.floor(100*(1-fadeTime/(mover.timeout/50)));
		//alert(nodeOpacity);
		if(nodeOpacity<=0) nodeOpacity = 1;
		if(nodeOpacity>99) nodeOpacity = 99;
		iChildren[i].style.opacity = nodeOpacity/100;
		iChildren[i].style.filter = "alpha(opacity="+nodeOpacity+")";
		iChildren[i].style.display = 'block';
		mover.fadetimer = setTimeout("fadeInSlide("+(--fadeTime)+")",50);
	} else {
		if(i) iContainer.removeChild(iChildren[0]);
		startTimer();
	}

}

function startTimer() {
	if(mover.timer) clearInterval(mover.timer);
	mover.timer = setInterval("moverRun()",mover.interval);
}

function stopTimer(nodeIndex) {
	if(nodeIndex != 'undefined') {
		node = document.getElementById('p'+nodeIndex);
		node.style.opacity = 1;
		node.style.filter = "alpha(opacity=100)";
	}
	if(mover.pausetimer) clearTimeout(mover.pausetimer);
	if(mover.timer) clearInterval(mover.timer);
}
