/*
	functions.js - (c) 2006, nolte ) newmedia
	http://www.nolte-newmedia.de
	info@nolte-newmedia.de
*/

//XMLHttpRequest-Objekt instanziieren;
var http = null;
if (window.XMLHttpRequest) {
	http = new XMLHttpRequest();	
} else if (window.ActiveXObject) {
	try {
		http = new ActiveXObject("Msxml2.XMLHTTP");
	} catch(ex) {
		try {
			http = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (ex) {
		}
	}
}

var intHMenueX = 0;				//X-Koordinate der vert. Menüpunkte
var intHMenueY = 54; 			//Y-Koordinate der hor. Menüpunkte
var intVMenueX = 135;			//X-Koordinate der vert. Menüpunkte
var intVMenueY = 0;				//Y	-Koordinate der vert. Menüpunkte
var intHMenueBreite = 26; 		//Breite eines horizontalen Menüpunkts
var intVMenueHoehe = 17;		//Höhe eines vertikalen Menüpunktes
var intInhaltX = 135;			//X-Koordinate des Inhalts
var intInhaltY = 54;			//Y-Koordinate des Inhalts
var intInhaltBreite = 760; 		//Breite des Inhalts
var intInhaltHoehe = 521; 		//Breite des Inhalts
var intAnzahlHMenues = 5;		//Anzahl hor. Menüpunkte
var intAnzahlVMenues = 3;		//Anzahl vert. Menüpunkte
var intSpeed = 500;				//Animationsgeschwindigkeit in ms

var strAktivesMenue = "X";
var strAktiverMenuepunkt = "0";

var arrHImg;					//Array mit Grafiken der Menüpunkte
var arrHImgActive;				//Array mit Grafiken der aktiven Menüpunkte
var arrVImg;					//Array mit Grafiken der Menüpunkte
var arrVImgActive;				//Array mit Grafiken der aktiven Menüpunkte
var arrXImg;					//Array mit Grafiken der Menüpunkte
var arrXImgActive;				//Array mit Grafiken der aktiven Menüpunkte

function zeigeMenue(strMenue, strMenuepunkt, strUnterseite) {
	if (strUnterseite == undefined) strUnterseite = "1";
	//log("Neues Menü=" + strMenue + strMenuepunkt + ", Aktives Menü=" + strAktivesMenue + strAktiverMenuepunkt);
	if (strMenue != strAktivesMenue || strMenuepunkt != strAktiverMenuepunkt) {
		if (strMenue != strAktivesMenue) {
			//Es wurde zwischen horizontalem und vertikalem Menü gewechselt,
			//also wird das ganze zuerst in Ausgangsposition gebracht.
			hideDiv("Inhalt");
			if (strAktivesMenue == "H") {
				//Alle horizontal angeordneten Menüpunkte werden zurückgesetzt.	
				for(var intMenue=1; intMenue<=intAnzahlHMenues; intMenue++) {					
					var objMenue = xGetElementById("HMenue" + intMenue);
					if (strMenue == "V") {
						//wenn von hor. auf vert. gewechselt wird, werden die Menüpunkte
						//nur durch Setzen der Position zurückgesetzt, nicht per Slide
						xLeft("HMenue" + intMenue, linkePosition(intMenue));			
					} else {
						xSlideTo("HMenue" + intMenue, linkePosition(intMenue), intHMenueY, intSpeed );
					}
					setImage("H",intMenue, false);
				}
			}
			if (strAktivesMenue == "V") {
				//Alle vertikal angeordneten Menüpunkte werden zurückgesetzt.	
				for(var intMenue=1; intMenue<=intAnzahlVMenues; intMenue++) {					
					var objMenue = xGetElementById("VMenue" + intMenue);
					if (strMenue == "H") {
						//wenn von vert. auf hor. gewechselt wird, werden die Menüpunkte
						//nur durch Setzen der Position zurückgesetzt, nicht per Slide
						xTop("VMenue" + intMenue, oberePosition(intMenue));			
					} else {
						xSlideTo("VMenue" + intMenue, intVMenueX, oberePosition(intMenue), intSpeed );			
					}
					setImage("V", intMenue, false);
				}
			}
			if (strAktivesMenue == "X") {
				resetXImages();				
			}
		}
		
		switch (strMenue) {
			case "H":
				zeigeHMenue(strMenuepunkt, strUnterseite);		
				break;
			case "V":
				zeigeVMenue(strMenuepunkt, strUnterseite);
				break;
			case "X":
				zeigeXMenue(strMenuepunkt, strUnterseite);
				if (strAktivesMenue == "X") onSlideEnd();
			default:
				break;
		}
		
		setImage(strMenue, strMenuepunkt, true);
		
		strAktivesMenue = strMenue;
		strAktiverMenuepunkt = strMenuepunkt;
	}

}

function zeigeHMenue(strMenuepunkt, strUnterseite) {
	if (strUnterseite == undefined) strUnterseite = "1";
	hideDiv("Inhalt");
	ladeInhalt("H", strMenuepunkt, strUnterseite);
	intInhaltY = intHMenueY;
	intInhaltX = (eval(strMenuepunkt)-1) * (intHMenueBreite + 1);
	if (istLinks(strMenuepunkt)) {
		for(var intMenue=intAnzahlHMenues; intMenue>=eval(strMenuepunkt); intMenue--) {
			var objMenue = xGetElementById("HMenue" + intMenue);
			if (intMenue==(eval(strMenuepunkt))) {
				objMenue.onslideend = onSlideEnd;
			} else {
				objMenue.onslideend = null;
			}
			xSlideTo(objMenue, rechtePosition(intMenue), intHMenueY, intSpeed );	
			setImage("H", intMenue, false);
		}
	} else {
		if (istRechts(strMenuepunkt)) {
			for(var intMenue=1; intMenue<eval(strMenuepunkt); intMenue++) {
				var objMenue = xGetElementById("HMenue" + intMenue);
				if (intMenue==(eval(strMenuepunkt)-1)) {
					objMenue.onslideend = onSlideEnd;
				} else {
					objMenue.onslideend = null;
				}
				xSlideTo("HMenue" + intMenue, linkePosition(intMenue), intHMenueY, intSpeed );
				setImage("H", intMenue, false);
			}
		}
	}
	
}

function zeigeVMenue(strMenuepunkt, strUnterseite) {
	if (strUnterseite == undefined) strUnterseite = "1";
	hideDiv("Inhalt");
	ladeInhalt("V", strMenuepunkt, strUnterseite);
	intInhaltY = (eval(strMenuepunkt)-1) * (intVMenueHoehe + 1);
	intInhaltX = intVMenueX;
	if (istOben(strMenuepunkt)) {
		for(var intMenue=intAnzahlVMenues; intMenue>=eval(strMenuepunkt); intMenue--) {
			var objMenue = xGetElementById("VMenue" + intMenue);
			if (intMenue==(eval(strMenuepunkt))) {
				objMenue.onslideend = onSlideEnd;
			} else {
				objMenue.onslideend = null;
			}			
			xSlideTo(objMenue, intVMenueX, unterePosition(intMenue), intSpeed );	
			setImage("V", intMenue, false);
		}
	} else {
		if (istUnten(strMenuepunkt)) {
			for(var intMenue=1; intMenue<eval(strMenuepunkt); intMenue++) {
				var objMenue = xGetElementById("VMenue" + intMenue);
				if (intMenue==(eval(strMenuepunkt)-1)) {
					objMenue.onslideend = onSlideEnd;
				} else {
					objMenue.onslideend = null;
				}
				xSlideTo("VMenue" + intMenue, intVMenueX, oberePosition(intMenue), intSpeed );			
				setImage("V", intMenue, false);
			}
		}
	}
	
}

function zeigeXMenue(strMenuepunkt, strUnterseite) {
	if (strUnterseite == undefined) strUnterseite = "1";
	hideDiv("Inhalt");
	ladeInhalt("X", strMenuepunkt, strUnterseite);
	intInhaltY = intHMenueY;
	intInhaltX = intVMenueX;
	
	resetXImages();
	
}

function istLinks(strMenuepunkt) {
	return (xLeft(xGetElementById("HMenue" + strMenuepunkt)) == linkePosition(strMenuepunkt));
}

function istRechts(strMenuepunkt) {
	return (xLeft(xGetElementById("HMenue" + strMenuepunkt)) == rechtePosition(strMenuepunkt));
}

function istOben(strMenuepunkt) {
	return (xTop(xGetElementById("VMenue" + strMenuepunkt)) == oberePosition(strMenuepunkt));
}

function istUnten(strMenuepunkt) {
	return (xTop(xGetElementById("VMenue" + strMenuepunkt)) == unterePosition(strMenuepunkt));
}

function linkePosition(strMenuepunkt) {
	return (intHMenueBreite +1) * (eval(strMenuepunkt)-1)
}

function rechtePosition(strMenuepunkt) {
	return (linkePosition(strMenuepunkt) + intInhaltBreite + 1);	
}

function oberePosition(strMenuepunkt) {
	return (intVMenueHoehe +1) * (eval(strMenuepunkt)-1)
}

function unterePosition(strMenuepunkt) {
	return (oberePosition(strMenuepunkt) + intInhaltHoehe + 1)
}

function hideDiv(divID) {
	var theDiv = xGetElementById(divID); 
	xHide(theDiv);
}

function showDiv(divID, posX, posY) {
	var theDiv = xGetElementById(divID); 
	theDiv.style.left = posX;
	theDiv.style.top = posY;
	xShow(theDiv);
	//alert('divID=' + divID + ', left=' + posX + ", top=" + posY);
}

function log(strLogText) {
	var dLog = xGetElementById("Log");
	dLog.innerHTML += "<BR>" + strLogText;	
}

function ladeInhalt(strMenue, strMenuepunkt, strID) {	
	var divInhalt = xGetElementById("Inhalt");
	divInhalt.innerHTML = "<DIV ALIGN='CENTER'><BR><BR><BR><BR><BR><IMG SRC='images/loading.gif'><BR><BR><SPAN CLASS='loading'>Inhalte werden geladen...</SPAN></DIV>";
	http.open("GET", "ladeinhalt.php?menue=" + strMenue + "&menuepunkt=" + strMenuepunkt + "&ID=" + strID);
	http.onreadystatechange = zeigeInhalt;
	http.send(null);
}

function zeigeInhalt() {
	if (http.readyState == 4) {
		var divInhalt = xGetElementById("Inhalt");
		divInhalt.innerHTML = http.responseText;	
	}
}

function onSlideEnd() {
	showDiv("Inhalt", intInhaltX, intInhaltY);
}

function setImage(strMenue, strMenuepunkt, bolActive) {
	if (strMenuepunkt != "0") {
		var strImage = "images/menue_" + strMenue.toLowerCase() + strMenuepunkt;
		if (bolActive) strImage = strImage + "_active";
		strImage = strImage + ".gif";
		
		document.getElementById("Img" + strMenue + "Menue" + strMenuepunkt).src = strImage;
	}	
}

function resetXImages() {
	var intMenue;
	for (intMenue=1; intMenue<=4; intMenue++) {
		setImage("X", intMenue, false);		
	}
}

function submitKontakt() {
	var objForm = document.KONTAKTFORM;
	var strNachname = objForm.Nachname.value;
	var strVorname = objForm.Vorname.value;
	var strFirma = objForm.Firma.value;
	var strStrasse = objForm.Strasse.value;
	var strWohnort = objForm.Wohnort.value;
	var strPLZ = objForm.PLZ.value;
	var strLand = objForm.Land.value;
	var strTelefon = objForm.Telefon.value;
	var strFax = objForm.Fax.value;
	var strEMail = objForm.EMail.value;
	var strBetreff = objForm.Betreff.value;
	var strBemerkungen = objForm.Bemerkungen.value;
	
	var reFilter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9])+$/;
	
	if (strNachname == "" || strVorname == "" || strEMail == "") {
		alert('Bitte füllen Sie alle Felder aus, die mit einem * gekennzeichnet sind!');	
	} else {
		if(reFilter.test(strEMail)) {
			var strParameter = "Nachname=" + escape(strNachname) + "&Vorname=" + escape(strVorname);
			strParameter += "&Firma=" + escape(strFirma) + "&Strasse=" + escape(strStrasse);
			strParameter += "&Wohnort=" + escape(strWohnort) + "&PLZ=" + escape(strPLZ);
			strParameter += "&Land=" + escape(strLand) + "&Telefon=" + escape(strTelefon);
			strParameter += "&Telefon=" + escape(strTelefon) + "&Fax=" + escape(strFax);
			strParameter += "&EMail=" + escape(strEMail) + "&Betreff=" + escape(strBetreff);
			strParameter += "&Bemerkungen=" + escape(strBemerkungen);	
						
			var divInhalt = xGetElementById("Inhalt");
			divInhalt.innerHTML = "<DIV ALIGN='CENTER'><BR><BR><BR><BR><BR><IMG SRC='images/loading.gif'><BR><BR><SPAN CLASS='loading'>Formulardaten werden übermittelt...</SPAN></DIV>";
						
			http.open("POST", "sendeformular.php");
			http.onreadystatechange = zeigeInhalt;
			http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			http.send(strParameter);
		} else {
			alert ('Bitte überprüfen Sie Ihre E-Mail-Adresse.');			
		}
	}	
}

function zentrieren() {
	var theDiv = xGetElementById("Container");
	xLeft(theDiv, xRound((xClientWidth() - xWidth(theDiv))/2,0)) ;
	xShow(theDiv);		
}

function xRound(v, d) {
  var f = Math.pow(10, d);
  return Math.round(v * f) / f;
}

function popup(mp, mid, w, h) {
	var strURL = "http://www.grimm-consulting.com/popup.php?mp=" + mp + "&mid=" + mid;
	window.open(strURL, "GRIMMAKTUELL", "width=" + w + ",height=" + h + ",dependent=yes,location=no,menubar=no,resizable=no,status=no,toolbar=no");
}

