/*
HTML-Formular Input-Checker v1.0 by Julian Stricker (http://www.akanai.com)

Anleitung:

		1. Skriptteil in den Header einfügen.

		2. Bei den Formulareingabefeldern, die gecheckt werden sollen das 'inputrequired'-Attribut einfügen.

				Beispiel: '<input name="textfield" type="text" inputrequired="true" />'
				Folgende Werte sind zur Zeit für 'inputrequired' erlaubt:
					'inputrequired="<true|false|min X>-<email|http|numbers|chars|chars <zeichen>>"'
					Parameter nach true oder false oder min:
						'true'							--> Es wird gecheckt ob das Eingabefeld leer ist. Standard ist true
						'email'							--> Es wird gecheckt ob eine gültige Emailadresse eingegeben wurde.
						'http'							--> Es wird gecheckt ob eine gültige Web-Adresse eingegeben wurde.
						'min X'							--> Es wird gecheckt ob die Eingabe mindestens X Zeichen lang ist.
						'numbers'						--> Es wird gecheckt ob die Eingabe nur Nummern hat.
						'chars'							--> Es wird gecheckt ob die Eingabe nur Buchstaben hat.
						'chars <zeichen>'		--> Es wird gecheckt ob die Eingabe nur Zeichen hat, die angegeben wurden.
						'format <format>'		--> Eingabe muss in einen bestimmten format eingegeben werden. Beispiel für Format z.B. bei Datumseingabe ##/##/####

						Beispiel: inputrequired="min 5-chars abcdef"

		3. Im Submit-Button folgendes Event einfügen: 'onclick="return checkeingabe('formularname');"', wobei formularname der Name des Formulars ist.

		4. Fertig!
*/
var fcerrormess;
//Array der Fehlermeldungen:
ceerrormess = new Array();
ceerrormess[0] = "ACHTUNG: Dieses Feld ist ein Pflichtfeld!";		//Fehlermeldung wenn ein Inputfeld leer ist.
ceerrormess[1] = "ACHTUNG: Bitte eine gültige E-Mail Adresse eingeben!";	//Fehlermeldung bei ungültiger E-Mail Adresse.
ceerrormess[2] = "ACHTUNG: Bitte eine gültige Web-Adresse eingeben (mit http://)!";	//Fehlermeldung bei ungültiger Web-Adresse.
ceerrormess[3] = "ACHTUNG: Die Eingabe ist zu kurz!";	//Fehlermeldung bei zu wenig Zeichen in Eingabe.
ceerrormess[4] = "ACHTUNG: Die Eingabe darf nur Ziffern enthalten!";	//Fehlermeldung wenn die Eingabe keine Nummer ist.
ceerrormess[5] = "ACHTUNG: Die Eingabe darf nur Buchstaben enthalten!";	//Fehlermeldung wenn die Eingabe keine Buchstaben sind.
ceerrormess[6] = "ACHTUNG: Die Eingabe enthält nicht zugelassene Zeichen!";	//Fehlermeldung wenn die Eingabe falsche Zeichen enthält.
ceerrormess[7] = "ACHTUNG: Die Eingabe ist falsch formatiert!";	//Fehlermeldung wenn die Eingabe falsch formatiert ist.

function isArray(obj) {
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
}

if ( typeof fcerrormess != 'undefined' ){
	for (var fcemi=0; fcemi<fcerrormess.length; fcemi++){
		ceerrormess[fcemi]=fcerrormess[fcemi];
	}
}

function fehlermeldung ( fehlerid ) {
	alert ( ceerrormess[fehlerid] );
}

function checkeingabe ( dasformular ) {
	var dieform = document.getElementsByName( dasformular );
	//alert( dieform[0].length );
	for ( i = 0; i < dieform[0].length; i++ ) {
		var dasfelement = dieform[0][i];
		if ( dasfelement.attributes.inputrequired ) {
			var inpreq = dasfelement.attributes.inputrequired.value;	//.toLowerCase();
			if ( dasfelement.attributes.derorigstyleborder ) {
				dasfelement.style.border = dasfelement.attributes.derorigstyleborder.value;
			}
			var inpreqa = inpreq.split( "-" );
			inpreqa[0] = inpreqa[0].toLowerCase();
			if ( inpreqa[0] == "true" || inpreqa[0] == "1" ) {
				if ( dasfelement.value == "" ) {
					var dasfelementstyleborder = dasfelement.style.border;
					dasfelement.setAttribute( "derorigstyleborder", dasfelement.style.border );
					dasfelement.style.border = '2px solid red';
					dasfelement.focus();
					fehlermeldung( 0 );
					return false;
				}
			} else if ( inpreqa[0].substr( 0, 3 ) == "min" ) {
				if ( dasfelement.value.length < parseInt( inpreq.substr( 3 ) ) ) {
					var dasfelementstyleborder = dasfelement.style.border;
					dasfelement.setAttribute( "derorigstyleborder", dasfelement.style.border );
					dasfelement.style.border = '2px solid red';
					dasfelement.focus();
					fehlermeldung( 3 );
					return false;
				}
			}
			if ( inpreqa.length > 1 && inpreqa[1] == "email" && dasfelement.value.length > 0 ) {
				if ( ( dasfelement.value.indexOf( "@" ) == -1 ) || ( dasfelement.value.indexOf( "." ) == -1 ) || ( dasfelement.value.length < 7 ) ) {
					var dasfelementstyleborder = dasfelement.style.border;
					dasfelement.setAttribute( "derorigstyleborder", dasfelement.style.border );
					dasfelement.style.border = '2px solid red';
					dasfelement.focus();
					fehlermeldung( 1 );
					return false;
				}
			} else if ( inpreqa.length > 1 && inpreqa[1] == "http" && dasfelement.value.length > 0 ) {
				if ( ( dasfelement.value.substr( 0, 7 ) != "http://" ) || ( dasfelement.value.indexOf( "." ) == -1 ) || ( dasfelement.value.length < 5 ) ) {
					var dasfelementstyleborder = dasfelement.style.border;
					dasfelement.setAttribute( "derorigstyleborder", dasfelement.style.border );
					dasfelement.style.border = '2px solid red';
					dasfelement.focus();
					fehlermeldung( 2 );
					return false;
				}
			} else if ( inpreqa.length > 1 && inpreqa[1] == "numbers" && dasfelement.value.length > 0 ) {
				var istnummer=true;
				for (xi=0; xi<dasfelement.value.length; xi++){
		  			if (dasfelement.value.charCodeAt(xi)<48 || dasfelement.value.charCodeAt(xi)>57) istnummer=false;
				}
				if (istnummer==false) {
					var dasfelementstyleborder = dasfelement.style.border;
					dasfelement.setAttribute( "derorigstyleborder", dasfelement.style.border );
					dasfelement.style.border = '2px solid red';
					dasfelement.focus();
					fehlermeldung( 4 );
					return false;
				}
			} else if ( inpreqa.length > 1 && inpreqa[1] == "chars" && dasfelement.value.length > 0 ) {
				var dfev = dasfelement.value;
				var allesok = true;
				if ( dfev.length > 0 ) {
					for ( ii = 0; ii < dfev.length; ii++ ) {
						var dfevcca = dfev.charCodeAt( ii );
						if ( !( dfevcca > 64 && dfevcca < 91 ) && !( dfevcca > 96 && dfevcca < 123 ) && !( dfevcca > 191 && dfevcca < 256 ) ) {
							allesok = false;
							break;
						}
					}
				} else {
					allesok = false;
				}
				if ( allesok == false ) {
					var dasfelementstyleborder = dasfelement.style.border;
					dasfelement.setAttribute( "derorigstyleborder", dasfelement.style.border );
					dasfelement.style.border = '2px solid red';
					dasfelement.focus();
					fehlermeldung( 5 );
					return false;
				}
			} else if ( inpreqa.length > 1 && ( inpreqa[1].substr( 0, 6 ) == "chars " ) && inpreqa[1].length > 5 && dasfelement.value.length > 0 ) {
				var param = inpreqa[1].substr( 6 );
				if (inpreqa.length>2){
          for (inx=2; inx<inpreqa.length; inx++){
            param+=inpreqa[inx];
          }
        }
				var dfev = dasfelement.value;
				for ( ii = 0; ii < dfev.length; ii++ ) {
					var dfevcca = dfev.charAt( ii );
					var istdrin = false;
					for ( iii = 0; iii < param.length; iii++ ) {
						if ( dfevcca == param.charAt(iii) ) {
							istdrin = true;
							break;
						}
					}
					if ( istdrin == false ) {
						var dasfelementstyleborder = dasfelement.style.border;
						dasfelement.setAttribute( "derorigstyleborder", dasfelement.style.border );
						dasfelement.style.border = '2px solid red';
						dasfelement.focus();
						fehlermeldung( 6 );
						return false;
						break;
					}
				}
			} else if ( inpreqa.length > 1 && ( inpreqa[1].substr( 0, 7 ) == "format " ) && inpreqa[1].length > 7 && dasfelement.value.length > 0 ) {
				var param = inpreqa[1].substr( 7 );
				var dfev = dasfelement.value;
				var istfalsch = false;
				if ( param.length != dfev.length ) {
					istfalsch = true;
				} else {
					for ( ii = 0; ii < dfev.length; ii++ ) {
						if ( param.charAt(ii) == "#" && parseInt( dfev.charAt(ii)) > -1 && parseInt( dfev.charAt(ii) ) < 10 ) {
							istfalsch = false;
						} else if ( param.charAt(ii) == dfev.charAt(ii) ) {
							istfalsch = false;
						} else {
							isftalsch = true;
							break;
						}
					}
				}
				if ( istfalsch == true ) {
					var dasfelementstyleborder = dasfelement.style.border;
					dasfelement.setAttribute( "derorigstyleborder", dasfelement.style.border );
					dasfelement.style.border = '2px solid red';
					dasfelement.focus();
					fehlermeldung( 7 );
					return false;
					break;
				}
			}
		}
	}
}
