
var dasWshEreignisObjekt;
var derWshScroller;

	/*
	 * Es gibt 2 verschiedene Funktionen zun Initialisieren des Scrollers. Die einfachste Variante heißt
	 * initialisiere_WSH_ScrollRegler_Version_1_2() und erzeugt ein rahmenloses Scrollfenster:
	 * 
	 * 		initialisiere_WSH_ScrollRegler_Version_1_2(	BehaelterID,
	 *													Breite,
	 *													Hoehe,
	 *													KnopfFarbe,
	 *													BahnFarbe,
	 *													AufGrafik,
	 *													AbGrafik,
	 *													PfeilBreite,
	 *													PfeilHoehe)
	 *	
	 * Die zweite Variante erzeugt ein gerahmtes Scrollfenster:
	 *	
	 *	
	 *		initialisiere_WSH_ScrollReglerMitRahmen_Version_1_2(	BehaelterID,
	 *																Breite,
	 *																Hoehe,
	 *																KnopfFarbe,
	 *																BahnFarbe,
	 *																Dicke,
	 *																RahmenFarbe,
	 *																AufGrafik,
	 *																AbGrafik,
	 *																PfeilBreite,
	 *																PfeilHoehe)
	 *	
	 *	
	 *	 Die Parameter der Funktionen sind die folgenden:
	 *	
	 * BehaelterID:		der Identifizierer des <DIV>-Tags, in dem Scrollfenster und Scrollleiste
	 *					zusammengefaßt sind. Achtung: er muß gegebenenfalls groß genug sein, um
	 *					den Außenrand mit aufzunehmen!
	 * Breite:			die sichtbare Breite des Scrollinhalts in Pixeln (eine Ganzzahl)
	 * Hoehe:			die sichtbare Höhe des Scrollinhalts in Pixeln
	 * KnopfFarbe:		die Farbe des Schiebers der Scrollleiste (z.B. "#FFFF88", "rgb(0,240,240)",
	 *					"red" oder sonst eine CSS-konforme Farbangabe)
	 * BahnFarbe:		die Farbe der Lauffläche des Schiebers der Scrollleiste
	 * Dicke:			die Dicke der Umrandung des Scrollinhalts in Pixeln
	 * RahmenFarbe:		die Farbe der Umrandung des Scrollinhalts
	 * AufGrafik:		die Grafikdatei für den oberen Scrollpfeil
	 * AbGrafik:		die Grafikdatei für den unteren Scrollpfeil	
	 * PfeilBreite:		die Breite der Pfeil-Grafiken in Pixeln
	 * PfeilHoehe:		die Höhe der Pfeil-Grafiken
	 *	
	 *	
	 *	
	 * Die als Parameter "KnopfFarbe" spezifizierte Farbe wird nur auf dem Reglerknopf wirksam;
	 * die beiden Pfeile in der Scrollleiste müssen durch entsprechende Grafiken in "AufGrafik" und
	 * "AbGrafik" farblich angepaßt werden.
	 *	
	 *	
	 *	
	 * Die beiden Funktionen können entweder true oder false zurückgeben. Wenn false zurückgegeben wird, ist ein
	 * Fehler aufgetreten, und der Scroller funktioniert nicht (was im allgemeinen darauf hinweist, daß der
	 * gegebene Browser für dynamisches HTML nicht geeignet ist; in diesem Falle sollte man nicht mit vermehrtem
	 * Javascript-Aufwand reagieren, sondern mit der Umleitung auf eine andere, statische HTML-Seite).
	 *	
	 * Eine der beiden Funktionen muß in einer "onload"-Funktion aufgerufen werden. Typisches Beispiel:
	 *	
	 *		function initialisiere() {
	 *			if (!initialisiere_WSH_ScrollRegler_Version_1_2("main_behaelter", 676, 536, ))
	 *						handleScrollerFehler();
	 *		}
	 *	
	 *	
	 *	
	 */
	
function initialisiere_WSH_ScrollRegler_Version_1_2(BehaelterID, Breite, Hoehe, KnopfFarbe, BahnFarbe,
																			AufGrafik, AbGrafik, PfeilBreite, PfeilHoehe) {
	if (!fnRegler_testeFunktion()) return false;
	var RahmenFarbe = (!(document.getElementById(BehaelterID).style.backgroundColor)) ?
												"#000000" : document.getElementById(BehaelterID).style.backgroundColor;
	dasWshEreignisObjekt = new WSH_Ereignis();
	derWshScroller = new WSH_ScrollRegler_Version_1_2(BehaelterID, Breite, Hoehe, KnopfFarbe, BahnFarbe, 0, RahmenFarbe,
																				AufGrafik, AbGrafik, PfeilBreite, PfeilHoehe);
	return true;
}

function initialisiere_WSH_ScrollReglerMitRahmen_Version_1_2(BehaelterID, Breite, Hoehe, KnopfFarbe, BahnFarbe, Dicke, RahmenFarbe,
																			AufGrafik, AbGrafik, PfeilBreite, PfeilHoehe) {
	if (!fnRegler_testeFunktion()) return false;
	dasWshEreignisObjekt = new WSH_Ereignis();
	derWshScroller = new WSH_ScrollRegler_Version_1_2(BehaelterID, Breite, Hoehe, KnopfFarbe, BahnFarbe, Dicke, RahmenFarbe,
																				AufGrafik, AbGrafik, PfeilBreite, PfeilHoehe);
	return true;
}

function WSH_ScrollRegler_Version_1_2(BehaelterID, Breite, Hoehe, KnopfFarbe, BahnFarbe, Dicke, RahmenFarbe,
																				AufGrafik, AbGrafik, PfeilBreite, PfeilHoehe) {
	this.pxText = "px";
	this.ReglerKnopfBreite = 12;
	this.AbstandZumFenster = 2;
	this.AbstandZumPfeil = 2;
	
	this.ReglerBreite = Math.max(PfeilBreite, this.ReglerKnopfBreite)
	this.PfeilGrafikBreite = PfeilBreite;
	this.PfeilGrafikHoehe = PfeilHoehe;
	this.BahnEinrueckung = Math.round((this.PfeilGrafikBreite - this.ReglerKnopfBreite) / 2);
	this.PfeilEinrueckung = 0;
	if (this.BahnEinrueckung < 0) {
		this.PfeilEinrueckung = -1 * this.BahnEinrueckung;
		this.BahnEinrueckung = 0;
	}
	this.PfeilObenGrafikDatei = AufGrafik;
	this.PfeilUntenGrafikDatei = AbGrafik;
	
	this.ScrollAussenID = "wsh_scroll_aussen";
	this.ScrollRahmenID = "wsh_scroll_rahmen";
	this.ScrollInhaltID = "wsh_scroll_inhalt";
	this.ReglerContainerID = "wsh_scroll_regler_container";
	this.SchieberID = "wsh_scroll_regler_schieber";
	this.KnopfID = "wsh_scroll_regler_knopf";
	this.BahnID = "wsh_scroll_regler_bahn";
	this.PfeilObenID = "wsh_scroll_regler_pfeil_oben";
	this.PfeilUntenID = "wsh_scroll_regler_pfeil_unten";
	this.ScrollRahmenDiv = document.getElementById(this.ScrollRahmenID);
	this.ScrollInhaltDiv = document.getElementById(this.ScrollInhaltID);
	this.KnopfDiv = document.getElementById(this.KnopfID);
	this.BahnDiv = document.getElementById(this.BahnID);
	this.PfeilObenDiv = document.getElementById(this.PfeilObenID);
	this.PfeilUntenDiv = document.getElementById(this.PfeilUntenID);
	
	this.initialisiere = fnReglerInit;
	this.initialisiere(BehaelterID, Breite, Hoehe, KnopfFarbe, BahnFarbe, Dicke, RahmenFarbe);
	
	this.ScrollRahmenHoehe = this.ScrollRahmenDiv.offsetHeight;
	this.ScrollInhaltHoehe = this.ScrollInhaltDiv.offsetHeight;
	
	this.MaxReglerHoehe = this.BahnDiv.offsetHeight;
	this.MinReglerHoehe = 5;
	this.ReglerHoehe =
		Math.min(Math.max((this.ScrollRahmenHoehe / this.ScrollInhaltHoehe) * this.MaxReglerHoehe, this.MinReglerHoehe), this.MaxReglerHoehe);
	if(this.ReglerHoehe == this.MaxReglerHoehe)	{
		document.getElementById(this.ReglerContainerID).style.visibility = 'hidden';
	}
	this.KnopfDiv.style.height = this.ReglerHoehe + this.pxText;
	this.MinTopIndex = 0 - this.BahnDiv.offsetHeight;
	this.MaxTopIndex = 0 - this.ReglerHoehe;
	this.WertNachTopFaktor = this.MinTopIndex - this.MaxTopIndex;
	this.TopNachWertFaktor = 1 / this.WertNachTopFaktor;
	this.ScrollTimer;
	this.SchnellScrollOffset = 8;
	this.ScrollTimerIntervall = 20;
	this.Steigung = this.ScrollRahmenHoehe - this.ScrollInhaltHoehe;
	
	this.draggen = this.drag_start = this.ScrollTimerAktiv = false;
	this.bearbeiteAenderung = fnReglerBearbeiteAenderung;
	this.handleMausEreignisDown = fnReglerMausEreignisDown;
	this.handleMausEreignisUp = fnReglerMausEreignisUp;
	this.handleMausEreignisOut = fnReglerMausEreignisOut;
	this.handleMausEreignisOver = fnReglerMausEreignisOver;
	this.handleMausEreignisMove = fnReglerMausEreignisMove;
	this.handleTastenEreignis = fnReglerTastenEreignis;
	this.RegelWert = this.AnfangsReglerWert = 1.0;
	this.SchiebeStartTop = this.AktuellTop = this.WertNachTopFaktor + this.MaxTopIndex;
	this.ScrollDivTop = this.ZielTop = this.CursorStartTop = this.MoveTopKoordinate = 0;

	this.KnopfDiv.style.top = this.AktuellTop + this.pxText;
}
	
function fnReglerInit(BehaelterID, Breite, Hoehe, KnopfFarbe, BahnFarbe, Dicke, RahmenFarbe) {
	
	var AussenBehaelter = document.getElementById(this.ScrollAussenID);
	
	AussenBehaelter.style.width = (Breite + 2 * Dicke) + this.pxText;
	AussenBehaelter.style.height = (Hoehe + 2 * Dicke) + this.pxText;
//	AussenBehaelter.style.backgroundColor = RahmenFarbe;
	AussenBehaelter.style.zIndex = 3;
	
	this.ScrollInhaltDiv.style.width = Breite + this.pxText;
	this.ScrollInhaltDiv.style.top = this.ScrollInhaltDiv.style.left = 0 + this.pxText;
	this.ScrollInhaltDiv.style.zIndex = 4;

	this.ScrollRahmenDiv.style.width = Breite + this.pxText;
	this.ScrollRahmenDiv.style.height = Hoehe + this.pxText;
	this.ScrollRahmenDiv.style.top = this.ScrollRahmenDiv.style.left = Dicke + this.pxText;
	this.ScrollRahmenDiv.style.zIndex = 3;
			
	var SchieberHoehe = Hoehe - 2 * (this.PfeilGrafikHoehe + this.AbstandZumPfeil);
	this.BahnDiv.style.width = this.ReglerKnopfBreite + this.pxText;
	this.BahnDiv.style.height = SchieberHoehe + this.pxText;
	this.BahnDiv.style.left = this.BahnDiv.style.top = 0 + this.pxText;
	this.BahnDiv.style.backgroundColor = BahnFarbe;
	this.BahnDiv.style.zIndex = 12;

	this.KnopfDiv.style.left = 0 + this.pxText;
	this.KnopfDiv.style.backgroundColor = KnopfFarbe;
	this.KnopfDiv.style.zIndex = 13;
	
	var ReglerBehaelter = document.getElementById(this.ReglerContainerID);
	ReglerBehaelter.style.width = this.ReglerBreite + this.pxText;
	ReglerBehaelter.style.height = Hoehe + this.pxText;
	var AussenBehaelterLeft = (!AussenBehaelter.style.left)? 0 : parseInt(AussenBehaelter.style.left);
//	ReglerBehaelter.style.left = (AussenBehaelterLeft + Breite + 2 * Dicke + this.AbstandZumFenster) + this.pxText;
//	ReglerBehaelter.style.top = ((Hoehe + Dicke) * -1) + this.pxText;
	ReglerBehaelter.style.zIndex = 10;
	
	this.PfeilObenDiv.style.width = this.PfeilUntenDiv.style.width = this.PfeilGrafikBreite + this.pxText;
	this.PfeilObenDiv.style.height = this.PfeilUntenDiv.style.height = this.PfeilGrafikHoehe + this.pxText;
	this.PfeilObenDiv.style.left = this.PfeilUntenDiv.style.left = this.PfeilEinrueckung + this.pxText;
	this.PfeilObenDiv.style.top = 0 + this.pxText;
//	this.PfeilObenDiv.style.cursor = this.PfeilUntenDiv.style.cursor = "pointer";
	this.PfeilObenDiv.style.zIndex = this.PfeilUntenDiv.style.zIndex = 13;
	this.PfeilObenDiv.style.backgroundImage = "url(" + this.PfeilObenGrafikDatei + ")";

	this.PfeilUntenDiv.style.top = (2 * this.AbstandZumPfeil) + this.pxText;
	this.PfeilUntenDiv.style.backgroundImage = "url(" + this.PfeilUntenGrafikDatei + ")";
	
	var SchieberBehaelter = document.getElementById(this.SchieberID);
	SchieberBehaelter.style.width = (/*2 * */this.ReglerKnopfBreite) + this.pxText;
	SchieberBehaelter.style.height = SchieberHoehe + this.pxText;
	SchieberBehaelter.style.left = this.BahnEinrueckung + this.pxText;
	SchieberBehaelter.style.top = this.AbstandZumPfeil + this.pxText;
	SchieberBehaelter.style.zIndex = 11;

	document.getElementById(BehaelterID).style.visibility = "visible";
}

function fnReglerBearbeiteAenderung() {
	this.ScrollDivTop = Math.round((this.AnfangsReglerWert - this.RegelWert) * this.Steigung);
	if(!isNaN(this.ScrollDivTop))
		this.ScrollInhaltDiv.style.top = this.ScrollDivTop + this.pxText;
}

function fnReglerMausEreignisDown(ereignis) {
	var idi = (ereignis.target) ? ereignis.target.id : ereignis.srcElement.id;	
	if (idi == this.KnopfID) {
		if (!this.draggen) {		// der Knopf wird aktiviert
			this.SchiebeStartTop = this.AktuellTop;
			if (dasWshEreignisObjekt.IstNetscapeKoordinatenModell) {
				this.CursorStartTop = ereignis.pageY;
			} else this.CursorStartTop = ereignis.clientY;
			this.draggen = true;
		} else {					// der Knopf wird deaktiviert
			this.draggen = false;
		}
	} else if (idi == this.BahnID) {
		var yWert = (ereignis.layerY) ? ereignis.layerY : ereignis.offsetY;	
		var SchieberTop = this.AktuellTop - this.MinTopIndex;
		var SchieberBottom = SchieberTop + this.ReglerHoehe;
		this.ZielTop = yWert + this.MinTopIndex;
		if (yWert > SchieberBottom) this.ZielTop -= this.ReglerHoehe;

		if (this.ScrollTimerAktiv) window.clearInterval(this.ScrollTimer);
		this.ScrollTimerAktiv = true;
		this.ScrollTimer = window.setInterval((this.AktuellTop > this.ZielTop) ? 
											"fnReglerScrolleSchnellOben()" : "fnReglerScrolleSchnellUnten()", this.ScrollTimerIntervall);
	} 
}
function fnReglerScrolleSchnellOben() {
	derWshScroller.AktuellTop -= derWshScroller.SchnellScrollOffset;
	if (derWshScroller.AktuellTop <= derWshScroller.ZielTop) {
		derWshScroller.AktuellTop = derWshScroller.ZielTop;
		if (derWshScroller.ScrollTimerAktiv) {
			window.clearInterval(derWshScroller.ScrollTimer);
			derWshScroller.ScrollTimerAktiv = false;
		}
	}
	derWshScroller.KnopfDiv.style.top = derWshScroller.AktuellTop + derWshScroller.pxText;
	derWshScroller.RegelWert = derWshScroller.TopNachWertFaktor * (derWshScroller.AktuellTop - derWshScroller.MaxTopIndex);
	derWshScroller.bearbeiteAenderung();
}
function fnReglerScrolleSchnellUnten() {
	derWshScroller.AktuellTop += derWshScroller.SchnellScrollOffset;
	if (derWshScroller.AktuellTop >= derWshScroller.ZielTop) {
		derWshScroller.AktuellTop = derWshScroller.ZielTop;
		if (derWshScroller.ScrollTimerAktiv) {
			window.clearInterval(derWshScroller.ScrollTimer);
			derWshScroller.ScrollTimerAktiv = false;
		}
	}
	derWshScroller.KnopfDiv.style.top = derWshScroller.AktuellTop + derWshScroller.pxText;
	derWshScroller.RegelWert = derWshScroller.TopNachWertFaktor * (derWshScroller.AktuellTop - derWshScroller.MaxTopIndex);
	derWshScroller.bearbeiteAenderung();
}

function fnReglerMausEreignisUp(ereignis) {
	if (this.draggen) {
		this.draggen = false;
	}
}

function fnReglerMausEreignisOut(ereignis) {
	if (this.ScrollTimerAktiv) {
		window.clearInterval(this.ScrollTimer);
		this.ScrollTimerAktiv = false;
	}
}
function fnReglerMausEreignisOver(idi) {
	if (this.ScrollTimerAktiv) window.clearInterval(this.ScrollTimer);
	this.ScrollTimerAktiv = true;
	this.ScrollTimer = window.setInterval((idi == this.PfeilObenID) ? "fnReglerScrolleOben()" : "fnReglerScrolleUnten()", this.ScrollTimerIntervall);
	
}
function fnReglerScrolleUnten() {
	derWshScroller.AktuellTop = Math.min(derWshScroller.AktuellTop + 1, derWshScroller.MaxTopIndex);
	derWshScroller.KnopfDiv.style.top = derWshScroller.AktuellTop + derWshScroller.pxText;
	derWshScroller.RegelWert = derWshScroller.TopNachWertFaktor * (derWshScroller.AktuellTop - derWshScroller.MaxTopIndex);
	derWshScroller.bearbeiteAenderung();
}
function fnReglerScrolleOben() {
	derWshScroller.AktuellTop = Math.max(derWshScroller.AktuellTop - 1, derWshScroller.MinTopIndex);
	derWshScroller.KnopfDiv.style.top = derWshScroller.AktuellTop + derWshScroller.pxText;
	derWshScroller.RegelWert = derWshScroller.TopNachWertFaktor * (derWshScroller.AktuellTop - derWshScroller.MaxTopIndex);
	derWshScroller.bearbeiteAenderung();
}
function fnReglerMausEreignisMove(ereignis) {
		if (dasWshEreignisObjekt.IstNetscapeKoordinatenModell) {
			this.MoveTopKoordinate = ereignis.pageY;
		} else this.MoveTopKoordinate = ereignis.clientY;
	if (this.draggen) {
		if (this.drag_start) {
			this.CursorStartTop = this.MoveTopKoordinate;
			this.SchiebeStartTop = this.AktuellTop;
			this.drag_start = false;
			return;
		}
		this.AktuellTop =
			Math.max(Math.min(this.MoveTopKoordinate - this.CursorStartTop + this.SchiebeStartTop, this.MaxTopIndex),
									this.MinTopIndex);
		this.KnopfDiv.style.top = this.AktuellTop + this.pxText;
		this.RegelWert = this.TopNachWertFaktor * (this.AktuellTop - this.MaxTopIndex);
		this.bearbeiteAenderung();
	}
}


								// wird nur dann aufgerufen, wenn das Reglerknopf-Element die Quelle des Ereignisses ist
function aufMausDownScrolWSH(ereignis) {
	dasWshEreignisObjekt.fnWSH_EreignisMausDown();		// dies bewirkt überhaupt nur beim Microsoft-Eventmodell etwas
}
function aufMausUpScrolWSH(ereignis) {
	dasWshEreignisObjekt.fnWSH_EreignisMausUp();		// dies bewirkt überhaupt nur beim Microsoft-Eventmodell etwas
}
function aufMausOutScrolWSH(ereignis) {
	dasWshEreignisObjekt.fnWSH_EreignisMausOut();		// dies bewirkt überhaupt nur beim Microsoft-Eventmodell etwas
}

function aufMausOverScrolWSH(ereignis) {
	if (dasWshEreignisObjekt) dasWshEreignisObjekt.fnWSH_EreignisMausOver();		// dies bewirkt überhaupt nur beim Microsoft-Eventmodell etwas.
																			// Die Absicherung per "if (dasWshEreignisObjekt)" ist unabdingbar nötig, wenn
																			// der Eventhandler im <body>-Tag steht, kann aber auch sonst nicht schaden.
}
function aufMausMoveScrolWSH(ereignis) {
	if (dasWshEreignisObjekt) dasWshEreignisObjekt.fnWSH_EreignisMausMove();		// dies bewirkt überhaupt nur beim Microsoft-Eventmodell etwas
}
function aufTasteScrolWSH() {
	dasWshEreignisObjekt.fnWSH_EreignisTaste();		// dies bewirkt überhaupt nur beim Microsoft-Eventmodell etwas
}

function fnWSH_DownEreignisMausModellMSIE() {
	derWshScroller.handleMausEreignisDown(window.event);
}
function fnWSH_UpEreignisMausModellMSIE() {
	derWshScroller.handleMausEreignisUp(window.event);
}
function fnWSH_OutEreignisMausModellMSIE() {
	derWshScroller.handleMausEreignisOut(window.event);
}
function fnWSH_OverEreignisMausModellMSIE() {
	if (window.event.srcElement.id == derWshScroller.PfeilObenID || window.event.srcElement.id == derWshScroller.PfeilUntenID)
																derWshScroller.handleMausEreignisOver(window.event.srcElement.id);
}
function fnWSH_MoveEreignisMausModellMSIE() {
	derWshScroller.handleMausEreignisMove(window.event);
}
function fnWSH_TastenEreignisModellMSIE() {
	derWshScroller.handleTastenEreignis(window.event);
}
			// beim Netscape-Ereignismodell muß das Quellelement bestimmt werden, um die weitere Behandlung festzulegen
function fnWSH_DownEreignisMausModellNS(ereignis) {
	if (ereignis.target.id == derWshScroller.KnopfID || ereignis.target.id == derWshScroller.BahnID)
																			derWshScroller.handleMausEreignisDown(ereignis);
}
function fnWSH_UpEreignisMausModellNS(ereignis) {
	derWshScroller.handleMausEreignisUp(ereignis);
}
function fnWSH_OutEreignisMausModellNS(ereignis) {
	if (ereignis.target.id == derWshScroller.PfeilObenID || ereignis.target.id == derWshScroller.PfeilUntenID)
																		derWshScroller.handleMausEreignisOut(ereignis);
}
function fnWSH_OverEreignisMausModellNS(ereignis) {
	if (ereignis.target.id == derWshScroller.PfeilObenID || ereignis.target.id == derWshScroller.PfeilUntenID)
															derWshScroller.handleMausEreignisOver(ereignis.target.id);
}
function fnWSH_MoveEreignisMausModellNS(ereignis) {
	derWshScroller.handleMausEreignisMove(ereignis);
}
function fnWSH_TastenEreignisModellNS(ereignis) {
	derWshScroller.handleTastenEreignis(ereignis);
}
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Material zur adäquaten Ereignisbehandlung
function WSH_Ereignis() {
	this.IstMicrosoftKoordinatenModell = this.IstNetscapeKoordinatenModell = false;
	if (window.event) {
				// Microsoft-Modell (IE und OP)
		this.fnWSH_EreignisMausDown = fnWSH_DownEreignisMausModellMSIE;
		this.fnWSH_EreignisMausOver = fnWSH_OverEreignisMausModellMSIE;
		this.fnWSH_EreignisMausUp = fnWSH_UpEreignisMausModellMSIE;
		this.fnWSH_EreignisMausOut = fnWSH_OutEreignisMausModellMSIE;
		this.fnWSH_EreignisMausMove = fnWSH_MoveEreignisMausModellMSIE;
		this.fnWSH_EreignisTaste = fnWSH_TastenEreignisModellMSIE;
		if (window.opera) {
			this.Modell = "O"; 
			this.IstNetscapeKoordinatenModell = true;
		} else {
			this.Modell = "M";
			this.IstMicrosoftKoordinatenModell = true;
		}
		return;
	}
	document.onkeydown = dummy;
	if (document.onkeydown === undefined) {
				// Konqueror-Modell
		this.Modell = "K";
	} else {
				// NS-Modell
		this.Modell = "N";
		this.IstNetscapeKoordinatenModell = true;
	}
	this.fnWSH_EreignisMausMove = this.fnWSH_EreignisMausDown = this.fnWSH_EreignisMausOut = this.fnWSH_EreignisMausOver = 
					this.fnWSH_EreignisMausUp = this.fnWSH_EreignisTaste = document.onkeyup = dummy;
	document.onmousedown = fnWSH_DownEreignisMausModellNS;
	document.onmouseover = fnWSH_OverEreignisMausModellNS;
	document.onmouseup = fnWSH_UpEreignisMausModellNS;
	document.onmouseout = fnWSH_OutEreignisMausModellNS;
	document.onmousemove = fnWSH_MoveEreignisMausModellNS;
	document.onkeydown = fnWSH_TastenEreignisModellNS;
	return;
}
function dummy() {
	return false;
}
function fnReglerTastenEreignis(ereignis) {
	if (dasWshEreignisObjekt.Modell == "K") return;	// Konqueror fängt keine Tastaturereignisse
	var Offset = 1;
	var index;
	if (ereignis.ctrlKey==true) Offset *= 4;
	switch (ereignis.keyCode) {
		case 59:
		case 107:
		case 109:
		case 186:
		case 187:
		case 189:
		case 222:
					if (ereignis.altKey==true) Offset *= 4;
					switch (ereignis.keyCode) {
						case 222:						// ä-Taste
						case 107:						// -Taste
						case 189:	this.AktuellTop = Math.min(this.AktuellTop + Offset, this.MaxTopIndex);
									break;

						case 59:						// ü-Taste im Mozilla
						case 186:						// ü-Taste
						case 109:						// +Taste
						case 187:	this.AktuellTop = Math.max(this.AktuellTop - Offset, this.MinTopIndex);
									break;
					}
					this.KnopfDiv.style.top = this.AktuellTop + this.pxText;
					this.RegelWert = this.TopNachWertFaktor * (this.AktuellTop - this.MaxTopIndex);
					this.bearbeiteAenderung();
					break;
					
					
		default:	return;
	}
}	
function fnRegler_testeFunktion() {
	if (!document.getElementById) return false;		// kleiner Test auf Uraltbrowser (Netscape 4.7 !)
	if (window.opera) {
		if (!document.getElementsByTagName("body")[0].getAttributeNS) return false;	// Test auf veraltete Operas
	}
	return true;
}

//added by gecko 12.09.06
function fnReglerScrollWheelUnten() {
	derWshScroller.AktuellTop = Math.min(derWshScroller.AktuellTop + 5, derWshScroller.MaxTopIndex);
	derWshScroller.KnopfDiv.style.top = derWshScroller.AktuellTop + derWshScroller.pxText;
	derWshScroller.RegelWert = derWshScroller.TopNachWertFaktor * (derWshScroller.AktuellTop - derWshScroller.MaxTopIndex);
	derWshScroller.bearbeiteAenderung();
}
function fnReglerScrollWheelOben() {
	derWshScroller.AktuellTop = Math.max(derWshScroller.AktuellTop - 5, derWshScroller.MinTopIndex);
	derWshScroller.KnopfDiv.style.top = derWshScroller.AktuellTop + derWshScroller.pxText;
	derWshScroller.RegelWert = derWshScroller.TopNachWertFaktor * (derWshScroller.AktuellTop - derWshScroller.MaxTopIndex);
	derWshScroller.bearbeiteAenderung();
}

function wheel(event){
	var delta = 0;
	if (!event) event = window.event;
	if (event.wheelDelta) {
		delta = event.wheelDelta;
		if (window.opera) delta = -delta;
	} else if (event.detail) {
		delta = -event.detail;
	}
	if (delta>0) {
		fnReglerScrollWheelOben();
	} else if(delta<0) {
		fnReglerScrollWheelUnten();
	}
}
// end added by gecko

