var ScrollObject;
var ScrollBar;
var ScrollTrack;
var SizeMode;
var IsScrolling;
var DragStartY;

// Initialisiert die Scrollleiste!
function InitScroll(obj, BarClass, TrackClass, sizing) {
	//obj = ID des DIVs welches zu scrollen ist
	//BarClass = CSS Klasse der Scrollbar
	//TrackClass = CSS Klasse der Scrollbar "Schiene"
	//sizing = Art wie die Scrollbar in der größe angepasst werden soll:
	//						0: Hat eine konstante größe
	//						1: Relative größe (standard Windows Verhalten)
	
	IsScrolling = false;
	ScrollObject = document.getElementById(obj);
	SizeMode = sizing;
	
	ScrollTrack = document.createElement("div");
	document.getElementsByTagName("body")[0].appendChild(ScrollTrack);
	if(navigator.appName == "Microsoft Internet Explorer") ScrollBar = document.createElement("img");
	else ScrollBar = document.createElement("div");
	ScrollTrack.appendChild(ScrollBar);
	
	ScrollTrack.className = TrackClass;
	ScrollBar.className = BarClass;
	
	ScrollObject.style.overflow = "hidden";
	ScrollObject.scrollTop = 0;
	
	ScrollTrack.style.overflow = "hidden";
	ScrollTrack.style.visibility = "visible";
	ScrollTrack.style.position = "absolute";
	ScrollTrack.style.left = (ScrollObject.offsetLeft+ScrollObject.offsetWidth)+"px";
	ScrollTrack.style.top = ScrollObject.offsetTop+"px";
	
	ScrollBar.style.position = "relative";
	ScrollBar.style.minHeight = "20px";
	ScrollBar.style.width = (ScrollTrack.offsetWidth-2)+"px";
	ScrollBar.style.zIndex = "999";
	ScrollBar.style.cursor = "arrow";
	ScrollBar.style.backgroundImage = "url(bilder/blank.gif)";
	
	CalcSize();
	
		
	document.onmousemove = Drag;
	document.onmouseup = DragStop;
	ScrollBar.onmousedown = DragStart;
	window.onresize = CalcSize;
	if (window.addEventListener) window.addEventListener('DOMMouseScroll', wheel, false);
	document.onmousewheel = wheel;
}

function CalcSize() {
	
	ScrollTrack.style.height = ScrollObject.offsetHeight+"px";
	
	//ScrollObject.offsetHeight --> Höhe des angezeigten Bereichs
	//ScrollObject.scrollHeight --> Gesamter Bereich des Divs
	
	if(SizeMode) {
			ScrollBar.style.height = (ScrollObject.offsetHeight*ScrollTrack.offsetHeight)/ScrollObject.scrollHeight;
	}

	//alert(ScrollObject.scrollHeight+" "+ScrollObject.offsetHeight);
	ScrollBar.style.top = "0px";//(ScrollObject.scrollTop*(ScrollTrack.offsetHeight-ScrollBar.offsetHeight))/(ScrollObject.scrollHeight-ScrollObject.offsetHeight);
	ScrollObject.scrollTop = (ScrollBar.offsetTop * (ScrollObject.scrollHeight-ScrollObject.offsetHeight))/(ScrollTrack.offsetHeight - ScrollBar.offsetHeight);
	
	if(ScrollObject.scrollHeight <= ScrollObject.offsetHeight) {
		ScrollTrack.style.visibility = "hidden";
		//alert("1");
	} else {
		ScrollTrack.style.visibility = "visible";
	}
	
}


function DragStart(event) {
	IsScrolling = true;
	DragStartY = ((document.all ? window.event.clientY : event.pageY)-ScrollBar.offsetTop);
	ScrollTrack.style.zIndex = "999";
}

function DragStop() {
	IsScrolling = false;
	ScrollBar.style.zIndex = "0";
}

function Drag(event) {
	if(IsScrolling) {
		var NewPos;
		deltaY = document.all ? window.event.clientY : event.pageY;
		
		NewPos = parseInt(deltaY-DragStartY);
		
		if(NewPos + ScrollBar.offsetHeight > ScrollTrack.offsetHeight) NewPos = parseInt(ScrollTrack.offsetHeight - ScrollBar.offsetHeight);
		else if(NewPos < 0) NewPos = 0;
		
		
		ScrollObject.scrollTop = (ScrollBar.offsetTop * (ScrollObject.scrollHeight-ScrollObject.offsetHeight))/(ScrollTrack.offsetHeight - ScrollBar.offsetHeight);
	
		ScrollBar.style.top = parseInt(NewPos)+"px";
		
		//document.getElementById("info").innerHTML = ScrollObject.scrollTop +" "+deltaY +" "+DragStartY+" "+NewPos+" "+ScrollBar.offsetHeight+" "+ScrollTrack.offsetHeight+" "+ScrollTrack.offsetHeight+" "+ScrollObject.offsetHeight;
	}
	
	
}

function wheel(event) {

	var delta = 0;
	var sdr = ScrollObject.offsetHeight * 0.15;
	//alert(sdr);
	//alert(sdr);

	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;
	}
	
	var NewPos;
	var altPos = ScrollBar.offsetHeight;
	if (delta) {
		
		if (delta < 0) {
			NewPos = parseInt(ScrollBar.offsetTop + sdr);
		} else {
			NewPos = parseInt(ScrollBar.offsetTop - sdr);
		}
		
		//document.getElementById("info").innerHTML = delta+" "+NewPos+" "+altPos+" "+sdr;
		
		if(NewPos + ScrollBar.offsetHeight > ScrollTrack.offsetHeight) NewPos = parseInt(ScrollTrack.offsetHeight - ScrollBar.offsetHeight);
		else if(NewPos < 0) NewPos = 0;
		
		ScrollBar.style.top = parseInt(NewPos)+"px";
		ScrollObject.scrollTop = (ScrollBar.offsetTop * (ScrollObject.scrollHeight-ScrollObject.offsetHeight))/(ScrollTrack.offsetHeight - ScrollBar.offsetHeight);
	
		
	}
}