// JavaScript Document

function initScrollbar(scrStg, scrObj, track, handle) {
	
	setHandleHeight(scrObj, track, handle);
	
	/** Vertical slider control */
	var slider = new Control.Slider(handle, track, {
		axis: 'vertical',
		onSlide: function(v) { scrollVertical(v, $(scrStg), slider);  },
		onChange: function(v) { scrollVertical(v, $(scrStg), slider); }
	});
	
	/** Disable vertical scrolling if text doesn't overflow the div */
	if ($(scrStg).scrollHeight <= $(scrStg).offsetHeight) {
		slider.setDisabled();
		$(handle).hide();
	} else {
		slider.setEnabled();
		$(handle).show();
	}
//	alert($(scrStg).scrollHeight+'<=>'+$(scrStg).offsetHeight);
	
	scrollVertical(0, $(scrStg), slider);
		
	return slider;
}

/** Scroll the element vertically based on its width and the slider maximum value */
function scrollVertical(value, element, slider) {
	element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight));
//	alert(value+'/'+element+'/'+slider+'/'+element.scrollTop);
}

/** Set handle into an proportionally relation to the scrollable text */
function setHandleHeight(scrObj, track, handle) {
	var scrObjHeight = $(scrObj).offsetHeight;
	var trackHeight  = $(track).offsetHeight;
	var handleHeight = Math.round(trackHeight * (trackHeight / scrObjHeight));
	if(handleHeight > trackHeight) handleHeight = trackHeight;
	$(handle).style.height = handleHeight+'px';
}

function handleDelta(delta) {
	slider.setValueBy(-delta);
}

/** Event handler for mouse wheel event. */
function wheel(event){
//	alert('wheel');
	var delta = 0;
	if (!event) /* For IE. */
		event = window.event;
	if (event.wheelDelta) { /* IE/Opera. */
		delta = event.wheelDelta/1200;
		if (window.opera)
			delta = -delta;
	} else if (event.detail) { /** Mozilla case. */
		delta = -event.detail/60;
	}

	if (delta) {
		handleDelta(delta);
	}

	if (event.preventDefault)
		event.preventDefault();
	
	event.returnValue = false;
}


