﻿// Hintergrund für Fehler
var errorbackground="#d0d0ff";

// Fehlermeldungen festlegen
var message = new Object();
message["Vorname"] 		= 'Bitte tragen Sie Ihren Vornamen ein!';
message["Nachname"] 	= 'Bitte tragen Sie Ihren Nachnamen ein!';
message["Straße"] 		= 'Bitte tragen Sie Ihren Straßennamen ein!';
message["E-Mail"] 		= 'Bitte tragen Sie Ihre E-Mail-Adresse ein!';
message["Postleitzahl"] = 'Bitte tragen Sie Ihre Postleitzahl ein!';
message["Ort"] 			= 'Bitte tragen Sie Ihren Ort ein!';
message["Telefon"] 		= 'Bitte tragen Sie Ihre Telefonnummer ein!';
message["Anrede"] 		= 'Bitte wählen Sie Ihre Anrede aus!';
message["Hausnummer"]	= 'Bitte tragen Sie eine Hausnummer ein!';
message["Art_der_Abholung"]	= 'Bitte wählen Sie die Art der Abholung aus!';
message["Containergröße"]	= 'Bitte wählen Sie die Containergröße aus!';
message["zu_entsorgendes_Material"]	= 'Bitte wählen Sie das zu entsorgende Material aus!';
message["Datenverarbeitung_durch_die_AWB"] = 'Bitte stimmen Sie den Datenschutzbestimmungen zu!'

// PLZ Überprüfung
var zipfields = new Array('PLZ','plz','req_PLZ','req_plz','req_Postleitzahl','Abholung_Postleitzahl');

// E-Mail Überprüfung
var emailfields = new Array('req_Email','Email','req_E-mail','E-mail','req_EMail','EMail','req_E-Mail','E-Mail');

function custom_check_form(form_name){
	var fe = new Array();
	switch(form_name) {
		case "formSperrmuell":
		case "formGruenschnitt":
			fe[1] = document.getElementById('formAlternate');
			fe[1].style.background = "";
			fe[2] = document.getElementById('formAbhStraße');
			fe[2].style.background = "";
			fe[3] = document.getElementById('formAbhHausnummer');
			fe[3].style.background = "";
			fe[4] = document.getElementById('formAbhPostleitzahl');
			fe[4].style.background = "";
			fe[5] = document.getElementById('formAbhOrt');
			fe[5].style.background = "";
			if ((!fe[1].checked)&&(trim(fe[2].value)=='')&&(trim(fe[3].value)=='')&&(trim(fe[4].value)=='')&&(trim(fe[5].value)=='')) {
				alert('Bitte geben Sie eine Abholungsadresse an oder wählen Sie als Abholungsadresse die Absenderadresse!');
				fe[1].style.background = errorbackground;
				fe[1].focus();
				fe[2].style.background = errorbackground;
				fe[3].style.background = errorbackground;
				fe[4].style.background = errorbackground;
				fe[5].style.background = errorbackground;
				return false;
			}
			if ((!fe[1].checked)&&((trim(fe[2].value)=='')||(trim(fe[3].value)=='')||(trim(fe[4].value)=='')||(trim(fe[5].value)==''))) {
				if (trim(fe[2].value)=='') {
					alert('Bitte geben Sie den Straßennamen der Abholungsadresse an!');
					fe[2].style.background = errorbackground;
					fe[2].focus();
					return false;
				}
				if (trim(fe[3].value)=='') {
					alert('Bitte geben Sie die Hausnummer der Abholungsadresse an!');
					fe[3].style.background = errorbackground;
					fe[3].focus();
					return false;
				}
				if (trim(fe[4].value)=='') {
					alert('Bitte geben Sie die Postleitzahl der Abholungsadresse an!');
					fe[4].style.background = errorbackground;
					fe[4].focus();
					return false;
				}
				if (trim(fe[5].value)=='') {
					alert('Bitte geben Sie den Ort der Abholungsadresse an!');
					fe[5].style.background = errorbackground;
					fe[5].focus();
					return false;
				}
				return false;
			}
			break;
		case "formBiotonne":
			fe[1] = document.getElementById('form60l');
			fe[1].style.background = "";
			fe[2] = document.getElementById('form80l');
			fe[2].style.background = "";
			fe[3] = document.getElementById('form120l');
			fe[3].style.background = "";
			fe[4] = document.getElementById('form240l');
			fe[4].style.background = "";
			fe[5] = document.getElementById('form500l');
			fe[5].style.background = "";
			fe[6] = document.getElementById('form600l');
			fe[6].style.background = "";
			var result = 0;
			for (var i = 1; i < fe.length; i++) {
				var tmp = parseInt(fe[i].value);
				if (tmp > 0) result=result+tmp;
			}
			if (result == 0) {
				alert('Bitte geben Sie die Anzahl der Tonnen an!');
				fe[1].style.background = errorbackground;
				fe[1].focus();
				fe[2].style.background = errorbackground;
				fe[3].style.background = errorbackground;
				fe[4].style.background = errorbackground;
				fe[5].style.background = errorbackground;
				fe[6].style.background = errorbackground;
				return false;				
			}
			break;
		default:
			break;
	}
	return true;
}

function check_form(form_name){
	var res = true;
	var fe = document.getElementById(form_name).elements;
	for (var i=0; i<fe.length; ++i) {
		switch(fe[i].type) {
				case "text":
				case "textarea":
					fe[i].style.background = "";
					if ((fe[i].name.substr(0,4)=='req_') && (trim(fe[i].value)=='')) {
						if (message[fe[i].name.substring(4,fe[i].name.length)])
							alert(message[fe[i].name.substring(4,fe[i].name.length)])
						else
							alert('Bitte füllen Sie das markierte Feld aus!');
						fe[i].style.background = errorbackground;
						fe[i].focus();
						res = false;
					}
					if (trim(fe[i].value)!='') {
						if (res && inarray(fe[i].name,zipfields)) {
							var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
							if (!objRegExp.test(trim(fe[i].value))) {
								alert('Die eingegebene PLZ hat ein ungültiges Format. Bitte überprüfen Sie Ihre Eingabe!');
								fe[i].style.background = errorbackground;
								fe[i].focus();
								res = false;
							}							
						}
						if (res && inarray(fe[i].name,emailfields)) {
							var objRegExp  = /([\w-\.]+@([\w-]+\.)+[\w-]{2,6})/i;
							if (!objRegExp.test(trim(fe[i].value))) {
								alert('Die eingegebene E-Mail-Adresse hat ein ungültiges Format. Bitte überprüfen Sie Ihre Eingabe!');
								fe[i].style.background = errorbackground;
								fe[i].focus();
								res = false;
							}
						}						
					}
					break;
				case "checkbox":
					if (document.getElementById(fe[i].name)) document.getElementById(fe[i].name).style.background = "";
					if ((fe[i].name.substr(0,4)=='req_') && (fe[i].checked==false)) {
						if (message[fe[i].name.substring(4,fe[i].name.length)])
							alert(message[fe[i].name.substring(4,fe[i].name.length)])
						else
							alert('Bitte kreuzen Sie das markierte Feld an!');
						fe[i].style.background = errorbackground;
						fe[i].focus();
						res = false;
					}
					break;
				case "radio":
					if (document.getElementById(fe[i].name)) document.getElementById(fe[i].name).style.background = "";
					if (fe[i].name.substr(0,4)=='req_') {
						var radiogroup = fe[fe[i].name]; 
						res=false;
						for (j=0;j<radiogroup.length;++j) if(radiogroup[j].checked==true) res = true;
						if (res==false) {
							if (message[fe[i].name.substring(4,fe[i].name.length)])
								alert(message[fe[i].name.substring(4,fe[i].name.length)])
							else
								alert('Bitte wählen Sie eine der Optionen aus!');
							if (document.getElementById(fe[i].name)) document.getElementById(fe[i].name).style.background = errorbackground;
							radiogroup[0].focus();
						}
					}
					break;
				case "select-one":
					if (fe[i].name.substr(0,4)=='req_') {
						if (document.getElementById(fe[i].name)) document.getElementById(fe[i].name).style.background = "";
						var selectgroup = fe[fe[i].name]; 
						res=false;
						for (j=0;j<selectgroup.length;++j) if ((selectgroup[j].selected==true)&&(selectgroup[j].value!="")) res = true;
						if (res==false) {
							if (message[fe[i].name.substring(4,fe[i].name.length)])
								alert(message[fe[i].name.substring(4,fe[i].name.length)])
							else
								alert('Bitte wählen Sie einen Eintrag aus der Liste!');
							if (document.getElementById(fe[i].name)) document.getElementById(fe[i].name).style.background = errorbackground;
							fe[i].focus();
						}
					}
					break;
				default:
					break;
		} 
		if (res==false) break;
	}
	if (res) res = custom_check_form(form_name);
	return res;
}


// helper functions
function trim(which_val) {
	var this_val;
	this_val = which_val.replace(/^(\s)*/,"");
	this_val = this_val.replace(/(\s)*$/,"");
	return this_val;
}

function inarray(val,arr) {
	var el;
	if (arr.length==0) return false;
	var tmparr = arr.slice(0);
	while (el = tmparr.shift()) if (el==val) return true;
	return false;
}