

var FormularPruefung = function (einleitung) {
	if (einleitung == null)
		einleitung = '';
	this.einleitung = einleitung;
	this.fehlermeldung = '';
}

/**
  * F??gt der Fehlermeldung eine Nachricht hinzu
  */
FormularPruefung.prototype.neueNachricht = function (nachricht) {
	this.fehlermeldung += nachricht + '\n';
}

/**
  * Gibt ggf. die Fehlermeldung aus.
  * Antwort:
  * true:  Formular ist OK
  * false: Formular ist fehlerhaft
  */
FormularPruefung.prototype.meldung = function () {
	if (this.fehlermeldung.length == 0)
		return true;
	alert(this.einleitung + this.fehlermeldung);
	return false;
}


/**
 * Pr??ft, ob ein Mehrfach-Feld gesetzt ist
 */
FormularPruefung.prototype.checkMulti = function (elements, leerWert) {
	for (var i=0; i<elements.length; ++i) {
		var element = elements[i];
		var check = this.checkSingle(element, leerWert);
		if (check)
			return true;
	}
	return false;
}

/**
 * Pr??ft, ob ein Feld gesetzt ist
 */
FormularPruefung.prototype.checkSingle = function (element, leerWert) {
		if (element.checked == true)
			return true;
		if (element.type != 'radio' && 
			element.type != 'checkbox' && 
			element.tagName != 'SELECT' && 
			element.value != null && trim(element.value) != leerWert)
			return true;
		if (element.selectedIndex != null && 
			element.options[element.selectedIndex].value == null &&
			trim(element.options[element.selectedIndex].value) != leerWert)
			return true;
	return false;
}


/**
  * Pr??ft, ob ein Pflichtfeld ausgef?llt ist.
  * true:  Pflichtfeld ist ausgef?llt
  * false: Pflichtfeld ist nicht ausgef?llt
  */
FormularPruefung.prototype.pruefePflichtfeld = function (element, nachricht, leerWert) {
	if (leerWert == null)
		leerWert = '';
	if (element == null) {
		this.neueNachricht(nachricht);
		return false;
	}
	if (element.length == null || element.length == 0) {
		var check = this.checkSingle(element, leerWert);
		if (!check) {
			this.neueNachricht(nachricht);
			return false;
		}
	}
	
	return true;
}

/**
  * Pr??ft, ob die Email dem WAZ-Format entspricht
  * true:  Email entspricht dem WAZ-Format
  * false: Email entspricht nicht dem WAZ-Format
  */
FormularPruefung.prototype.pruefeEmail = function (element, nachricht) {
	if (element != null && trim(element.value).length != 0 && 
	    !trim(element.value).match(/^[a-zA-Z0-9_\-\.]+@[^\s]+\.[a-zA-Z]{2,}/) ) {
		this.neueNachricht(nachricht);
		return false;
	}
	return true;
}


/**
  * Pr??ft, ob die Eingabe eine Zahl ist
  * true:  Eingabe ist eine Zahl
  * false: Eingabe ist keine Zahl
  */
FormularPruefung.prototype.pruefeZahl = function (element, nachricht) {
	if (element != null && trim(element.value).length != 0 && 
	    !trim(element.value).match(/\d+/) ) {
		this.neueNachricht(nachricht);
		return false;
	}
	return true;
}

/**
  * Pr??ft, ob die Eingabe eine Dezimalzahl ist
  * true:  Eingabe ist eine Dezimalzahl
  * false: Eingabe ist keine Dezimalzahl
  */
FormularPruefung.prototype.pruefeDezimalzahl = function (element, nachricht) {
	if (element != null && trim(element.value).length != 0 && 
	    !trim(element.value).match(/\d+|\d+\.\d+/) ) {
		this.neueNachricht(nachricht);
		return false;
	}
	return true;
}


/**
  * Entfernt f??hrende oder folgende Leerzeichen von einer Zeichenkette
  */
function trim(wert) {
	return wert.replace(/\s*(\S*)\s*/, '$1');
}

