// Script use for validation of newsletter, contact form and client satisfaction survey... And probably in Large Hadron Collider.

REGEX_BLANK = /^\s*$/;

var classError			= 'error_field';
var field_validation	= {
	'phone'		: /^[0-9+()-\/\s]+$/,
	'email'		: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
};

var filed_messages 		= {
	firm			: 'Bitte geben Sie Ihre Firmenname ein',
	firmname		: 'Bitte geben Sie Ihre Firmenname ein',
	vorname			: 'Bitte geben Sie Ihren Vornamen ein',
	first_name		: 'Bitte geben Sie Ihren Vornamen ein',
	nachname		: 'Bitte geben Sie Ihren Nachname ein',
	last_name		: 'Bitte geben Sie Ihren Nachname ein',
	address			: 'Bitte geben Sie Ihren Straße und Hausnummer ein',
	postcode_city	: 'Bitte geben Sie Ihren PLZ / Ort ein',
	country			: 'Bitte wählen Sie Ihren Land ein',
	phone			: 'Bitte geben Sie Ihren Telefon ein',
	email			: 'Bitte geben Sie Ihren E-Mail ein',
	message			: 'Bitte geben Sie Ihren Ihre Nachricht ein',
	anrede			: 'Bitte wählen Sie Ihren Geschlecht ein',
	terms			: 'Sie sollten akzeptieren Sie unsere Hinweise zum Datenschutz'
}


function errorMessage(show, parent, field){
	var container = $('p', parent);

	if(container.length){
		$('#error_message').css('display', (show ? 'block' : 'none'));
		container.css('display', (show ? 'block' : 'none'));
	}else if(filed_messages[field] && show){
		$('#error_message').css('display', 'block');
		$(parent).append('<p class="red_font marg_t">' + filed_messages[field] + '</p>');
	}
}


function validate(checkBoxes){
	var errors = false;

	if($(document.body).hasClass('client_satisfaction')){
		if(!$('#reply_to_message').attr('checked')){
			document.getElementById('form_contakt').submit();
			return;
		}
	}

	$(checkBoxes).each(function(){
		var name	= $(this).attr('name');
		var parent	= $(this).parent();

		if(this.type === 'checkbox'){
			if(!this.checked){
				errorMessage(true, parent, name);
				$(this).focus();
				$(this).addClass(classError);

				errors = true;

				return false;
			}else{
				errorMessage(false, parent, name);
				$(this).removeClass(classError);
			}
		}else if(this.custom_combo_box){
			if(this.value.match(REGEX_BLANK)){
				errorMessage(true, parent, name);
				$(this).focus();
				$(this.custom_combo_box).addClass(classError);

				errors = true;

				return false;
			}else{
				errorMessage(false, parent, name);
				$(this.custom_combo_box).removeClass(classError);
			}
		}else{
			if(
				this.value.match(REGEX_BLANK) ||
				(field_validation[name] && !this.value.match(field_validation[name]))
			){
				errorMessage(true, parent, name);
				$(this).focus();
				$(this).addClass(classError);

				errors = true;

				return false;
			}else{
				errorMessage(false, parent, name);
				$(this).removeClass(classError);
			}
		}
	});

	if(errors == true){
		return false;
	}else{
		document.getElementById('form_contakt').submit();
	}
}

function checkFields(){
	var valForm = document.getElementById('form_contakt');

	if($(document.body).hasClass('client_satisfaction')){
		var allForms = $('#first_name, #last_name, #email');

		$('#reply_to_message').click(function(){
			if(!this.checked){
				allForms.each(function(){
					var name	= $(this).attr('name');
					var parent	= $(this).parent();

					errorMessage(false, parent, name);
					$(this).removeClass(classError);
				});
			}
		});
	}else if($(document.body).hasClass('news_newsletter')){
		var allForms = $('.lightblue_box form input.req');
	}else{
		var allForms = $('.lightblue_box form input.req, .lightblue_box form textarea.req, #country, #title, #sex');
	}

	if(valForm){
		valForm.onsubmit = function(){
			validate(allForms);
			return false;
		}
	}
}

window.onload = checkFields;
