
// Zahlenreihe
function verifyNumbers(str) {
	var filter = /[^0-9]/;
	if (filter.test(str)){
		return true;
	} else {
		return false;
	}
}

function chknumbers(checkStr, theElement) {
	element = theElement;
	if (verifyNumbers(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Bitte %FCberpr%FCfen Sie die Zahlenfolge"));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}

// Preis ohne 1000er Punkte, mit oder ohne Komma, 2 Stellen anch dem Komma
function verifyPrice(str) {
	var filter = /^[0-9]+(,[0-9]{2}){0,1}$/;
	if (filter.test(str) && str.length > 0 ){
		return true;
	} else {
		return false;
	}
}

function chkprice(checkStr, theElement) {
	element = theElement;
	if (verifyPrice(checkStr)) {
		window.setTimeout('correctValue()', 0);
		return true;
	} else {
		alert(unescape("Die Preisangabe darf nicht leer sein und  keine Punkte und Buchstaben enthalten"));
		window.setTimeout('wrongValue()', 0);
		return false;
	}
}

// Date
function verifyDate(str) {
	var filter = /[0-9]{2}\.[0-9]{2}\.[0-9]{4}/;
	if (filter.test(str)){
		return true;
	} else {
		return false;
	}
}

function chkdate(checkStr, theElement) {
	element = theElement;
	if (verifyDate(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Das Datum muss folgenden Aufbau besitzen%3A%0Add.mm.jjjj - Bsp.%3A 29.02.2008."));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}

// Location
function verifyLocation(str) {
	var filter = /[^a-zäöüß A-ZÄÖÜ\.\-]/;
	if (filter.test(str)) {
		return false;
	} else {
		return true;
	}
}

function chklocation(checkStr, theElement) {
	element = theElement;
	if (verifyLocation(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Der Ortsname darf nur Buchstaben enthalten"));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}

// CountryCode
function verifyCountryCode(str) {
	var filter = /[^0-9]/;
	if (filter.test(str)){
		return false;
	} else {
		return true;
	}
}

function chkcountrycode(checkStr, theElement) {
	element = theElement;
	if (verifyCountryCode(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Die Postleitzahl darf nur Zahlen enthalten"));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}

// Streetnumber
function verifyStreetNumber(str) {
	var filter = /[^a-zäöüß A-ZÄÖÜ0-9\-\/\\]/;
	if (filter.test(str)){
		return false;
	} else {
		return true;
	}
}

function chkstreetnumber(checkStr, theElement) {
	element = theElement;
	if (verifyStreetNumber(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Die Hausnummer darf nur Buchstaben und Zahlen beinhalten."));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}

// Street
function verifyStreet(str) {
	var filter = /[^a-zäöüß A-ZÄÖÜ\.\-]/;
	if (filter.test(str)){
		return false;
	} else {
		return true;
	}
}

function chkstreet(checkStr, theElement) {
	element = theElement;
	if (verifyStreet(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Der Strassenname darf nur Buchstaben%2C Punkte und Bindestriche enthalten"));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}

// Company
function verifyCompany(str) {
	var filter = /[^a-zäöüß A-ZÄÖÜ\+\&\.\0-9]/;
	if (filter.test(str)){
		return false;
	} else {
		return true;
	}
}

function chkcompany(checkStr, theElement) {
	element = theElement;
	if (verifyCompany(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Der Firmenname darf keine Sonderzeichen enthalten"));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}

// Forename
function verifyForename(str) {
	var filter = /[^a-zäöüß A-ZÄÖÜ]/;
	if (filter.test(str)){
		return false;
	} else {
		return true;
	}
}

function chkforename(checkStr, theElement) {
	element = theElement;
	if (verifyForename(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Ihr Vorname darf nur Buchstaben enthalten"));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}

// Surname
function verifySurname(str) {
	var filter = /[^a-zäöüß A-ZÄÖÜ]/;
	if (filter.test(str)){
		return false;
	} else {
		return true;
	}
}

function chksurname(checkStr, theElement) {
	element = theElement;
	if (verifySurname(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Ihr Nachname darf nur Buchstaben enthalten"));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}

// Fax
function verifyFaxNumber(str) {
	var filter = /[^0-9+]/;
	if (filter.test(str)){
		return false;
	} else {
		return true;
	}
}

function chkfaxnumber(checkStr, theElement) {
	element = theElement;
	if (verifyFaxNumber(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Die Faxnummer darf nur das + und die Zahlen 0-9 enthalten"));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}

// Telefon
function verifyTelephoneNumber(str) {
	if(str.length > 0){
		var filter = /[^0-9my+]/;
		if (filter.test(str)){
			return false;
		} else {
			return true;
		}
	} else {
		return false;
	}
}

function chktelephone(checkStr, theElement) {
	element = theElement;
	if (verifyTelephoneNumber(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Die Telefonnummer darf nur das + und die Zahlen 0-9 enthalten"));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}

// Email
function verifyEmail(str) {
	var filter = /[a-zA-Z0-9\_\.\-]+\@[a-zA-Z0-9\-\.]+\.[a-zA-z0.9]{2,4}/;
	if (filter.test(str)){
		return true;
	} else {
		return false;
	}
}

function chkmail(checkStr, theElement) {
	element = theElement;
	if (verifyEmail(checkStr)) {
		window.setTimeout('correctValue()', 0);
		return true;
	} else {
		alert(unescape("Bitte %FCberpr%FCfen Sie Ihre EMail Adresse auf Vollst%E4ndigkeit.%0AEs sind entweder unerlaubte Zeichen oder es fehlen Zeichen vor dem @ oder nach dem Punkt %0Aoder es sind zu viele Zeichen nach dem Punkt"));
		window.setTimeout('wrongValue()', 0);
		return false;
	}
}

// Text
function verifyText(str) {
	var filter = /.+/;
	if (filter.test(str)){
		return true;
	} else {
		return false;
	}
}

function chktext(checkStr, theElement) {
	element = theElement;
	if (verifyText(checkStr)) {
		window.setTimeout('correctValue()', 0);
		return true;
	} else {
		alert(unescape("Bitte vergessen Sie nicht einen Text zu schreiben"));
		window.setTimeout('wrongValue()', 0);
		return false;
	}
}

// Name
function verifyName(str) {
	var filter = /[^a-zäöüß A-ZÄÖÜ]/;
	if (filter.test(str)){
		return false;
	} else {
		return true;
	}
}

function chkname(checkStr, theElement) {
	element = theElement;
	if (verifyName(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Ihr Name darf nur Buchstaben enthalten"));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}

// Bankverbindung
function verifyBankAccountNumber(str) {
	var filter = /[^0-9]/;
	if (filter.test(str)){
		return false;
	} else {
		return true;
	}
}

function chkbankaccountnumber(checkStr, theElement) {
	element = theElement;
	if (verifyBankAccountNumber(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Die Kontonummer kann nur aus Zahlen bestehen"));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}

function verifyBankCode(str) {
	var filter = /[^0-9]/;
	if (filter.test(str)){
		return false;
	} else {
		return true;
	}
}

function chkbankcode(checkStr, theElement) {
	element = theElement;
	if (verifyBankCode(checkStr)) {
		window.setTimeout('correctValue()', 1);
		return true;
	} else {
		alert(unescape("Die BLZ kann nur aus Zahlen bestehen"));
		window.setTimeout('wrongValue()', 1);
		return false;
	}
}


// Handyvorwahl
function chkMobilePrefix(value,id){
	if(value < 0){
  		alert(unescape("Bitte w%E4hlen Sie eine Vorwahl"));
		return false;
	} else {
		return true;
	}
}

// Revierwahl
function chkRevier(value,id){
	if(value < 0){
  		alert(unescape("Bitte w%E4hlen Sie ein Revier"));
		return false;
	} else {
		return true;
	}
}

// Drop-Downs, Radio-Gruppen und Checkboxen

/*
radio buttons, checkboxen und selects pruefen

usage:
RADIO:
leerer forbiddenValue = ein radio button ist muss.
gesetzer forbiddenValue = gewaehlter radio-button-Wert darf nicht gleich forbiddenValue sein

CHECKBOX
bei checkbox ist forbiddenValue egal, sie muss geklickt sein

SELECT
gewaehlte Option darf nicht den Wert forbiddenValue haben

EXAMPLES
* z.B. formular mit Namen `f` darf nicht mit select sel = 0, radio rad = `leer` oder mit checkbox chk nicht-angeklickt abgeschickt werden 
<form name='f' onSubmit='return checkSpecialInput(this.name, [["sel", "0", "~Bitte etwas im DD waehlen"],["rad", "", "~Bitte einen Radio-Button checken"],["chk1", "", "~Bitte eine Checkboxklicken"]]);' method=POST action=test.htm>

* radio Button `rad` mit value=2 darf nicht gecheckt sein:
onSubmit='return checkSpecialInput(this.name, [["rad", "2", "~Bitte nicht den Radio-Button mit Wert 2 checken."]])'

* checkbox mit namen `chk` muss gecheckt sein:
onSubmit='return checkSpecialInput(this.name, [["chk", "", "~Bitte die Checkbox chk checken."]]'

*/

function obligatoryFields(formName, fieldsAndForbiddenValues) {

	for(i=0; i < fieldsAndForbiddenValues.length; i++) { // for each input to be checked

		// configure
		inputName = fieldsAndForbiddenValues[i][0];
		inputType = eval('document.forms.'+formName+'.'+fieldsAndForbiddenValues[i][0]+'.type');
		inputMessage =  fieldsAndForbiddenValues[i][2];
		// radio button groups do not have a type
		if (inputType == undefined) {
			inputType = 'radio';
		}
		forbiddenValue = fieldsAndForbiddenValues[i][1];

		// check and alert
		switch (inputType) {
			case 'select-one':
				if (eval('document.forms.'+formName+'.'+ inputName +'.options[document.forms.'+formName+'.'+inputName+'.selectedIndex].value') == forbiddenValue) {
					alert(inputMessage);
					return false;
				}
				break;

			case 'radio':
				radio = 'document.forms.'+formName+'.'+inputName;
				checkedOne = false;
				for (j=0; j < eval(radio+'.length'); j++) {
					if(eval(radio+'['+j+'].checked') == true) {
						checkedOne = true;
						if (eval(radio+'['+j+'].value') == forbiddenValue) {
							alert(inputMessage);
							return false;
						}
					}
				}
				if (checkedOne == false) {
					alert(inputMessage);
					return false;
				}


				break;

			case 'checkbox':
				if(eval('document.forms.'+formName+'.'+ inputName +'.checked') == false) {
					alert(inputMessage);
					return false;
				}
				break;
		}
	}

	return true;
}


// set inputbackground to white
function correctValue(){
	document.forms[formName].elements[element].style.backgroundColor='#FFFFFF';
	document.forms[formName].elements[element].value = document.forms[formName].elements[element].value;
	return true;
}

// set inputbackground to blue and focus it
function wrongValue()
{
	//alert(element);
	document.forms[formName].elements[element].focus();
	document.forms[formName].elements[element].style.backgroundColor='#C5DD19';
	document.forms[formName].elements[element].value = document.forms[formName].elements[element].value;
	return false;
}

