function checkForm(which) {
	tage = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30 ,31, 30, 31);
	var i = 0;
	var sj = 0;
	var kunde = true;
	var output = new String;
	var err = true;
	var alerttype = new String;
	var datum = true;
	var error = new Array();
	var errors = new Array(
			"   - Nachnamen\n",
			"   - Strasse\n",
			"   - PLZ\n",
			"   - Wohnort\n",
			"   - Abo-Nummer\n",
			"   - Telefonnummer\n",
			"   - E-Mail-Adresse\n",
			"   - eine Datumsangabe (TT.MM.JJJJ)\n",
			"   - Konto-Nummer\n",
			"   - Bankleitzahl\n",
			"   - Kreditinstitut\n",
			"   - Nachnamen des Adressaten\n",
			"   - Strasse des Adressaten\n",
			"   - PLZ des Adressaten\n",
			"   - Wohnort des Adressaten\n",
			"   - Zustelldauer\n",
			"   - Abo-Nummer des Adressaten\n",
			"   - eine weitere Datumsangabe (TT.MM.JJJJ)\n",
			"   - Land des Adressaten\n",
			"   - Abbuchungsrhytmus\n",
			"   - Rechnungsrhytmus\n",
			"   - Bestellkennung\n",
			"   - Auswahl der Prämie\n",
			"   - Auswahl der Prämie nur in Verbindung mit einem Anschluss-Abo\n");

	/*
	if (which.rueckfon.checked && !which.fon.value.match(/^([0-9-\+\.\\/ ]+)$/)) {
		error[error.length] = 4;
		err = false;
	}
	*/
	if (which.abotype.value == "geschenkabo" || which.abotype.value == "geschenk6fuer4" || which.abotype.value == "ostergeschenk" || which.abotype.value == "fruehling" || which.abotype.value == "bankverb" || which.abotype.value == "karneval2011"
			|| which.abotype.value == "nachsend" || which.abotype.value == "lieferunterbrechung"
			|| which.abotype.value == "bestellen" || which.abotype.value == "musical" || which.abotype.value == "herbst" || which.abotype.value == "karneval2012" || which.abotype.value == "helfen" || which.abotype.value == "umleitung"
			|| which.abotype.value == "probeabo" || which.abotype.value == "ostervorteil" || which.abotype.value == "umzug"
			|| which.abotype.value == "sparabo" || which.abotype.value == "sparvorteilabo"
			|| which.abotype.value == "epaper" || which.abotype.value == "epaperZusatz" || which.abotype.value == "epaperStudentZusatz" ) {
		if (!which.abtag.value.match(/^[0-9]{2}$/)) { // Datum: Tag
			error[0] = 7;
			err = false;
			datum = false;
		}
		if (!which.abmonat.value.match(/^[0-9]{2}$/)) { // Monat
			error[0] = 7;
			err = false;
			datum = false;
		}
		if (!which.abjahr.value.match(/^[0-9]{4}$/)) { // Jahr
			error[0] = 7;
			err = false;
			datum = false;
		}
		if (datum == true) { // korrektes Datumsangabe -> Schaltjahr und Existenz ueberpruefen
			if (which.abjahr.value % 400 == 0 || which.abjahr.value % 4 == 0) {
				sj = 1;
			}
			if (which.abjahr.value % 100 == 0) {
				sj = 0;
			}
			tage[1] += sj;
			if (which.abmonat.value < 0 || which.abmonat.value > 12) {
				error[0] = 7;
				err = false;
			}
			if (which.abtag.value < 0 || which.abtag.value > tage[which.abmonat.value - 1]) {
				error[0] = 7;
				err = false;
			}
			var heute = new Date();
			var abDatum = new Date(which.abjahr.value, which.abmonat.value-1, which.abtag.value);
			if ((abDatum.getTime() - heute.getTime()) / 86400000 < 3) { // Bearbeitungszeit
				alerttype = "bearbeitungszeit";
			}
		}
		else {
			error[0] = 7;
			err = false;
		}
	}
	if(which.abotype.value == "musical" || (which.abotype.value == "herbst" && which.weiterabo.checked == true)){
		if(which.praemie.value == "0"){
			error[error.length] = 22;
			err = false;
		}
		
	}
	
	if(which.abotype.value == "herbst" && which.weiterabo.checked == false && which.praemie.value != "0"){
		error[error.length] = 23;
		err = false;
	
	}

	if (which.abotype.value == "nachsend" || which.abotype.value == "lieferunterbrechung"
			|| which.abotype.value == "helfen" || which.abotype.value == "umleitung") {
		if (!which.bistag.value.match(/^[0-9]{2}$/)) { // " Datum wie oben
			error[1] = 17;
			err = false;
			datum = false;
		}
		if (!which.bismonat.value.match(/^[0-9]{2}$/)) {
			error[1] = 17;
			err = false;
			datum = false;
		}
		if (!which.bisjahr.value.match(/^[0-9]{4}$/)) {
			error[1] = 19;
			err = false;
			datum = false;
		}
		if (datum == true) {
			if (which.bisjahr.value % 400 == 0 || which.bisjahr.value % 4 == 0) {
				sj = 1;
			}
			if (which.bisjahr.value % 100 == 0) {
				sj = 0;
			}
			tage[1] += sj;
			if (which.bismonat.value < 0 || which.bismonat.value > 12) {
				error[1] = 17;
				err = false;
			}
			if (which.bistag.value < 0 || which.bistag.value > tage[which.bismonat.value - 1]) {
				error[1] = 17;
				err = false;
			}
			if (Date.UTC(which.abjahr.value, which.abmonat.value-1, which.abtag.value) >= Date.UTC(which.bisjahr.value, which.bismonat.value-1, which.bistag.value)) {
				alerttype = "datum";
			}
		}
		else {
			error[1] = 17;
			err = false;
		}
	}

	if (which.abotype.value == "geschenkabo" || which.abotype.value == "geschenk6fuer4" || which.abotype.value == "ostergeschenk") { // Geschenkabo auf Vorhandensein eines Abos ueberpruefen
		if (which.kunde[0].checked == true && which.zahlung[0].checked == true) {
		}
		else {
			kunde = false;
		}
	}
	

	if ((which.abotype.value == "geschenkabo" && kunde == false) || (which.abotype.value == "ostergeschenk" && kunde == false) || (which.abotype.value == "geschenk6fuer4" && kunde == false) || which.abotype.value == "bestellen" || which.abotype.value == "musical" || which.abotype.value == "herbst" || which.abotype.value == "karneval2012" || which.abotype.value == "probeabo"
			|| which.abotype.value == "sparabo" || which.abotype.value == "sparvorteilabo" || which.abotype.value == "ostervorteil") {
		if (which.zahlung[0].checked == true) { // Bankdaten fuer Bestellung
			if (which.ginst.value < 1) {
				error[error.length] = 10;
				err = false;
			}
			if (!which.blz.value.match(/^[0-9]{8}$/)) {
				error[error.length] = 9;
				err = false;
			}
			if (!which.kto.value.match(/^[0-9]/)) {
				error[error.length] = 8;
				err = false;
			}
		}
	}
	
	if (which.abotype.value == "karneval2011" ) {
		if (which.zahlung[0].checked == true) { // Bankdaten fuer Bestellung
			if (which.ginst.value < 1) {
				error[error.length] = 10;
				err = false;
			}
			if (!which.blz.value.match(/^[0-9]{8}$/)) {
				error[error.length] = 9;
				err = false;
			}
			if (!which.kto.value.match(/^[0-9]/)) {
				error[error.length] = 8;
				err = false;
			}
			if (which.brhythmus.checked == false) {
				error[error.length] = 19;
				err = false;
			}
			
		}
		if (which.zahlung[1].checked == true) { // Rechnungsrhytmus fuer Bestellung
			if (which.rrhythmus.checked == false) {
				error[error.length] = 20;
				err = false;
			}
			
		}
	}
	
	if(which.abotype.value == "ostervorteil" || which.abotype.value == "fruehling" || which.abotype.value == "herbst" || which.abotype.value == "karneval2012"){
		if(which.bestkennung.value == "0"){
			error[error.length] = 21;
			err = false;
		}
		
	}


	if ( which.abotype.value == "bankverb" || which.abotype.value == "epaper" ) { // Bankdaten ohne Auswahloption Rechnung
		if (which.ginst.value < 1) {
			error[error.length] = 10;
			err = false;
		}
		if (!which.blz.value.match(/^[0-9]{8}$/)) {
			error[error.length] = 9;
			err = false;
		}
		if (!which.kto.value.match(/^[0-9]/)) {
			error[error.length] = 8;
			err = false;
		}
	}

	if (which.ort.value < 1) { // Ort
		error[error.length] = 3;
		err = false;
	}
	if (!which.plz.value.match(/^[0-9]{5}$/)) { // PLZ
		error[error.length] = 2;
		err = false;
	}
	if (which.strasse.value < 1) { // Strasse
		error[error.length] = 1;
		err = false;
	}
	if (which.nachname.value < 1) { // Nachname
		error[error.length] = 0;
		err = false;
	}

	if ( which.abotype.value == "geschenkabo" || which.abotype.value == "geschenk6fuer4" || which.abotype.value == "ostergeschenk" || which.abotype.value == "umzug" || which.abotype.value == "umleitung"
			|| which.abotype.value == "nachsend"
			|| (which.abotype.value == "bankverb" && which.empf.checked == true) ) {
		if (which.ort2.value < 1) { // 2.Adresspruefung
			error[error.length] = 14;
			err = false;
		}
		if (which.abotype.value != "nachsend") {
			if (!which.plz2.value.match(/^[0-9]{5}$/)) {
				error[error.length] = 13;
				err = false;
			}
		}
		if (which.strasse2.value < 1) {
			error[error.length] = 12;
			err = false;
		}
		if (!(which.abotype.value == "umzug" || which.abotype.value == "nachsend")) {
			if (which.nachname2.value < 1) {
				error[error.length] = 11;
				err = false;
			}
		}
		if (which.abotype.value == "nachsend") {
			if (which.land2.value < 1) {
				error[error.length] = 18;
				err = false;
			}
		}
	}

	if ( which.abotype.value == "epaper" || which.abotype.value == "epaperZusatz" || which.abotype.value == "epaperStudentZusatz" ) {
		if (!which.email.value.match(/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$/)) {
			error[error.length] = 6;
			err = false;
		}
		if (which.agb_akzept.checked == false ) {
			alerttype = "agb";
		}
	}

	if ( which.abotype.value == "helfen" || which.abotype.value == "lieferunterbrechung" || which.abotype.value == "reklamation" ) {
		if (!which.email.value.match(/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$/)) {
			error[error.length] = 6;
			err = false;
		}
	}

	if ( !err ) {
		for (i; i < error.length; i++) {
			output = output + errors[error[i]];
		}
		alert("Das Formular kann nicht versandt werden,\nweil einige Felder fehlende oder\ninkorrekte Daten aufweisen.\nBitte überprüfen Sie:\n\n" + output);
		return false;
	} else {
		switch (alerttype) {
			case "bearbeitungszeit":
				alert("Wir benötigen 3 Tage Bearbeitungszeit für Ihren Auftrag.\nBitte korrigieren Sie die Datumsangabe.");
				return false;
			case "datum":
				alert("Das zweite Datum liegt vor dem ersten Datum.\nBitte korrigieren Sie diese Angabe.");
				return false;
			case "agb":
				alert("Auftragsannahme nur bei akzeptieren AGB.");
				return false;
		}
		return true;
	}
}
