function $(id)
{
	return document.getElementById(id);
}

var viewer = {};
var ScrollRepeatPeriod = 111;
var ScrollRepeatStep = 2;
var ScrollTimeout = null;


function InitViewer(fld_id)
{
	viewer.obj = $(fld_id);
	viewer.slider = $(fld_id + '_slider');
	viewer.fullHeight = viewer.obj.scrollHeight;
	viewer.viewerHeight = viewer.obj.clientHeight;	
	
	viewer.currentHeight = 0;
	viewer.minHeight = 0;
	viewer.maxHeight = viewer.fullHeight - viewer.viewerHeight;
	viewer.ratio = viewer.viewerHeight / viewer.fullHeight;
	viewer.ratio2 = (viewer.viewerHeight - 4 - $(fld_id + '_arrow').clientHeight * 2) / viewer.fullHeight;	
	
viewer.slider.style.height = Math.round((viewer.viewerHeight) * (viewer.viewerHeight - 4 - $(fld_id + '_arrow').clientHeight * 2) / viewer.fullHeight);
}

function ScrollTo(to_y)
{		
	if (to_y >= 0 && to_y <= viewer.maxHeight)
	{
	}
	else if (to_y > viewer.maxHeight)
	{
		to_y = viewer.maxHeight; 
	}
	else
	{
		to_y = 0;
	}
	
	viewer.obj.scrollTop = to_y;
	viewer.slider.style.top = Math.round(to_y * viewer.ratio2);	
	viewer.currentHeight = to_y;
	
}

function ScrollUp()
{
	ScrollTo(viewer.currentHeight - 20);
}

function ScrollDown()
{
	ScrollTo(viewer.currentHeight + 20);
}

function ScrollHandleMouseDown(fld_id, step, repiat)
{	
	if (!repiat)
	{
		repiat = ScrollRepeatPeriod;	
	}
	else
	{
		ScrollTo(viewer.currentHeight + step);
		repiat = repiat - repiat / 10;
		
		if (!repiat)
		{
			repiat = 1;
		}	
	}		
	ScrollTimeout = window.setTimeout('ScrollHandleMouseDown("'+fld_id+'", '+step+', '+repiat+')', repiat, "JavaScript");	
	return true;
}

function ScrollHandleMouseUp(fld_id, step)
{
	if (fld_id)
	{
		ScrollTo(viewer.currentHeight + step);
	}
	window.clearTimeout(ScrollTimeout);
}



window.onload = function() {InitViewer('viewer')}
