/* Validator für Input Felder */

jQuery(document).ready(function() {


	//////////////////////////////////////////
	// Definition der Werte 				//
	//////////////////////////////////////////

	//TAG um die Fehlermeldung
	var var_errorTag = 'div';
	//Klasse der Fehlermeldung
	var var_errorClass = 'STYLE_inputError';
	//Klasse Pflichtfelder
	var var_requiredClass = 'required';	
	/*---------------------------------------------------------------------------*/
	//Klasse der Fehlermeldung bei Pflichfeldgruppen (nur ein ausgefülltes Feld wird benötigt)
	var var_errorGroupClass = 'STYLE_inputErrorGroup';
	//Klasse Pflichfeldgruppe (nur ein ausgefülltes Feld wird benötigt)
	var var_requiredGroupClass = 'validate-one-required';
	//Klasse für den Pflichtfeldgruppen Wrapper
	var var_requiredGroupWrapperClass = 'tx_powermail_pi1_fieldwrap_html';
	/*---------------------------------------------------------------------------*/
	//Klasse der Fehlermeldung bei PLZ Prüfung
	var var_zipErrorClass = 'STYLE_inputErrorGroup';
	//Klasse PLZ Prüfung
	var var_zipClass = 'zipValidation';
	
	//Klasse der Fehlermeldung bei PW Prüfung
	var var_passErrorClass = 'STYLE_inputErrorGroup';
	//Klasse PW Prüfung
	var var_passClass = 'passValidation';
	
	//Klasse der Fehlermeldung bei PW Prüfung
	var var_maxlength1000ErrorClass = 'STYLE_inputErrorGroup';
	//Klasse PW Prüfung
	var var_maxlength1000Class = 'maxlength1000';
	
	
	
	
	
	//////////////////////////////////////////
	// Sprachdefinitionen					//
	//////////////////////////////////////////
	
	//SPRACHE Deutsch
	if (digipetsLanguage == 0) {
		//Fehlermeldung
		var var_errorMsg = 'Bitte ausfüllen';
		//Fehlermeldung bei Pflichfeldgruppen (nur eins wird davon benötigt)
		var var_errorGroupMsg = 'Bitte markieren Sie eines dieser Felder.';
		var var_errorGroupMsgSingle = 'Bitte markieren Sie dieses Feld.';
		//Fehlermeldung bei nicht valider PLZ
		var var_zipErrorMsg = 'Bitte geben Sie die Postleitzahl korrekt ein, 4 (LUX) oder 5 (DE) Ziffern.';
		//Fehlermeldung bei nicht validem Passwort
		var var_passErrorMsg = 'Bitte geben Sie ein Passwort mit mindestens 6 Zeichen ein.';
		//Fehlermeldung bei nicht Textfeldern mit Überlänge
		var var_maxlength1000ErrorMsg = 'Bitte geben Sie weniger als 1000 Zeichen ein.';
	}
	//Sprache Englisch
	if (digipetsLanguage == 1) {
		//Fehlermeldung
		var var_errorMsg = 'Please fill field';
		//Fehlermeldung bei Pflichfeldgruppen (nur eins wird davon benötigt)
		var var_errorGroupMsg = 'Please click on at least one of these fields.';
		var var_errorGroupMsgSingle = 'Please accept our declaration of privacy.';
	}
	//Sprache Französisch
	if (digipetsLanguage == 2) {
		//Fehlermeldung
		var var_errorMsg = 'Bitte ausfüllen';
		//Fehlermeldung bei Pflichfeldgruppen (nur eins wird davon benötigt)
		var var_errorGroupMsg = 'Bitte markieren Sie eines dieser Felder.';
		var var_errorGroupMsgSingle = 'Bitte bestätigen Sie die Datenschutzerklärung.';
	}

	jQuery.fn.validateForm = function() {	
		
		//////////////////////////////////////////
		// DONT EDIT AFTER THIS 				//
		// UNLESS YOU KNOW WHAT YOU'RE DOING    //
		//////////////////////////////////////////
		
			
			
		
			var var_returnedClear = false; //Variable zum Abfragen, ob ein Feld leergelassen wurde
			var var_returnedGroupClear = false;
			var var_returnedZIPvalid = true;
			var var_returnedMaxlength1000valid = true;
			var var_returnedPWvalid = true;
			var var_returnedGroupClearArray = Array();
			//var var_returnedGroupClear = true; //Variable zu Abfragen, ob ein Feld einer Feldgruppe leergelassen wurde
	
	
	
			// PFLICHTFELDER //
			
			/* Alle Pflichfelder werden durchgegangen */
			if(typeof jQuery(this).parents('form:first').find('input.'+var_requiredClass).val() != 'undefined') {
				jQuery(this).parents('form:first').find('input.'+var_requiredClass).each(function(i){ //Alle Pflichtfelder innerhalb des Forms des Buttons werden abgefragt
					if (jQuery(this).val() == '') { //Wenn Feldwert leer ist
		
						if (jQuery(this).next().text() != var_errorMsg) {
							jQuery(this).after("<"+var_errorTag+" class='"+var_errorClass+"'>"+var_errorMsg+"</"+var_errorTag+">");	//Wenn Error Nachricht kein Inhalt von nächstem Element ist, wird die Error Nachricht hinter das Inputfeld hinzugefügt
						}
						var_returnedClear = true; // Es wurde ein Feld leergelassen, also wird Wert True gesetzt
					} else {
						if (jQuery(this).next().text() == var_errorMsg) {
							jQuery(this).next().remove();
						}
					}
				});	
			}
			
			
			
			// PFLICHTFELDERGRUPPE //
			
			/* Alle Pflichtfelder, bei denen jedoch nur ein Wert ausgefüllt sein muss, werden durchgegangen */
			if (typeof jQuery(this).parents('form:first').find('input.'+var_requiredGroupClass).val() != 'undefined') {
				
				jQuery(this).parents('form:first').find('input.'+var_requiredGroupClass+'[type="checkbox"]').each(function(i){ //Alle Pflichtfelder innerhalb des Forms des Buttons werden abgefragt
					
					var var_currentFieldID = jQuery(this).attr('id').substr(3,jQuery(this).attr('id').length); //liest die GruppenID und die SubID aus aus
					var_currentFieldID = var_currentFieldID.split('_'); //splittet die GruppenID und die SubID
					if (var_returnedGroupClearArray[var_currentFieldID[0]] != var_currentFieldID[0]+'_false' && jQuery(this).is(':checked')) { //Wenn es mindestens ein Feld der ID gecheckt ist und check noch nicht gesetzt wurde
						var_returnedGroupClearArray[var_currentFieldID[0]] = var_currentFieldID[0]+'_false';
					} else if(var_returnedGroupClearArray[var_currentFieldID[0]] != var_currentFieldID[0]+'_false') {  //Wenn das Feld nicht gecheckt ist und in der Gruppe bisher noch keins gecheckt war
						var_returnedGroupClearArray[var_currentFieldID[0]] = var_currentFieldID[0]+'_true';
					}
				});
				
			} else {
				var_returnedGroupClear = false;
			}
			
			jQuery.each(var_returnedGroupClearArray, function(index, groupCleared) { 
				if (typeof groupCleared == 'undefined') {
					groupCleared = '';
				}
				groupCleared = groupCleared.split('_');
				if (groupCleared[1] == "true" && jQuery('#powermaildiv_uid'+groupCleared[0]).find('.'+var_errorGroupClass).text() != var_errorGroupMsg && jQuery('#powermaildiv_uid'+groupCleared[0]).find('.'+var_errorGroupClass).text() != var_errorGroupMsgSingle) {
					if (jQuery('#powermaildiv_uid'+groupCleared[0]).find('input[type=checkbox]').length < 2) {
						jQuery('#powermaildiv_uid'+groupCleared[0]).append("<div class='Break'></div><"+var_errorTag+" class='"+var_errorGroupClass+"'>"+var_errorGroupMsgSingle+"</"+var_errorTag+">"); //Text, wenn nur EINE Checkbox vorhanden ist
					} else {
						jQuery('#powermaildiv_uid'+groupCleared[0]).append("<div class='Break'></div><"+var_errorTag+" class='"+var_errorGroupClass+"'>"+var_errorGroupMsg+"</"+var_errorTag+">"); //Text, wenn MEHRERE Checkboxen vorhanden ist	
					}
				
				} else if (groupCleared[1] == "false" && (jQuery('#powermaildiv_uid'+groupCleared[0]).find('.'+var_errorGroupClass).text() == var_errorGroupMsg || jQuery('#powermaildiv_uid'+groupCleared[0]).find('.'+var_errorGroupClass).text() == var_errorGroupMsgSingle)) {
					jQuery('#powermaildiv_uid'+groupCleared[0]).find('.'+var_errorGroupClass).remove(); //entfernt die Ausfüll-Bemerktung, wenn sie nachdem sie erschienen ist, noch steht.
				}
				if (groupCleared[1] == "false" && var_returnedGroupClear != true) {
					var_returnedGroupClear = false; //Setzt Variable auf "false" wenn ALLEN Gruppenpflichtfeld was angehakt wurde 
				} else if (groupCleared[1] == "true") {
					var_returnedGroupClear = true; //Setzt Variable auf "true" wenn bei KEINEM Gruppenpflichtfeld was angehakt wurde 
				}
								
			});
			
			
			
			// ZIP/PLZ VALIDIERUNG //
			
			if (typeof jQuery(this).parents('form:first').find('input.'+var_zipClass).val() != 'undefined') {
				
				if (digipetsLanguage == 0) {
					jQuery(this).parents('form:first').find('input.'+var_zipClass).each(function(){
						var numberCheck = isNaN(jQuery(this).val());
						if ((jQuery(this).val() != "" && jQuery(this).val().length != 5 && jQuery(this).val().length != 4) || (jQuery(this).val() != "" && numberCheck == true)) {
							if (jQuery(this).next().text() != var_zipErrorMsg) {
								jQuery(this).after("<"+var_errorTag+" class='"+var_zipErrorClass+"'>"+var_zipErrorMsg+"</"+var_errorTag+">");	//Wenn Error Nachricht kein Inhalt von nächstem Element ist, wird die Error Nachricht hinter das Inputfeld hinzugefügt
							}
							var_returnedZIPvalid = false;
						} else {
							if (jQuery(this).next().text() == var_zipErrorMsg) {
								jQuery(this).next().remove();
							}
						}
					});
				}
				
			}
			
			// Textarea Maxlength VALIDIERUNG BEI ÄNDERUNG //

			jQuery('.'+var_maxlength1000Class).each(function(){
				if (jQuery(this).val().length > 1000) {
					if (jQuery(this).next().text() != var_maxlength1000ErrorMsg) {
						jQuery(this).after("<"+var_errorTag+" class='"+var_maxlength1000ErrorClass+"'>"+var_maxlength1000ErrorMsg+"</"+var_errorTag+">");	//Wenn Error Nachricht kein Inhalt von nächstem Element ist, wird die Error Nachricht hinter das Inputfeld hinzugefügt
					}
					var_returnedMaxlength1000valid = false;
				} else {
					if (jQuery(this).next().text() == var_maxlength1000ErrorMsg) {
						jQuery(this).next().remove();
					}
				}
			});
			
			// PASSWORT VALIDIERUNG //	
			
			jQuery(this).parents('form:first').find('input.'+var_passClass).each(function(){
				if (jQuery(this).val().length < 6) {
					var_returnedPWvalid = false;
					if (jQuery(this).next().text() != var_passErrorMsg) {
						jQuery(this).after("<"+var_errorTag+" class='"+var_passErrorClass+"'>"+var_passErrorMsg+"</"+var_errorTag+">");	//Wenn Error Nachricht kein Inhalt von nächstem Element ist, wird die Error Nachricht hinter das Inputfeld hinzugefügt
					}
				} else {
					if (jQuery(this).next().text() == var_passErrorMsg) {
						jQuery(this).next().remove();
					}
				}
			});
			
			
			// AUSGABE //
			
			if (var_returnedClear == true || var_returnedGroupClear == true || var_returnedZIPvalid == false || var_returnedMaxlength1000valid == false || var_returnedPWvalid == false) {
				return false; //Wenn Variablenwert True (als wenn mindestens ein Feld leer war, wird Buttonaktion nicht ausgeführt)
			}		
						
	}
	
	/* Aktionen beim Drücken eines Buttons */
	jQuery('button[type=submit], input[type=submit]').not('.noValidation').each(function(i) { //Aktion auf alle Buttons und Inputfelder mit dem Typ Submit setzen
		jQuery(this).click(function (e) {
			var valform = jQuery(this).validateForm();
			if (valform == false) {
				return false;
			}
		});	
	});
	
	// ZIP/PLZ VALIDIERUNG BEI ÄNDERUNG //
	
		if (digipetsLanguage == 0) {
			jQuery('input.'+var_zipClass).each(function(){
				jQuery(this).change(function(){
					var numberCheck = isNaN(jQuery(this).val());
					if ((jQuery(this).val() != "" && jQuery(this).val().length != 5 && jQuery(this).val().length != 4) || (jQuery(this).val() != "" && numberCheck == true)) {
						if (jQuery(this).next().text() != var_zipErrorMsg) {
							jQuery(this).after("<"+var_errorTag+" class='"+var_zipErrorClass+"'>"+var_zipErrorMsg+"</"+var_errorTag+">");	//Wenn Error Nachricht kein Inhalt von nächstem Element ist, wird die Error Nachricht hinter das Inputfeld hinzugefügt
						}
					} else {
						if (jQuery(this).next().text() == var_zipErrorMsg) {
							jQuery(this).next().remove();
						}
					}
				});
			});
		}	
		
	// Textarea Maxlength VALIDIERUNG BEI ÄNDERUNG //
	
	jQuery('.'+var_maxlength1000Class).each(function(){
		jQuery(this).change(function(){
			if (jQuery(this).val().length > 1000) {
				if (jQuery(this).next().text() != var_maxlength1000ErrorMsg) {
					jQuery(this).after("<"+var_errorTag+" class='"+var_maxlength1000ErrorClass+"'>"+var_maxlength1000ErrorMsg+"</"+var_errorTag+">");	//Wenn Error Nachricht kein Inhalt von nächstem Element ist, wird die Error Nachricht hinter das Inputfeld hinzugefügt
				}
			}	else {
				if (jQuery(this).next().text() == var_maxlength1000ErrorMsg) {
					jQuery(this).next().remove();
				}
			}
		});
	});
	

});
