function captureEvent(eventObj, eventName, eventHandler) {
	if (eventObj.addEventListener) {
		eventObj.addEventListener(eventName, eventHandler, true);
	} else {
		eventObj.attachEvent("on" + eventName, eventHandler);
	}
}		

var scrollNeed = false;

var ScrollBars = {
	isScrollBarDragging: false,
	
	attach: function(element) {
		element.className += " scroll-box";
			
		var mask = $("scroll-mask");
		mask.style.overflow = "hidden";
		
		var scrollBar = $("scrollbar-template");
					
		scrollBar.style.height = element.offsetHeight - 2 + "px";
		scrollBar.style.top = element.offsetTop + 1 + "px";
		scrollBar.style.left = (element.offsetLeft + element.offsetWidth - scrollBar.offsetWidth) - 1 + "px";
		
		var scrollBarElements = scrollBar.getElementsByTagName("div");
		var scrollUpBtn = scrollBarElements[0];
		var scrollDownBtn = scrollBarElements[2];
		var scrollHandle = scrollBarElements[1];
		
		scrollHandle.onmouseover = function() {
			this.style.borderColor='#e1261d';
		}
		
		scrollHandle.onmouseout = function() {
			if (!isDragging) {
				this.style.borderColor='#666666';
			}
		}
				
		mask.innerHTML = "<div class=\"scroll-container\">" + mask.innerHTML + "</div>";
		
		var scrollElement = mask.firstChild;
		
		/* scrollNeed */
		if (scrollElement.offsetHeight < 307)
			scrollNeed = false;
		else
			scrollNeed = true;
		
		if (!scrollNeed){
			scrollBar.style.display = "none";
		}
		else{
			scrollBar.style.display = "block";
		}		
		
		
		var isDragging = false;
		var offsetY = 0;
		
		var scrollArea = scrollBar.offsetHeight - scrollUpBtn.offsetHeight - scrollDownBtn.offsetHeight - scrollHandle.offsetHeight;
		var scrollPos = 0;
		
		scrollHandle.onmousedown = function(e) {
			if (!e) {
				var e = window.event;
			}
			
			offsetY = (e.pageY ? e.pageY : e.clientY) - scrollHandle.offsetTop;
			
			isDragging = true;
			ScrollBars.isScrollBarDragging = true;
		}

		var isScrollingUp = false;
		var isScrollingDown = false;
		var scrollTimer = null;

		captureEvent(document, "mouseup", function() {
			if (isDragging) {
				isDragging = false;
				scrollHandle.onmouseout();
			}
												   
			ScrollBars.isScrollBarDragging = false;
			window.clearInterval(scrollTimer);
			isScrollingUp = false;
			isScrollingDown = false;
			scrollTimer = null;
		});
		
		function performScroll() {
			if (isScrollingUp) {
				scrollPos += 5;
			} else if (isScrollingDown) {
				scrollPos -= 5;
			}
			
			if (isScrollingUp && scrollPos > 0) {
				scrollPos = 0;
			} else if (isScrollingDown && scrollPos < -(scrollElement.offsetHeight - mask.offsetHeight)) {
				scrollPos = -(scrollElement.offsetHeight - mask.offsetHeight + 10);
			}
			
			handleY = -(scrollPos / (scrollElement.offsetHeight - mask.offsetHeight + 10)) * scrollArea + scrollUpBtn.offsetHeight;
			scrollHandle.style.top = handleY + "px";	
			scrollElement.style.top = scrollPos + "px";	
		}
		
		scrollUpBtn.onmousedown = function() {
			isScrollingUp = true;
			if (scrollTimer == null) {
				scrollTimer = window.setInterval(performScroll, 10);
			}
		}

		scrollDownBtn.onmousedown = function() {
			isScrollingDown = true;
			if (scrollTimer == null) {
				scrollTimer = window.setInterval(performScroll, 10);
			}			
		}

		captureEvent(document, "mousemove", function(e) {
			if (!isDragging) {
				return;
			}
			
			if (!e) {
				var e = window.event;
			}
			
			var mouseY = e.pageY ? e.pageY : e.clientY;	
			var handleY = mouseY - offsetY; 
			
			if (handleY < scrollUpBtn.offsetHeight) {
				handleY = scrollUpBtn.offsetHeight;
			} else if (handleY + scrollHandle.offsetHeight > scrollDownBtn.offsetTop) {
				handleY = scrollDownBtn.offsetTop - scrollHandle.offsetHeight; 
			}
			
			scrollHandle.style.top = handleY + "px";	
			
			scrollPos = -(((handleY - scrollUpBtn.offsetHeight) / scrollArea) * (scrollElement.offsetHeight - mask.offsetHeight + 10));
			
			scrollElement.style.top = scrollPos + "px";			
		});
	
<!--- Mausrad --->
		
	function handle(delta) {
			scrollPos += delta * 10;
			
			if (delta > 0 && scrollPos > 0) {
				scrollPos = 0;
			} else if (delta < 0 && scrollPos < -(scrollElement.offsetHeight - mask.offsetHeight)) {
				scrollPos = -(scrollElement.offsetHeight - mask.offsetHeight + 10);
			}
			handleY = -(scrollPos / (scrollElement.offsetHeight - mask.offsetHeight + 10)) * scrollArea + scrollUpBtn.offsetHeight;
			scrollHandle.style.top = handleY + "px";	
			scrollElement.style.top = scrollPos + "px";
	}
	
	
	function wheel(event){
		var delta = 0;
				
		if (!event) event = window.event;
		
		if (event.wheelDelta) {
			delta = event.wheelDelta/120; 
			if (window.opera) delta = -delta;
		} else if (event.detail) {
			delta = -event.detail/3;
		}
		if (delta)
			if(scrollNeed){
				handle(delta);
			}
			if (event.preventDefault)
				event.preventDefault();
			event.returnValue = false;
	}
	
	/* Initialization code. */
	if (window.addEventListener)
		window.addEventListener('DOMMouseScroll', wheel, false);
	window.onmousewheel = document.onmousewheel = wheel;	

<!--- Mausrad Ende --->

	}
	
	
};		

function $(id) {
	return document.getElementById(id);
}

document.onselectstart = function() {
	return !ScrollBars.isScrollBarDragging;
}
