﻿function mmFormShield(paramFormName)
{
	var formObj=eval("document.forms."+paramFormName);
	var formObjlength=formObj.length;
	var formObjType;
	var formObjValue;
	var formObjValueWOBreaks;
	var formObjValueBreakFound=false;
	var regAllowedCharacters=new RegExp(/[^A-Za-z0-9,ä,Ä,ö,Ö,ü,Ü,ß,@,_, ,\-,\.,(\,)\,"\,+\,=\,?\,/\,\,]/);
	var errorState="EF8E57";
	var normState="FFFFFF";
	var ausgabe="Bei Ihrer Eingabe ist Ihnen ein Fehler unterlaufen.\nBitte geben Sie nur Ziffern und Buchstaben oder folgende Sonderzeichen ein:\n@ _ - ) ( + = / ?  \" . ,";
	var ersterFehler=null;
	for (i=0;i<formObjlength;i++)
	{
		formObjType=formObj[i].getAttribute("type");
		if(formObjType) formObjType=formObjType.toLowerCase();
		formObjName=formObj[i].nodeName;
		if(formObjName) formObjName=formObjName.toLowerCase();
		if((formObjName=="input" && formObjType=="text") || formObjName=="textarea")
		{
			formObjValue=formObj[i].value;
			formObjValueLength=formObjValue.length;
			formObjValueWOBreaks="";
			formObjValueBreakFound=false;
			for (j=0;j<formObjValueLength;j++)
			{
				if (formObjValue.charCodeAt(j)==13 && formObjValue.charCodeAt(j+1)==10) 
				{
					// IE hat für Umbruch 13 (CR) und 10 (LF)
					formObjValueBreakFound=true;
					j=j+1;
				}
				else if (formObjValue.charCodeAt(j)==10)
				{
					// FF hat für Umbruch nur "10"
					formObjValueBreakFound=true;
				}
				else
				{
					// Normales Zeichen, kein Umbruch
					formObjValueWOBreaks+=formObjValue.charAt(j);
				}
			}
			// Keine Umbrüche in Textfeldern entdeckt, einfach Variable mit komplettem Wert belegen
			if (formObjValueBreakFound==false) formObjValueWOBreaks=formObjValue;
			if (formObjValueWOBreaks!=null && formObjValueWOBreaks!="" && regAllowedCharacters.test(formObjValueWOBreaks) || formObjValueWOBreaks.indexOf("\\")!=-1)
			{
				if(ersterFehler==null) ersterFehler=i;
				formObj[i].style.backgroundColor=errorState;
				formObj[i].style.bgcolor=errorState;
			}
			else
			{
				formObj[i].style.backgroundColor=normState;
				formObj[i].style.bgcolor=normState;
			}
		}
	}
	if (ersterFehler!=null)
	{
		// Fehlerausgabe
		formObj[ersterFehler].focus();
		alert(ausgabe);
		return false;                      
	}
	else return true;
}