// mouse wheel code from http://adomas.org/javascript-mouse-wheel/
document.write('<script type="text/javascript" src="js/scriptaculous/prototype.js"></script>'); 
document.write('<script src="js/scriptaculous/scriptaculous.js?load=effects,slider" type="text/javascript"></script>'); 

function divScroll( scrollarea, handle, track, fondo ) {
	this.scrollarea = $(scrollarea);
	this.slider = new Control.Slider(handle, track, {
			axis: 'vertical',
			range: $R(0,20),
			onSlide: function(v, slider ) { 
				scrollVertical( v, $(scrollarea), slider );
			},
			onChange: function(v, slider ) { 
				scrollVertical( v, $(scrollarea), slider );
			}
		}
	);

	this.scrollarea.slider = this.slider;
	this.scrollarea.handle = function (delta) {
		this.slider.setValueBy(-delta);
	}

	// mozilla
	this.observe('DOMMouseScroll', wheel);
	this.observe('mousewheel', wheel);

	if( this.scrollarea.scrollHeight <= this.scrollarea.getHeight() ) {
		$(track).hide();
		$(fondo).hide();
	}
}

divScroll.prototype.observe = function(element, eventName, handler) {
	this.scrollarea.observe(element, eventName, handler);
}

/** Event handler for mouse wheel event. */
function wheel(event){
	delta = 0;
	if (!event) /* For IE. */
		event = window.event;
	if (event.wheelDelta) { /* IE/Opera. */
		delta = event.wheelDelta/120;
	} else if (event.detail) { /** Mozilla case. */
		/** In Mozilla, sign of delta is different than in IE.
		* Also, delta is multiple of 3.
		*/
		delta = -event.detail/3;
	}

	/** If delta is nonzero, handle it.
	* Basically, delta is now positive if wheel was scrolled up,
	* and negative, if wheel was scrolled down.
	*/
	if (delta) this.handle(delta);

	/** Prevent default actions caused by mouse wheel.
	* That might be ugly, but we handle scrolls somehow
	* anyway, so don't bother here..
	*/
	if (event.preventDefault)
		event.preventDefault();
	
	event.returnValue = false;
}


// 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));
}
