var defaultScrollingStep = 2;
var defaultScrollingTiming = 50;
var currentSteppings = new Object();
var currentAreaId = false;

function scrollUp(id) {
	currentSteppings[id] = -defaultScrollingStep;
	window.setTimeout('scrolling(\''+id+'\')', defaultScrollingTiming);
}

function scrollDown(id) {
	currentSteppings[id] = defaultScrollingStep;
	window.setTimeout('scrolling(\''+id+'\')', defaultScrollingTiming);
}

function stopScrolling(id) {
	currentSteppings[id] = 0;
}

function scrollSpeedFaster(id) {
	var stepping = currentSteppings[id];
	if (stepping > 0) stepping += defaultScrollingStep;
	else if (stepping < 0) stepping -= defaultScrollingStep;
	currentSteppings[id] = stepping;
}

function scrolling(id) {
	var stepping = currentSteppings[id];
	var nodeBox = document.getElementById(id);
	var nodeData = document.getElementById(id+'Data');
	if (!nodeBox || !nodeData) {
		if (!nodeBox) alert('scrolling() could not find id ('+id+')');
		if (!nodeData) alert('scrolling() could not find id ('+id+'Data)');
		currentSteppings[id] = 0;
		return;
	}
	var visibleHeight = parseInt(nodeBox.offsetHeight);
	var contentHeight = parseInt(nodeData.offsetHeight);
	var contentTopStr = nodeData.style.top;
	if (contentTopStr == '') contentTopStr = '0px';
	var contentTop = parseInt(contentTopStr);
	contentTop -= stepping;
	
	var lastStep = false;
	if (contentTop > 0) {
		contentTop = 0;
		lastStep = true;
	} else if (contentTop < visibleHeight - contentHeight) {
		contentTop = visibleHeight - contentHeight;
		lastStep = true;
	}
	nodeData.style.top = contentTop+'px';
	if (lastStep) currentSteppings[id] = 0;
	else if (stepping != 0) window.setTimeout('scrolling(\''+id+'\')', defaultScrollingTiming);
}

function setVisibility(id) {
	var nodeBox = document.getElementById(id);
	if (nodeBox) nodeBox.style.overflow = 'hidden';

	var nodeData = document.getElementById(id+'Data');
	if (nodeBox && nodeData) {
		var visibleHeight = parseInt(nodeBox.offsetHeight);
		var contentHeight = parseInt(nodeData.offsetHeight);
		if (contentHeight <= visibleHeight) return;
	}
	
	var node = document.getElementById(id+'Up');
	if (node) node.style.display = 'block';
	node = document.getElementById(id+'Down');
	if (node) node.style.display = 'block';
}
