/*
	functions.js - (c) 2009-2010, Nolte IT
	http://www.nolte-it.de
	info@nolte-it.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 = 844; 		//Breite des Inhalts /* 760 */
var intInhaltHoehe = 521; 		//Höhe des Inhalts
var intAnzahlHMenues = 5;		//Anzahl hor. Menüpunkte
var intAnzahlVMenues = 3;		//Anzahl vert. Menüpunkte
var intAnzahlXMenues = 3;		//Anzahl extra Menüpunkte
var intSpeed = 500;				//Animationsgeschwindigkeit in ms

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

var arrH;

function zeigeMenue(strMenue, strMenuepunkt, strUnterseite, strUID) {
	if (strUID == undefined) strUID="0";
	if (strUnterseite == undefined) strUnterseite = "1";
	log("Neu=" + strMenue + strMenuepunkt + strUnterseite + ", aktiv=" + strAktivesMenue + strAktiverMenuepunkt + strAktiveUnterseite + ", UID=" + strUID);
	
	if (strMenue != strAktivesMenue || strMenuepunkt != strAktiverMenuepunkt || strUnterseite != strAktiveUnterseite) {
	
		if (strMenuepunkt != strAktiverMenuepunkt || (strMenue != strAktivesMenue && strMenue != "H") ) {
			//Es wird der Menüpunkt gewechselt, alles auf Anfang			
			for(var intMenue=1; intMenue<=intAnzahlVMenues; intMenue++) {				
				xLeft("VMenue" + intMenue, intVMenueX );
				if (strMenue == "X") {
					xTop("VMenue" + intMenue, oberePosition(intMenue));
				}
			}

			//Alle horizontal angeordneten Menüpunkte werden zurückgesetzt.
			for(var intMenue=1; intMenue<=intAnzahlHMenues; intMenue++) {					
				if (strMenue == "V" || strMenue == "X") {
					//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 );
				}
				if (strMenue != "X") setImage("H",strMenuepunkt,intMenue, false);
			}
		
			if (strAktivesMenue == "X") {
				resetXImages();				
			}		
		}
	
		switch (strMenue) {
			case "H":
				zeigeHMenue(strMenuepunkt, strUnterseite, strUID);		
				break;
			case "V":
				zeigeVMenue(strMenuepunkt, strUnterseite, strUID);
				break;
			case "X":
				zeigeXMenue(strMenuepunkt, strUnterseite, strUID);
				resetVImages();
				resetHImages();
				//if (strAktivesMenue == "X") onSlideEnd();
				onSlideEnd();
			default:
				break;
		}
		
		setImage(strMenue, strMenuepunkt, strUnterseite, true);
		
		strAktivesMenue = strMenue;
		strAktiverMenuepunkt = strMenuepunkt;
		strAktiveUnterseite = strUnterseite;
		
		
		
	} else {
		ladeInhalt(strMenue, strMenuepunkt, strUnterseite, strUID);
	}

}

function zeigeHMenue(strMenuepunkt, strUnterseite, strUID) {
	if (strUID == undefined) strUID="0";
	if (strUnterseite == undefined) strUnterseite = "1";
	hideDiv("Inhalt");
	ladeInhalt("H", strMenuepunkt, strUnterseite, strUID);
	intInhaltX = (eval(strUnterseite)-1) * (intHMenueBreite + 1);
	
	//vert. Menüpunkte verschieben
	for(var intMenue=1; intMenue<=intAnzahlVMenues; intMenue++) {
		if (istUnten(intMenue)) {
			xSlideTo("VMenue" + intMenue, intInhaltX, xGetElementById("VMenue" + intMenue).top, intSpeed );
		}
	}
	
	if (istLinks(strUnterseite)) {
		log("istLinks()");
		for(var intMenue=intAnzahlHMenues; intMenue>=eval(strUnterseite); intMenue--) {
			var objMenue = xGetElementById("HMenue" + intMenue);
			if (intMenue==(eval(strUnterseite))) {
				objMenue.onslideend = onSlideEnd;
			} else {
				objMenue.onslideend = null;
			}
			xSlideTo(objMenue, rechtePosition(intMenue), intHMenueY, intSpeed );	
			setImage("H", strMenuepunkt, intMenue, false);
		}
	} else {		
		if (istRechts(strUnterseite)) {
			log("istRechts()");
			for(var intMenue=1; intMenue<eval(strUnterseite); intMenue++) {
				var objMenue = xGetElementById("HMenue" + intMenue);
				if (intMenue==(eval(strUnterseite)-1)) {
					objMenue.onslideend = onSlideEnd;
				} else {
					objMenue.onslideend = null;
				}
				xSlideTo("HMenue" + intMenue, linkePosition(intMenue), intHMenueY, intSpeed );
				setImage("H", strMenuepunkt, intMenue, false);
			}
		}
	}
	
}

function zeigeVMenue(strMenuepunkt, strUnterseite, strUID) {
	if (strUID == undefined) strUID="0";
	if (strUnterseite == undefined) strUnterseite = "1";
	hideDiv("Inhalt");
	log("zeigeVMenue(), strMenuepunkt=" + strMenuepunkt + ", strUnterseite=" + strUnterseite + ", strUID=" + strUID)
	ladeInhalt("V", strMenuepunkt, strUnterseite, strUID);
	//intInhaltY = (eval(strMenuepunkt)-1) * (intVMenueHoehe + 1);
	intInhaltX = intVMenueX;
	
	var divInhalt = xGetElementById("Inhalt");
	var intHoehe = intInhaltHoehe - ((intAnzahlVMenues - eval(strMenuepunkt) + 1) * (intVMenueHoehe + 1));
	log("intHoehe=" + intHoehe);
	divInhalt.style.height = intHoehe;
	
	if (istOben(strMenuepunkt)) {
		log("istOben!");
		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, 1, false);
		}
	} else {
		if (istUnten(strMenuepunkt)) {
			log("istUnten!");
			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, 1, false);
			}
		}
	}	
}

function zeigeXMenue(strMenuepunkt, strUnterseite, strUID) {
	if (strUID == undefined) strUID="0";
	if (strUnterseite == undefined) strUnterseite = "1";
	hideDiv("Inhalt");
	
	var divInhalt = xGetElementById("Inhalt");
	divInhalt.style.height = intInhaltHoehe;
	
	ladeInhalt("X", strMenuepunkt, strUnterseite, strUID);
	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;
		
	for(var intMenue=1; intMenue<=intAnzahlVMenues; intMenue++) {
		xShow("VMenue" + intMenue);		
	}
	
	xShow(theDiv);
	//alert('divID=' + divID + ', left=' + posX + ", top=" + posY);
}

function log(strLogText) {
	var dLog = xGetElementById("Log");
	if (dLog != null) {
		dLog.innerHTML = strLogText + "<br/>" + dLog.innerHTML ;
	}
}
 
function ladeInhalt(strMenue, strMenuepunkt, strID, strUID) {	
	if (strUID == undefined) strUID="0";
	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 + "&UID=" + strUID);
	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);
	log("------------------------");
}

function setImage(strMenue, strMenuepunkt, strID, bolActive) {
	var strImage = "images/menue_" + strMenue.toLowerCase() + "_" + strMenuepunkt + "_" + strID ;
	var strNummer;
	
	if (strMenue == "H") {
		strNummer = strID;
	} else {
		strNummer = strMenuepunkt;
	}
	
	if (strMenue != "H") {	
		if (bolActive) strImage = strImage + "_a";
		strImage = strImage + ".gif";
		//log("strImage="+strImage);
		if (strMenuepunkt != "0") {
			document.getElementById("Img" + strMenue + "Menue" + strNummer).src = strImage;
		}
	} else {
		if (strMenuepunkt == "0") {
			//nur möglich beim Aufruf über resetHImages(), also wenn ein X-Menü aufgerufen wurde.
			objDiv = document.getElementById("HMenue" + strNummer);
			objDiv.innerHTML = "<IMG ID=\"ImgHMenue" + strNummer + "\" SRC=\"images/menue_h_0_" + strNummer + ".gif\" HEIGHT=\"521\" WIDTH=\"26\" BORDER=\"0\"/>";
		} else {
			var objDiv;
			var strHTML;
			objDiv = document.getElementById("HMenue" + strNummer);
			strHTML = arrH[eval(strMenuepunkt)][eval(strID)];
			if (bolActive) {
				strHTML = strHTML.replace(/\.gif/,"_a.gif");
			}
			objDiv.innerHTML = strHTML;
		}
	}
}

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

function resetVImages() {
	var intMenue;
	for (intMenue=1; intMenue<=3; intMenue++) {
		setImage("V", intMenue, 1, false);		
	}
}

function resetHImages() {
	var intMenue;
	for (intMenue=1; intMenue<=5; intMenue++) {
		setImage("H", "0", 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() {
	xModalDialog("popup");
}

function preloadHImages() {
	var anzahl;
	var strHTML;
	arrH = new Array(intAnzahlVMenues)
	for (var v = 1; v <= intAnzahlVMenues ; v++) {
		arrH[v] = new Array(intAnzahlHMenues);
		for (var h = 1; h <= intAnzahlHMenues; h++) {
			http.open("GET","http://www.grimm-consulting.com/neu/hmenue.php?menuepunkt=" + v + "&id=" + h, false);
			http.send(null);
			anzahl = http.responseText;
			if (anzahl > 0 ) {
				strHTML = "<A ID=\"HLink" + h + "\" HREF=\"javascript:zeigeMenue('H'," + v + "," + h + ");\"><IMG ID=\"ImgHMenue" + h + "\" SRC=\"images/menue_h_" + v + "_" + h + ".gif\" HEIGHT=\"521\" WIDTH=\"26\" BORDER=\"0\"/></A>";
			} else {
				strHTML = "<IMG ID=\"ImgHMenue" + h + "\" SRC=\"images/menue_h_0_" + h + ".gif\" HEIGHT=\"521\" WIDTH=\"26\" BORDER=\"0\"/>";
			}
			arrH[v][h] = strHTML;
			//log ("[" + v + "][" + h + "]=" + arrH[v][h] + " - " + strHTML);
		}	
	}	
}

function reload() {
	alert("reload(" + strAktivesMenue + strAktiverMenuepunkt + strAktiveUnterseite + ")");
	ladeInhalt(strAktivesMenue, strAktiverMenuepunkt, strAktiveUnterseite);
}

