/* Diese JavaScript-Datei enthaelt alle Scripts, die fuer den unmittelbaren Betrieb der Website 
   benoetigt werden. Die einzelnen Funktionen werden jeweils vor der Definition erklaert */
/* Letzte Aenderung: 13.4.2009, Thilo Schneider */

// Konstanten fuer das Popup-Menue
var DELAY = 50;		// Hundertstel-Sekunden bis Menue Position aendert
var LEFTMAX = 210;		// Zielwert fuer CSS Eigenschaft LEFT (Menue sichtbar)
var LEFTMIN = 50;		// Startwert fuer CSS Eigenschaft LEFT (Menue verborgen)
var ACCELERATION = 0.3;		// Beschleunigung, mit der Menue erscheint
// Layoutbreite
var LAYOUT_WIDTH = 1000;

// Onresize-Event registrieren
window.onresize = properBGalign;


// Variablen, die den aktuellen Status speichern
var currentVelocity, currentLeft, currentDelay, currentDirection;
var currentMenu = null;
var nextMenu = null;
var slider;


/* Normalerweise wird das Hintergrundbild mitsamt Inhalt zentriert, ueberfluessiger Platz ist einfach weiss.
   Ist allerdings die Browseraufloesung zu klein, ist eine Zentrierung nicht sinnvoll, da dann beidseitig 
   beschnitten wird, anstatt ueber Scrollbalken die ganze Seite zugaenglich zu machen. Die folgende Funktion
   aendert die Ausrichtung je nach gewahlter Bildschirmaufloesung */ 
function properBGalign() {
	var documentWidth;
	if( typeof( window.innerWidth ) == 'number' ) {
    // Fuer alle Browser ausser IE
    	documentWidth = window.innerWidth;
  	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    // IE 6+ in 'standards compliant mode'
    	documentWidth = document.documentElement.clientWidth;
    	myHeight = document.documentElement.clientHeight;
  } //else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    // IE 4
    //documentWidth = document.body.clientWidth;
  //}
  
  // Eigenschaft body background aendern
  if (documentWidth < LAYOUT_WIDTH) {
  		//alert(document.getElementsByTagName('body')[0].style.backgroundPosition);
	  document.getElementsByTagName("body")[0].style.backgroundPositionX = "-25px";
	  
  } else {
	 document.getElementsByTagName("body")[0].style.backgroundPositionX = "50%"; 
  }
  
}



/* Diese Funktion schiebt das Popupmenue nach 10*DELAY Millisekunden ins Bild.
   Definition sehr geradlinig, daher ohne Kommentare */
function slideOut(callingElement) {
	if (currentMenu == null) {
		// Fall 1: Kein Menue offen
		currentMenu = callingElement.getElementsByTagName("ul")[0];
		currentLeft = LEFTMIN;
		currentDirection = 1;
		currentVelocity = 0;
		currentDelay = DELAY;
		
		if (slider != null)
			window.clearInterval(slider);
		slider = window.setInterval(slideHandler, 10);
	} else if (currentMenu != callingElement.getElementsByTagName("ul")[0]) {
		// Fall 2: Anderes Menue offen.
		// Dann ist anderes Menue auf dem Rausweg, Reinweg oder ohne SlideHandler
		if(slider != null) { //SlideHandler vorhanden
			if (currentDirection == 1) { // faehrt gerade heraus
				if (currentDelay == 0) { // in der Bewegung
					// Fahre zurueck, reihe neues Menue ein
					currentDirection = -1;
					currentVelocity = 0;
					nextMenu = callingElement.getElementsByTagName("ul")[0];
				} else { // in der Wartephase
					// Breche Ausfahrt ab, starte Wartephase fuer neues Menue
					currentDelay = DELAY;
					currentMenu = callingElement.getElementsByTagName("ul")[0];
					nextMenu = null;
				}
			} else { // faehrt gerade herein
				// reihe Menue zum Ausfahren ein
				nextMenu = callingElement.getElementsByTagName("ul")[0];
			}
		} else { // Kein SlideHandler --> Das Menue ist ausgefahren.
			// Starte Einfahrsequenz
			currentDelay = DELAY;
			currentDirection = -1;
			slider = window.setInterval(slideHandler, 10);
			// und reihe aktuelles Menu ein
			nextMenu = callingElement.getElementsByTagName("ul")[0];
		}
	} else if (currentMenu == callingElement.getElementsByTagName("ul")[0]) {
		// Fall 3: Aktuelles Menue offen
		if (slider != null) { // Slidehandler vorhanden - ansonsten Menue ausgefaren, nichts zu tun.
			if (currentDirection == -1) { // Auf dem Reinweg - ansonsten muss nichts geandert werden
				currentDirection = 1;
				currentVelocity = 0;
			}
			nextMenu = null; // Unabhaenging von der Richtung darf kein Menue spaeter ausfahren wollen.
		}
	}
}

function slideIn(callingElement) {
	if (currentMenu != null) { // Ansonsten ist kein Menue ausgefahren, also nichts zu tun.
		if (slider != null) { // Es existiert schon ein SlideHandler
			if (currentDirection == 1 & currentMenu == callingElement.getElementsByTagName("ul")[0]) { // Das aktuelle Menue fahrt gerade 
				currentDirection = -1;
				currentVelocity = 0;
				nextMenu = null;
			} 
			if (nextMenu == callingElement.getElementsByTagName("ul")[0]) {
				nextMenu = null;
			}
		} else { // Kein SlideHandler vorhanden, fahre Menue also ein:
			currentDirection = -1;
			currentDelay = DELAY;
			slider = window.setInterval(slideHandler, 10);
		}
	}
	
}

function slideHandler() {
	if (currentDelay > 0) {
		currentDelay --;
	} else {
		currentVelocity += ACCELERATION * currentDirection;
		currentLeft += currentVelocity;
		if (currentLeft >= LEFTMAX) {
			currentLeft = LEFTMAX;
			currentVelocity = 0;
			window.clearInterval(slider);
			slider = null;
		}
		if (currentLeft <= LEFTMIN) {
			currentLeft = LEFTMIN;
			currentVelocity = 0;
			window.clearInterval(slider);
			slider = null;
		}
		currentMenu.style.left = currentLeft + 'px';
		if (currentLeft == LEFTMIN) {
			currentMenu = null;
			if (nextMenu != null) {
				currentMenu = nextMenu;
				nextMenu = null;
				currentDirection = 1;
				slider = window.setInterval(slideHandler, 10);
			}
		}
	}
}


// Die folgenden beiden Funktionen werden benštigt, um Emailadressen auf der Seite entsprechend darzustellen.
function letter_bei() { 
		document.write('@');
}  
function letter_dot() {
	document.write('.');
}


// Das Folgende wir fuer Google Analytics verwendet:
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

try { 
	var pageTracker = _gat._getTracker("UA-11268893-1"); 
	pageTracker._trackPageview();
} 
catch(err) { }