//alert(screen.width + "x" + screen.height);

var screenWidth = screen.width;
var screenHeight = screen.height;
var proportion = screenWidth/screenHeight;
//alert(proportion);
if(proportion > 1.4) var screenType = "widescreen";



// Werte werden initialisiert
yMouse = 0;
indiinit = 1;
temp = true;
MS = true;

// Browserunterscheidung
var isIE = document.all;
var isNav = document.layers;
var isDOM = document.getElementsByTagName&&!document.all;

<!-- menu -->

// Die Menü ID
id = 'FolgeDerMaus';
// Die ID des geöffneten Menüs (Flash)
idM = 'MenuOpen';
// Die obere Begrenzung in Pixel für das Menü
divTop = 10;
// Der Dämpffaktor für die Mausverfolgung
f = 12;
// Die Zeit in Sekunden bevor das Menü in die Eigenbewegung übergeht
seconds = 2;
// Die Geschwindigkeit der Eigenbewegung
indispeed = 1;



NEWlayerpro = document.getElementById("MenuOpen");
laufzeit=0
links = - 964;
/* einfaden */
function moveVor(){
	while (laufzeit == 0){
		NEWlayerpro = document.getElementById("MenuOpen");
   		NEWlayerpro.style.left=parseInt(NEWlayerpro.style.left)+35+"px"
   		y = setTimeout("moveVor()",1)
		if(parseInt(NEWlayerpro.style.left)>=0){
	 		window.clearTimeout(y);
			NEWlayerpro.style.left=0+"px";
   	 		links = 0;
   		}
   		break;
	}
}


/* ausfaden */
function moveBack() {
	while (laufzeit == 0){
		NEWlayerpro = document.getElementById("MenuOpen");
   		NEWlayerpro.style.left=parseInt(NEWlayerpro.style.left)-35+"px";
   		y = setTimeout("moveBack()",1)
   		if(parseInt(NEWlayerpro.style.left)<=-964){
	 		window.clearTimeout(y);
	 		NEWlayerpro.style.left=-964+"px";
	 		links = links - 964;
			NEWlayerpro.visibility = "hidden";
		}
		
   		break;
	}
}

function init() {
	// Abkuerzungen fuer die versch. Referenzpfade
	menuref = isIE ? document.all[id] : isDOM ? document.getElementById(id) : isNav ? document[id] : "";
	menustyle = (isIE || isDOM) ? menuref.style : isNav ? menuref : "";
	menurefM = isIE ? document.all[idM] : isDOM ? document.getElementById(idM) : isNav ? document[idM] : "";
	menustyleM = (isIE || isDOM) ? menurefM.style : isNav ? menurefM : "";
	// Funktion loop() oder menuFixed() wird gestartet
	if(redir == 0) {
		loop();menustyle.visibility = "visible";
	} else if(redir == 1) {
		    menustyleM.left=0+"px";
			menuFixed();
	}
}



// yMausposition wird ermittelt
function mouseposition(e,mopen) {
	menuref = isIE ? document.all[id] : isDOM ? document.getElementById(id) : isNav ? document[id] : "";
	// Abkürzung für den Mausreferenzpfad
	var eventy = isIE ? window.event.clientY : (isDOM || isNav) ? e.pageY : "";	
	
	// yMausposition wird in der globalen Variablen yMouse gespeichert
	yMouse = eventy - (menuref.offsetHeight / 2);
}
// Die Funktion mouseposition() wird bei jedem Mauseover-Event ausgeführt
if(document.captureEvents){ document.captureEvents(Event.MOUSEMOVE); }
//alert(open);
if(open!=1)document.onmousemove = mouseposition;
//document.onmousemove = mouseposition;



// Die Funktion loop() : Das Menü wird in der y-Achse verschoben
function loop() {
	
	// Die alte y-Position des Menüs wird ermittelt
	yOldPosition = menuref.offsetTop;
	
	// Die Differenz der y-Position des Menüs zur derzeitigen y-Postion der Maus wird ermittelt
	if(yOldPosition >= yMouse) {var yDifference = yOldPosition - yMouse;}
	else if(yOldPosition < yMouse) {var yDifference = yMouse - yOldPosition;}
	
	// Die Geschwindigkeit der Bewegung wird duch einen Dämpffaktor f ermittelt
	var ySpeed = yDifference / f;
	
	// Die neue y-Position des Menüs wird ermittelt
	if(yOldPosition >= yMouse) {var yNewPosition = Math.round(yOldPosition - ySpeed);}
	else if(yOldPosition < yMouse) {var yNewPosition = Math.round(yOldPosition + ySpeed);}
	//alert("maus="+yMouse+"; menu="+yOldPosition+"; difference="+yDifference+"; newPosition="+yNewPosition);
	
	// Falls die neue y-Position des Menüs oberhalb des divTop Wertes liegt wird diese korrigiert
	if(yOldPosition <= divTop && yMouse < menuref.offsetHeight / 2) {yNewPosition = divTop;}
	
	// Das Menü wird auf die neue y-Position verschoben
	menustyle.top = yNewPosition+'px';
	
	// Die y-Position des Menüs wird in der globalen Variablen yMenu gespeichert
	yMenu = yNewPosition;
	
	// Der nächste Durchlauf der Funktion loop() wird gestartet
	loopID = setTimeout("loop()", 20);
	
	// Falls die Maus die Angegebene Zeit nicht bewegt wurde wird die Eigenbewegung (=Funktion: indiDiv()) aktiviert
	if(yOldPosition == yNewPosition && indiinit == 1) {
		yMouseTemp = yMouse;
		var milliseconds = 1000*seconds;
		indiID = setTimeout("indiDiv()", milliseconds);
		indiinit = 2;
	}
	if(yOldPosition != yNewPosition && indiinit == 2) {
		clearTimeout(indiID);
		indiinit = 1;
	}
}

// Die Funnktion für die Eigenbewegung
function indiDiv() {
	// Die Funktion loop() wird während der Eigenbewegung deaktiviert
	clearTimeout(loopID);
	// Die alte y-Position des Menüs wird ermittelt
	yOldPosition = menuref.offsetTop;
	
	// Die neue y-Postition des Menüs wird ermittelt
	if(temp) {
		var yNewPosition = yOldPosition + indispeed;
		if(yOldPosition >= document.body.clientHeight - (menuref.offsetHeight+1)) {temp = false;}
	} else if(!temp) {
		var yNewPosition = yOldPosition - indispeed;
		if(yOldPosition <= divTop) {temp = true;}
	}
	
	// Das Menü wird auf die neue y-Position verschoben
	menustyle.top = yNewPosition+'px';
	
	yMenu = yNewPosition;
	
	// Der nächste Durchlauf der Funktion indiDiv() wird gestartet
	indiID = setTimeout("indiDiv()", 20);
	
	// Falls die Maus wieder bewegt worden ist wird die Funktion indiDiv() deaktiviert und die Funktion loop() wieder gestartet
	if(yMouseTemp != yMouse) {
		clearTimeout(indiID);
		loopID = setTimeout("loop()", 20);
	}
}

// Die Funktion für das geöffnete Menü (Flash)
function menuClick() {
	// Die Funktion loop() wird deaktiviert
	clearTimeout(loopID);
	// Das alte Menü wird ausgeblendet
	menustyle.visibility = "hidden";
	
	// Das neue Menü wird positioniert
	menustyleM.top = menuref.offsetTop+"px";
	
	// Das neue Menü wird eingeblendet
	menustyleM.visibility = "visible";
	// Die Funktion mDiv() wird gestartet
	
	// WICHTIG: ###############################################################################################
	// die MouseTemp Variable muss vor dem öffnen des Menüs auf die aktuelle Y-Mausposition aktuallisiert werden
	MouseTemp = yMouse;
	
	mDiv(yMouse);
}

// Die Funktion für das bereits geöffnete Menü auf Projektseiten (Flash)
function menuFixed(url) {
	// Das alte Menü wird ausgeblendet
	menustyle.visibility = "hidden";

	
	// Das neue Menü wird eingeblendet
	menustyleM.visibility = "visible";
	
	// Browserunterschied wird korrigiert
	if(!isIE) {b=7;} else {b=0;}
	// Falls eine URL vom Flashfile übergeben wurde diese mit location aufrufen
	if(url) {
		if(redir == 0) {clearTimeout(mDivID);}
		if(menurefM.offsetTop < (document.body.clientHeight-(menurefM.offsetHeight-b))) {
			menuMoveDown(url);
		} else {
			change(url);
		}
	} else {
		// Das neue Menü wird positioniert
		
		if(screen.height <= 800)
		menustyleM.top = (0)+"px";
		else
		menustyleM.top = (document.body.clientHeight-(menurefM.offsetHeight-b))+"px";
	}
	
}

function menuMoveDown(url) {
	// Die alte y-Position des Menüs wird ermittelt
	yOldPosition = menurefM.offsetTop;
	
	// Die Differenz der y-Position des Menüs zum unteren Browserrand wird ermittelt
	yDifference = (document.body.clientHeight-(menurefM.offsetHeight-b)) - yOldPosition;
	
	// Die Geschwindigkeit der Bewegung wird duch einen Dämpffaktor f ermittelt
	ySpeed = yDifference / f;
	
	// Die neue y-Position des Menüs wird ermittelt
	yNewPosition = Math.round(yOldPosition + ySpeed);
	
	// Das Menü wird auf die neue y-Position verschoben
	menustyleM.top = yNewPosition+'px';

	
	// Die y-Position des Menüs wird in der globalen Variablen yMenu gespeichert
	yMenu = yNewPosition;
	
	// Der nächste Durchlauf der Funktion menuMoveDown() wird gestartet
	menuMoveDownID = setTimeout("menuMoveDown('"+url+"')", 20);
	
	// Falls das Menue den unteren Browserrand erreicht hat wird die Funktion: menuFixed() wieder aktiviert
	if(yOldPosition == yNewPosition) {
		clearTimeout(menuMoveDownID);
		menustyleM.top = (document.body.clientHeight-(menurefM.offsetHeight-b))+'px';

		menuFixed(url);

	}
}

function change(url) {
	//alert(url);
	top.location.href = url;
}

function mDiv(oldyMouse) {
	
	// Die alte y-Position des Menüs wird ermittelt
	yOldPosition = menurefM.offsetTop;
	
	// Erst wenn der Mauszeiger aus dem Navibereich herauswandert wird die Maus-Positionierung wieder neu ermittelt
	if(yMouse >= yOldPosition + (menurefM.offsetHeight / 2) || yMouse <= yOldPosition - (menurefM.offsetHeight / 2)) {
		MouseTemp = yMouse;
		MS = true;
	} else if(MS) {
		MouseTemp = yMouse;
		MS = false;
	}
	
	// Die Differenz der y-Position des Menüs zur derzeitigen y-Postion der Maus wird ermittelt
	if(yOldPosition >= yMouse) {var yDifference = yOldPosition - MouseTemp;}
	else if(yOldPosition < yMouse) {var yDifference = MouseTemp - yOldPosition;}
	// Die Geschwindigkeit der Bewegung wird duch einen Dämpffaktor f ermittelt
	var ySpeed = yDifference / f;
	
	// Die neue y-Position des Menüs wird ermittelt
	if(yOldPosition >= yMouse) {var yNewPosition = Math.round(yOldPosition - ySpeed);}
	else if(yOldPosition < yMouse) {var yNewPosition = Math.round(yOldPosition + ySpeed);}
	//alert("maus="+y+"; menu="+yOldPosition+"; difference="+yDifference+"; newPosition="+yNewPosition);
		
	// Falls die neue y-Position des Menüs oberhalb des divTop Wertes liegt wird diese korrigiert
	if(yOldPosition <= divTop && yMouse < menurefM.offsetHeight / 2) {yNewPosition = divTop;}
	
	// Das Menü wird auf die neue y-Position verschoben
	menustyleM.top = yNewPosition+'px';
	
	// Die y-Position des Menüs wird in der globalen Variablen yMenu gespeichert
	yMenu = yNewPosition;
	
	// Der nächste Durchlauf der Funktion mDiv() wird gestartet
	mDivID = setTimeout("mDiv('"+oldyMouse+"')", 20);
	//alert("hallo");
}

function menuClose(open) {
	// Die Funktion mDivID() wird deaktiviert
	if(redir == 0) {clearTimeout(mDivID);}
	document.onmousemove = mouseposition;
	
	// Das alte Menü wird ausgeblendet
	//menustyleM.visibility = "hidden";
	// Das neue Menü wird positioniert
	if(redir == 0) {menustyle.top = menurefM.offsetTop+"px";} else if(redir == 1) {menustyle.top = (document.body.clientHeight-(menurefM.offsetHeight-b))+"px";}
	// Der Redirect wird wieder deaktiviert
	redir = 0;
	loop();
	menustyle.visibility = "visible";
}

// Die Funktion init() wird nach laden der Seite erstmalig ausgeführt
window.onload = init;


