// prefs
var speed = 6;
var pageOverlap = 25;
var time = 0;
var borderTweak=30;

// init
var timeout_id;
var handlePos = 0;
var dragable;

function init() {
//Start init with Try
//try
//  {
//End init with Try

	container1 = parseInt(document.getElementById("layerContainer").offsetTop);
	container2 = parseInt(document.getElementById("layerContent").offsetTop);
	contentH = parseInt(document.getElementById("scrollableContent").offsetHeight);
	contentScrollH = parseInt(document.getElementById("scrollableContent").scrollHeight);
	contentT = parseInt(document.getElementById("scrollableContent").scrollTop);
	barT = findPos(document.getElementById('barR')).top;
	handleT = parseInt(document.getElementById("handleR").offsetTop);
	handleH = parseInt(document.getElementById("handleR").offsetHeight);
//	upR = document.getElementById("upR").offsetTop;
//	downR = parseInt(document.getElementById("downR").offsetTop);
//	upL = parseInt(document.getElementById("upL").offsetTop);
//	downL = parseInt(document.getElementById("downL").offsetTop);
	upH = parseInt(document.getElementById("upR").offsetHeight);
	downH = parseInt(document.getElementById("downR").offsetHeight);
	/*
	document.getElementById("handleR").style.top = '0px';
	document.getElementById("handleL").style.top = '0px';*/
	handlePos=0;
	barH = contentH-(upH+downH); //downL-downH-container1-container2;
	barHtweak = barH-downH+5;
	document.getElementById("barR").style.height = barH			+'px'; // offsetHeight
	document.getElementById("barR").style.top = -(upH+handleH)	+'px';
	document.getElementById("barL").style.height = barH			+'px';
	document.getElementById("barL").style.top = -(upH+handleH)	+'px';
	document.getElementById("scrollContainerR").style.height = contentH;
	document.getElementById("scrollContainerL").style.height = contentH;
	
	scrollS = (barH-handleH)/(contentScrollH);
	pageS = scrollS*barH;
	
	handlePos = contentT/(contentScrollH-contentH)*(barHtweak);
	moveHandle();

// Start Error catch	
/*}
  catch(err)
  {
  return;
  }*/
// End Error catch
}

function getPos(e) {
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	clickY = posy-(upH+container1+container2+borderTweak);
}

function startDrag() {
    dragable = true;
}

function stopDrag() {
    dragable = false;
}

function drag(e) {
	if (dragable == true) {
//		handlePos=e.clientY-barT+downH+handleH/2;
		handlePos=(e.clientY-barT+downH+handleH/2);
		moveHandle();
		contentT = handlePos/barHtweak*(contentScrollH-contentH);
//		teabugs("handlePos",handlePos);
		moveContent();
	}
}

function pageMove(e) {
    getPos(e);
	if (clickY<handlePos) {
		contentT-=contentH-pageOverlap;
	} else if (clickY>handlePos) {
		contentT+=contentH-pageOverlap;
	}
	moveContent();
	
	handlePos = contentT/(contentScrollH-contentH)*(barHtweak);
	moveHandle();
}

function scroll(dir) {
	contentT+=speed*dir; moveContent ();
	handlePos = contentT/(contentScrollH-contentH)*(barHtweak);
	moveHandle();
	timeout_id = setTimeout("scroll('"+dir+"')",time);
}

function stopScroll() {
	if (timeout_id) clearTimeout(timeout_id);
}

function moveContent() {
	contentT=Math.min(Math.max(contentT,0),contentScrollH-contentH);
	document.getElementById("scrollableContent").scrollTop = contentT;
}

function moveHandle() {
	handlePos=Math.min(Math.max(0,handlePos),barHtweak);
//	teabugs("handlePos",handlePos);
	document.getElementById("handleR").style.top = handlePos+'px';
	document.getElementById("handleL").style.top = handlePos+'px';
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return {left:curleft,top:curtop};
}


//original source: adomas.org/javascript-mouse-wheel/
function onScroll	(delta				){
	contentT-=delta; moveContent ();
	handlePos = contentT/(contentScrollH-contentH)*(barHtweak);
	moveHandle();
	}
function onScroll_	(	event			){
	var											delta =								0
	if			(!	event			)						event = window.event		// IE
	if			(	event.wheelDelta){			delta =  	event.wheelDelta	/	120	// IE/Opera
		if		(window.opera		)			delta = -delta							//    Opera (9); delta differs in sign as compared to IE
	} else if	(	event.detail	)			delta = -	event.detail		/	1.5	// Mozilla; sign of delta is different than in IE. Also, delta is multiple of 3
	if			(delta				)onScroll(	delta)
	if (event.preventDefault)								event.preventDefault()
	event.returnValue = false
	}
if (window	.addEventListener)
	window	.addEventListener('DOMMouseScroll'		,onScroll_, false)	// DOMMouseScroll is for mozilla
window		.onmousewheel = document.onmousewheel	=onScroll_			// IE/Opera - Safari?

/*
function                            element_get(id){
                     if(document.getElementById)
                 return document.getElementById
                                            (id);
                else if(document.all)
                 return document.all        [id];}

function teaset (                   ){ if( element_get
       ('teabug'))                         element_get
       ('teabug').innerHTML='&nbsp;&nbsp;&nbsp;<a href="" onclick=teaset();>clear</a><br>';}
function teabugs(title   ,   message){
         teabug (title +':'+ message);
                      return message;}
function teabug (            message){ if(!element_get
       ('teabug'))     alert(message); if(!element_get
       ('teabug').innerHTML)
         teaset (                   );     element_get
       ('teabug').innerHTML+=message+'<br>\n';
                      return message;}*/
