currentReiter = "";
mindestflaeche = 20;
mindestflaeche_reihe = 0;
mindestflaeche_eck = 0;
mindestflaeche_kopf = 0;
mindestflaeche_insel = 0;
maximalflaeche_reihe = 9999;
maximalflaeche_eck = 9999;
maximalflaeche_kopf = 9999;
maximalflaeche_insel = 9999;


qmDependants = new Array();
qmBDependants = new Array();

/**
 * Konfigurator JavaScript Functions
 * needs prototype.js
 */


function ladeAdressFormular () {
  var optionen = {
        parameters: {
          locale: locale
        }
      };
  optionen.onComplete = function(transport) {
    new Form.Observer(formularName + 'Form', 0.7, eval("set_adresse"));
  };

	var zielElement = "adresse";
	var formularURL = "formulare/adresse.html";
	new Ajax.Updater(zielElement, formularURL, optionen);
	return false;
}

function ladeFormular (formularName) {
  var optionen = {
        parameters: {
          locale: locale
        },
      	onCreate: mausWarte,
      	evalScripts: true
      };
   optionen.onComplete = function(transport) {
  	   mausNormal();
      new Form.Observer(formularName + 'Form', 0.7, eval("set_" + formularName));
      if (formularName == "standbau") {
         $$('.preselect')[0].checked = true;
      }
  };

	var zielElement = "formular";
	var formularURL = "formulare/" + formularName + ".html";
	new Ajax.Updater(zielElement, formularURL, optionen);
	aktiviereReiter(formularName);
	return false;
}

function ladeKalkulation () {
  var optionen = {
        parameters: {
          locale: locale
        },
        onCreate: mausWarte,
		  	onComplete: mausNormal
      };
  optionen.onSuccess = function(transport) {

  }
	var zielElement = "kalkulation";
	var requestURL = "messekosten-kalkulation.html";
	new Ajax.Updater(zielElement, requestURL, optionen);
}

function sendForm (formular) {
	formular.request(
			{
		  	onSuccess: function(transport) {
		  		var json = transport.responseText.evalJSON(true);
					if (json.status == "ok") {
		  			ladeKalkulation();
		  		} else if (json.status == "timeout") {
							document.location = "timeout.html";
					}
		  	},
		  	onCreate: mausWarte,
		  	onComplete: mausNormal
		  }
	  )
	  return false;
}

/**
 * checkbox geklickt in der Kalkulation der rechten Spalte
 */
function togglePos (posName) {
  var optionen = {
        parameters: {
          ak: posName
        },
		  	onSuccess: function(transport) {
		  		var json = transport.responseText.evalJSON(true);
					if (json.status == "ok") {
		  			ladeKalkulation();
		  		} else if (json.status == "timeout") {
							document.location = "timeout.html";
					} else {
						alert("status: " + json.status);
					}
		  	},
		  	onCreate: mausWarte,
		  	onComplete: mausNormal
      };
	var requestURL = "setPos.do";
	new Ajax.Request(requestURL, optionen);
	return false;
}

/**
 * Fläche wurde geändert
 */
function set_flaeche () {
	mindestflaeche = eval('mindestflaeche_' + $FR('flaecheForm', 'standart'));
	maximalflaeche = eval('maximalflaeche_' + $FR('flaecheForm', 'standart'));
	$('fehlermeldung_reihe').hide();
	$('fehlermeldung_eck').hide();
	$('fehlermeldung_kopf').hide();
	$('fehlermeldung_insel').hide();
  if ($('fehlermeldung_freiflaeche')) $('fehlermeldung_freiflaeche').hide();


	// tausche Komma durch Punkt
	var formVals = $('flaecheForm').serialize(true);

	formVals.qm = formVals.qm.replace(/,/, ".");
	if (! formVals.qm_bb) {
	  formVals.qm_bb = formVals.qm;
	} else {
    formVals.qm_bb = formVals.qm_bb.replace(/,/, ".");
	}

	var parsedQm = parseFloat(formVals.qm);
	var parsedQmBB = parseFloat(formVals.qm_bb);

	if (parsedQm != Number.NaN) {
		// mindestflaeche wird am Anfang dieses Scripts initialisiert.
		// im formular flaeche.xslt wird dieser Wert von dem überschrieben der bei der Messe konfiguriert ist
		var fehlerMeldung = $('fehlermeldung_' + $FR('flaecheForm', 'standart'));
		if (parsedQm < mindestflaeche || parsedQm > maximalflaeche) {
			fehlerMeldung.show();
		} else if (parsedQmBB != Number.NaN && parsedQmBB > parsedQm) {
		    $('fehlermeldung_freiflaeche').show();
		}	else {
			hallenflaeche = parsedQm;
			for (var i = 0; i < qm_grenzen.length; i++) {
				if (parsedQm <= qm_grenzen[i] || i + 1 == qm_grenzen.length) {
					showBeschreibung("reihe_flaeche_preis_" + qm_grenzen[i], "preis_flaeche_reihe");
					showBeschreibung("eck_flaeche_preis_" + qm_grenzen[i], "preis_flaeche_eck");
					showBeschreibung("kopf_flaeche_preis_" + qm_grenzen[i], "preis_flaeche_kopf");
					showBeschreibung("insel_flaeche_preis_" + qm_grenzen[i], "preis_flaeche_insel");
					break;
				}
			}
		}
	}
	var optionen = {
    parameters: formVals,
		requestHeaders: {
		  Accept: 'application/json'},
  	  onSuccess: function(transport) {
				var json = transport.responseText.evalJSON(true);
				if (json.status == "ok") {
  				ladeKalkulation();
					enableReiter(true, "flaeche");
					updateDependants();
					$('kalkulation_abschliessen_button').show();
				} else if (json.status == "timeout") {
					document.location = "timeout.html";
				} else {
					//$('kalkulation_abschliessen_button').hide();
				}
  		},
  	  onCreate: mausWarte,
  	  onComplete: mausNormal
	  };
  new Ajax.Request("setFormData.do", optionen);
  return false;
}

/**
 * das Parameter Element ist abhängig von der gewählten Anzahl an qm
 */
function addQmDependent (elementName, preis) {
	var dependendant = {
				el: elementName,
				preis: preis
	}
	qmDependants.push(dependendant);
}

/**
 * das Parameter Element ist abhängig von der gewählten Anzahl an BEBAUTER Standfläche
 */
function addQmBDependent (elementName, preis) {
	var dependendant = {
				el: elementName,
				preis: preis
	}
	qmBDependants.push(dependendant);
}


/**
 * aktualisiere alle von der qm Zahl abhängigen Elemente
 */
function updateDependants() {
	if (qmDependants != null) {
		for (var i = 0; i < qmDependants.length; i++) {
			var cDep = qmDependants[i];
			berechnePosten(cDep.el, hallenflaeche, cDep.preis);
		}
	}
	if (qmBDependants != null) {
		for (var i = 0; i < qmBDependants.length; i++) {
			var cDep = qmBDependants[i];
			berechnePosten(cDep.el, hallenflaeche, cDep.preis);
		}
	}
}

function set_elektro () {
	showBeschreibungElektro ();
	if ($F('id_a') == 'none') {
  // Verstecke alle weiteren Fieldsets wenn kein E-Anschluss gewählt
	  if ($('erdung'))    $('erdung').hide();
	  if ($('verbrauch')) $('verbrauch').hide();
	  if ($('verteiler')) $('verteiler').hide();
	} else {
	  if ($('erdung'))    $('erdung').show();
	  if ($('verbrauch')) $('verbrauch').show();
	  if ($('verteiler')) $('verteiler').show();
	}
	return sendForm($('elektroForm'));

}


function set_wasser () {
	var result = validateWasser();
	if (result) {
		sendForm($('wasserForm'));
	}
	return false;
}


function validateWasser () {
	var result = true;
// Prüfe Eingabe Anschlüsse
	var mengeAnschluss = $F('m_e').match(/[^0-9,]/gi);
	if (mengeAnschluss != null) {
		$('m_e').className = "numberField borderred";
		result = false;
	} else {
		$('m_e').className = "numberField";
		var menge = parseFloat($('einzelAnschluss').innerHTML.replace(/,/, "."));
		var einzelPreis = parseFloat($F('m_e'));
		berechnePosten ('gesamt_a_e', menge, einzelPreis);
	}
// Prüfe Eingabe weitere Anschlüsse
	var mengeWeitere = $F('m_w').match(/[^0-9]/gi);
	if (mengeWeitere != null) {
		$('m_w').className = "numberField borderred";
		result = false;
	} else {
		$('m_w').className = "numberField";
		var menge = parseFloat($('einzelWeitere').innerHTML.replace(/,/, "."));
		var einzelPreis = parseFloat($F('m_w'));

		berechnePosten ('gesamt_w', menge, einzelPreis);
	}
	return result;
}

function berechnePosten (lmntName, menge, einzelPreis) {
		var newValue = (menge * einzelPreis).toFixed(2);
		if (locale == 'de' || locale == 'it' ) {
			$(lmntName).update (newValue.replace(/\./, ","));
		} else {
			$(lmntName).update(newValue);
		}
}


function set_reinigung () {
	return sendForm($('reinigungForm'));
}


function set_bewachung () {
	var result = validateBewachung();
	if (result) {
		sendForm($('bewachungForm'));
	}
	return false;
}

function validateBewachung () {
  // bewachungsliste wird in bewachung.xslt erstellt
	var result = true;
   for (var i = 0; i < bewachungsliste.length; i++) {
      var bewID = bewachungsliste[i];
      var idMenge = 'm_' + bewID;
      var feldInhalt = $F(idMenge); 
      if (feldInhalt) {
         var checkNumber = feldInhalt.match(/^[0-9]*$/gi);
         if (checkNumber == null) {
         	$(idMenge).className = "numberField borderred";
         	result = false;
         } else {
         	$(idMenge).className = "numberField";
         	var menge = parseFloat($('einzel_wache_' + bewID).innerHTML.replace(/,/, ".")) * hzu;
         	var einzelPreis = parseFloat(feldInhalt);
         	berechnePosten ('gesamt_wache_' + bewID, menge, einzelPreis);
         }
      } else {
         $(idMenge).className = "numberField borderred";
         result = false;
      }
   }
	return result;
}

function set_standbau() {
	showBeschreibung("stand_" + $FR('standbauForm', 'id_stand'), "standansicht");
	return sendForm($('standbauForm'));
}

function set_adresse () {
	var formVals = $('adresseForm').serialize(true);
	var result = true;
	if (checkEmail(formVals.email)){
		$('adresse_email').className = "";
	} else {
		$('adresse_email').className = "borderred";
		result = false;
	}
	if (formVals.firma != ""){
		$('adresse_firma').className = "";
	} else {
		$('adresse_firma').className = "borderred";
		result = false;
	}
	if (formVals.name != ""){
		$('adresse_name').className = "";
	} else {
		$('adresse_name').className = "borderred";
		result = false;
	}
	return result;
}

function enableReiter (aktiv, cReiter) {
	var newClassName = "menu_inaktiv";
	if (!aktiv) newClassName = "menu_deaktiv";
	var reiter = new Array ('flaeche', 'elektro', 'wasser', 'bewachung', 'reinigung', 'standbau');
	for (var i = 0; i < reiter.length; i++) {
		var tab = reiter[i];
		if (tab != cReiter) {
			$(tab).className = newClassName;
		}
	}
}

function aktiviereReiter (reiterName) {
	var aktivClassName = "menu_aktiv";
	var inaktivClassName = "menu_inaktiv";
	if (currentReiter != "") {
		$(currentReiter).className = inaktivClassName;
	}
	currentReiter = reiterName;
	$(currentReiter).className = aktivClassName;
}

var zahl = "";

function validateZahl(inputEl) {
	var testZahl = inputEl.value;
	var num_error = false;
  var num = testZahl.match(/[^0-9,\.]/gi);
  var dot = testZahl.match(/\./g);
  var com = testZahl.match(/,/g);
  if (num != null) {
    num_error = true;
  }
  else if (dot != null && dot.length > 1) {
    num_error = true;
  }
  else if ( com != null && com.length > 1) {
  	num_error = true;
  }
  else if (dot != null && com != null) {
  	num_error = true;
  }
  if (num_error == false) {
  	zahl = testZahl;
  }
  inputEl.value =  zahl;
}

function showBeschreibungElektro () {
  if ($('id_a') != null) {
		// ANSCHLUSS
		showBeschreibung("anschluss_beschreibung_" + $F('id_a'), "beschreibung_anschluss");
		showBeschreibung("anschluss_preis_" + $F('id_a'), "preis_anschluss");
		// VERBRAUCH
		showBeschreibung("verbrauch_" + $F('id_a'), "name_verbrauch");

		// VERTEILER
		if ($('id_v') != null) {
  		showBeschreibung("verteiler_beschreibung_" + $F('id_v'), "beschreibung_verteiler");
  		showBeschreibung("verteiler_preis_" + $F('id_v'), "preis_verteiler");
    }
  }
}

function showBeschreibung (beschreibungID, beschreibungClass) {
	var meineDivs = $$("." + beschreibungClass);
// erst alle divs für diese beschreibungsKlasse verstecken
	for(var i = 0; i < meineDivs.length; i++) {
		meineDivs[i].hide();
	}
// das gewünschte div anzeigen
	if (beschreibungID != 'none' && $(beschreibungID) != null) {
	  $(beschreibungID).show();
  }
}

function mausWarte () {
	document.getElementsByTagName('body')[0].style.cursor = "wait";
}

function mausNormal () {
	document.getElementsByTagName('body')[0].style.cursor = "default";
}

function $FR(frm, inputName) {
    return $F($(frm).getInputs('radio', inputName).find(function(obj) { return obj.checked; }));
}

function checkEmail (email) {
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,12})+$/.test(email)){
		return (true)
	} else {
		return (false)
	}
}

function setMesse (messeID) {
  var optionen = {
		parameters: {
			a: "sM",
			id_m: messeID
  	}
  };
	var requestURL = "setMesseNR.do";
	new Ajax.Request(requestURL, optionen);
}
