$(document).ready(function(){
	
	var lang_error_pre  = '<div class="validation_message"><span>Folgende Felder sind Pflichtfelder und müssen ausgefüllt werden:</span><ul>';
	var lang_error_post = '</ul></div>';
	
	var lang_validation_pre  = '<div class="validation_message2"><span>Folgenden Felder beinhalten ungültige Werte:</span><ul>';
	var lang_validation_post = '</ul></div>';
	
	var lang_fielderror_pre = 'Das Feld "';
	var lang_fielderror_mail = '" ist keine gültige E-Mail-Adresse';
	var lang_fielderror_int = '" darf nur Zahlen beinhalten';
	var lang_fielderror_text = '" darf nur Buchstaben beinhalten';
	
	
	$('.formular form').submit(function(){
		var errorFields = '';
		var validatedFields = '';
		
		$('div.formular .validation_message, div.formular .validation_message2').remove();
		
		$(this).find('.required').each(function(){
			if( $.trim( $(this).val() ) == '' ) {
				$(this).parent().parent().addClass('validation_error');
				errorFields = errorFields + '<li>' + $(this).parent().prev('td.label').text().replace(/\*/gi, '') + '</li>';
			}
			else {
				$(this).parent().parent().removeClass('validation_error');
			}
		});
		
		$(this).find('.validate-email').each(function(){
			//Überspringe Feld wenn es schon in errorFields vorhanden ist
			if(errorFields.indexOf($(this).parent().prev('td.label').text().replace(/\*/gi, '')) > -1) return true;
			
			//Oder wenn es leer ist
			if( $.trim( $(this).val() ) == '' ) return true;
			
			if(!$(this).val().match(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b/gi)) {
				$(this).parent().parent().addClass('validation_error');
				validatedFields = validatedFields + '<li>' + lang_fielderror_pre + $(this).parent().prev('td.label').text().replace(/\*/gi, '') + lang_fielderror_mail + '</li>';
			}
			else {
				$(this).parent().parent().removeClass('validation_error');
			}	
		});

		$(this).find('.validate-number').each(function(){
			//Überspringe Feld wenn es schon in errorFields vorhanden ist
			if(errorFields.indexOf($(this).parent().prev('td.label').text().replace(/\*/gi, '')) > -1) return true;
			
			//Oder wenn es leer ist
			if( $.trim( $(this).val() ) == '' ) return true;
		
			if($(this).val().match(/[^0-9]/gi)) {
				$(this).parent().parent().addClass('validation_error');
				validatedFields = validatedFields + '<li>' + lang_fielderror_pre + $(this).parent().prev('td.label').text().replace(/\*/gi, '') + lang_fielderror_int + '</li>';
			}
			else {
				$(this).parent().parent().removeClass('validation_error');
			}	
		});

		$(this).find('.validate-alpha').each(function(){
			//Überspringe Feld wenn es schon in errorFields vorhanden ist
			if(errorFields.indexOf($(this).parent().prev('td.label').text().replace(/\*/gi, '')) > -1) return true;
		
			//Oder wenn es leer ist
			if( $.trim( $(this).val() ) == '' ) return true;
			
			if($(this).val().match(/[^a-zäöüß€]/gi)) {
				$(this).parent().parent().addClass('validation_error');
				validatedFields = validatedFields + '<li>' + lang_fielderror_pre + $(this).parent().prev('td.label').text().replace(/\*/gi, '') + lang_fielderror_text + '</li>';
			}
			else {
				$(this).parent().parent().removeClass('validation_error');
			}	
		});

		
		if(errorFields || validatedFields) {
			if(errorFields) $(this).before( lang_error_pre + errorFields + lang_error_post );
			if(validatedFields) $(this).before( lang_validation_pre + validatedFields + lang_validation_post);
			return false;
		}
		else {
			return true;
		}
	
	});	
	
});
