function form_check_elements(elems)
{
	/* Erforderliche Felder prüfen */
	req = elems.required.value.split(",");
	failed = false;
	for (i = 0; i < req.length; i++)
	{
		e = elems[req[i]];
		if (((e.type != "checkbox") && (e.value.length == 0)) ||
			((e.type == "checkbox") && (!e.checked)))
		{
			e.className = e.className + ' failedField';
			failed = true;
		}
		else
		{
			e.className = e.className.replace(/ ?failedField/, "");
		}
	}
	if (failed)
	{
		alert("Bitte füllen Sie alle mit * gekennzeichneten Pflichtfelder aus.");
		return false;
	}

	/* Feldsummen berechnen und prüfen (felder:min|max:wert) */
	if (elems.calculator)
	{
		calc = elems.calculator.value.split(":");
		if (calc.length >= 3)
		{
			req = calc[0].split(",");
			sum = 0;
			for (i = 0; i < req.length; i++)
				sum += parseInt(elems[req[i]].value);
			ok = false;
			if (calc[1] == "max") if (sum <= calc[2]) ok = true;
			if (calc[1] == "min") if (sum >= calc[2]) ok = true;
			if (!ok)
			{
				alert("Die Summe oder Anzahl stimmt nicht.");
				return false;
			}
		}
	}
	
	/* Bedingungen prüfen */
	if (elems.yes)
		if (!elems.yes.checked)
		{
			alert("Sie müssen die Bedingungen akzeptieren.");
			return false;
		}

	return true;
}

function form_check()
{
	return form_check_elements(this.elements);
}

function form_init ()
{
	elems = document.getElementsByTagName("form");
	for (i = 0; i < elems.length; i++)
	{
		if (elems[i].elements.required) {
			if (elems[i].onsubmit)
				alert("FormMailer ERROR: onsubmit already set!");
			else
				elems[i].onsubmit = form_check;
		}
	}

	return true;
}

function reload_captcha()
{
	img = document.getElementById("captcha_bild");
	//TODO Format für Captcha dynamisch übernehmen (PNG etc.)
	src = img.src.replace(/formmailer\.php\?.*$/, "formmailer.php?captcha=png&" + Math.round(Math.random() * 10000));
	img.src = src;
}

