var speed = 15;
var scrollH;
var toScroll;
var toView;
var speedScroll;
var interval = 25;
var hTimer;
var scrollPos;

function moveUp() {
document.getElementById('cnt').style.top = document.getElementById('cnt').offsetTop + speed + 'px';
if(document.getElementById('cnt').offsetTop >= 0) {
	document.getElementById('cnt').style.top = 0;
	document.getElementById('scrollDrag').style.top = document.getElementById('scrollUp').offsetHeight + 'px';
	}
else {
	scrollPos = scrollPos - speedScroll;
	document.getElementById('scrollDrag').style.top = scrollPos + 'px';
	}
hTimer = setTimeout('moveUp()', interval);
}

function moveDown() {
document.getElementById('cnt').style.top = document.getElementById('cnt').offsetTop - speed + 'px';

if(document.getElementById('cnt').offsetTop <= toView - toScroll) {
	document.getElementById('cnt').style.top = toView - toScroll + 'px';
	document.getElementById('scrollDrag').style.top = scrollH + document.getElementById('scrollDown').offsetHeight - document.getElementById('scrollDrag').offsetHeight + 'px';
	}
else {
	scrollPos = scrollPos + speedScroll;
	document.getElementById('scrollDrag').style.top = scrollPos + 'px';
	}
hTimer = setTimeout('moveDown()', interval);
}

var lastPos;

function doDrag(e) {

if(window.event) {
	if(lastPos == 0) {lastPos = window.event.y;}
	delta = window.event.y - lastPos;
	lastPos = window.event.y;
	}
else {
	if(lastPos == 0) {lastPos = e.clientY;}
	delta = e.clientY - lastPos;
	lastPos = e.clientY;
	}

document.getElementById('scrollDrag').style.top = document.getElementById('scrollDrag').offsetTop + delta + 'px';

scrollPos = scrollPos + delta;

document.getElementById('cnt').style.top = document.getElementById('cnt').offsetTop - delta * speed / speedScroll + 'px';

if(document.getElementById('scrollDrag').offsetTop > scrollH + document.getElementById('scrollDown').offsetHeight - document.getElementById('scrollDrag').offsetHeight) {
	document.getElementById('cnt').style.top = toView - toScroll + 'px';
	scrollPos = scrollH + document.getElementById('scrollDown').offsetHeight - document.getElementById('scrollDrag').offsetHeight;
	document.getElementById('scrollDrag').style.top = scrollH + document.getElementById('scrollDown').offsetHeight - document.getElementById('scrollDrag').offsetHeight + 'px';
	}

if(document.getElementById('scrollDrag').offsetTop < document.getElementById('scrollUp').offsetHeight) {
	document.getElementById('cnt').style.top = 0;
	scrollPos = document.getElementById('scrollDrag').offsetTop;
	document.getElementById('scrollDrag').style.top = document.getElementById('scrollUp').offsetHeight + 'px';
	}
}

function doScrollAct(act) {
switch(act) {
	case 'up':
		hTimer = setTimeout('moveUp()', interval);
	break;
	case 'down':
		hTimer = setTimeout('moveDown()', interval);
	break;
	case 'drag':
		lastPos = 0;
		document.onmousemove = doDrag;
	break;
	}
}

function noAct() {
clearTimeout(hTimer);
document.onmousemove = null;
}


function doSize() {
if(navigator.appName.indexOf('Explorer') > 0) {toMinus = 20;}
else {toMinus = 60;}
document.getElementById('content').style.height = document.getElementById('forContent').offsetHeight - toMinus + 'px';
document.getElementById('contentClip').style.height = document.getElementById('content').offsetHeight - toMinus + 'px';
document.getElementById('scroller').style.height = document.getElementById('contentClip').offsetHeight + 'px';
}

function prepare() {
if(document.getElementById('scroller')) {
	scrollH = document.getElementById('scroller').offsetHeight - document.getElementById('scrollUp').offsetHeight - document.getElementById('scrollDown').offsetHeight;
	toScroll = document.getElementById('cnt').offsetHeight;
	toView = document.getElementById('contentClip').offsetHeight;
	if(toView > toScroll) {
		document.getElementById('scroller').style.display = 'none';
		}
	else {
		document.getElementById('scroller').style.visibility = 'visible';
		}
	scrollPos = document.getElementById('scrollDrag').offsetTop;
	speedScroll = speed * (scrollH - document.getElementById('scrollDrag').offsetHeight) / (toScroll - toView);
	}
}

function innerScroll(id) {
el = document.getElementById(id);

document.getElementById('cnt').style.top = (-1) * el.offsetTop + 'px';

if(document.getElementById('cnt').offsetTop >= 0) {
	document.getElementById('cnt').style.top = 0;
	document.getElementById('scrollDrag').style.top = document.getElementById('scrollUp').offsetHeight + 'px';
	}
else {
	scrollPos = document.getElementById('scrollUp').offsetHeight + el.offsetTop * (scrollH - document.getElementById('scrollDrag').offsetHeight) / (toScroll - toView);
	document.getElementById('scrollDrag').style.top = scrollPos + 'px';
	}

}

document.onmouseup = noAct;


