	var step = 10; //pixels to scroll per tick
	var time = 50; //time per tick (lower scrlls faster)
	var blockHeight = 375; //height of the outer block level element
	var blockId = 'inner'; //id of the innercontent div;
	var outerId = 'content'; //id of the outer div 
	var scrollbarborder = 0;

	
	
	var scrollup = false;
	var scrolldown = false;
	var noScroll = false;
	var inner;
	var minMargin;
	var scrollbar;
	var scrollingspace;
	var outHeight;
	var inHeight;
	var lastPos;
	
	
	function init() {
		
//		scrollbar = document.getElementById('scrollbar');
//		scrollspan = document.getElementById('progress');
		
		block = document.getElementById(outerId);
		blockHeight= (block.clientHeight) ? block.clientHeight : block.offsetHeight;	
		block.style.overflow= "hidden";
		inner = document.getElementById(blockId);
		inHeight = (inner.clientHeight) ? inner.clientHeight : inner.offsetHeight;
		if (inHeight <= blockHeight) {
			noScroll = true;
		}
		//alert(inHeight);
		//alert(blockHeight);
		minMargin = (inHeight)*-1 + blockHeight;
		
		initScrollbar();

		//attach mozilla scroll event to the div
		if (inner.addEventListener) {
			inner.addEventListener( "DOMMouseScroll", mozScroll, false ); 
		}

		
	}


	function initScrollbar() {
		outHeight = blockHeight-20;
		if (inHeight <= outHeight+20) { 
//			scrollbar.className = 'inactive';
			scrollingSpace = 0;
		} else {
			scrollBarHeight = (blockHeight/inHeight) * blockHeight;
//			scrollspan.style.height = Math.round(scrollBarHeight) + 'px';
			scrollingSpace = outHeight - scrollBarHeight - 2*scrollbarborder;
			//alert(scrollingSpace);
			//alert(scrollBarHeight);
		}
	}
	
//	function positionScrollbar() {
//		var topmargin = inner.style.marginTop.substr(0, inner.style.marginTop.length-2)*1;
//		var relMargin = topmargin / minMargin;
//		var scrollspanTop = relMargin * (scrollingSpace);// + 20;
//		scrollspan.style.top = scrollspanTop + 'px';
//	}

//	function barScroll(e) {
//		if (noScroll) { return; }
//		var pos = 0;
//		if (!e) var e = window.event;
//		if (e.pageY) {
//			pos = e.pageY;
//		} else if (e.clientY) {
//			pos = e.clientY + document.body.scrollTop;
//		}
//
//		if (!lastPos) { lastPos = pos; return; }
//
//		var pixelOffset = lastPos - pos;
//		lastPos = pos;
//		pixelScroll(pixelOffset);
//	}

	function pixelScroll(offset) {
		var percScroll = -1*offset / scrollingSpace;
			
		var numSteps = (minMargin*-1) / step;
		if (percScroll < 0) {			
			scrollUp(-1*numSteps*percScroll);
		} else {
			scrollDown(numSteps*percScroll);
		}
	}


//	function setMouseMove() {
//		lastpos = null;
//		document.onmousemove = barScroll;
//		document.onmouseup = unsetMouseMove;
//	}

//	function unsetMouseMove() {
//		lastpos = null;
//		document.onmouseup = null;
//		document.onmousemove = null;
//	}



	function mozScroll(e) { 
		if (e.detail < 0) scrollUp(2)
		else { scrollDown(2); }
	}

	function iescrollwheel(e) {
		if (!e) {  e = window.event; }

		if (e.wheelDelta >= 120) scrollUp(2);
		else if (e.wheelDelta <= -120) scrollDown(2);   
	}

	function scroll() {
		if (scrollup) { scrollUp(); setTimeout(scroll, time);}
		if (scrolldown) { scrollDown(); setTimeout(scroll, time); }
	}
	
	function scrollUp(i) {
		if (noScroll) return;
		if (!i) { i = 1; }
		var mg = inner.style.marginTop;
		newMg = mg.substr(0, mg.length-2)*1 + i * step;
		newMg = Math.min(0, Math.round(newMg) );
		inner.style.marginTop = newMg + 'px';
//		positionScrollbar();
	}

	function scrollDown(i) {
		if (noScroll) return;
		if (!i) { i = 1; }
		var mg = inner.style.marginTop;
		newMg = mg.substr(0, mg.length-2)*1 - i * step;
		newMg = Math.max(minMargin, Math.round(newMg) );
		inner.style.marginTop = newMg  + 'px';
//		positionScrollbar();
	}

