$(document).ready( function() {
	
	$.validator.addMethod(
		'regex', 
		function(value, element, regexp) {
			
			var check = false;
			var re = new RegExp(regexp);
			
			return this.optional(element) || re.test(value);
			
		},
		'Check input'
	);
	
	// V1 + N24
	var lightboxValidator = $('form-check-is-disabled').validate( {
		
		debug: false,
		
		errorContainer: $('.lightbox .box_error'),
		
		errorElement: 'em',
		
		errorPlacement: function(error, element) {
			
			// messages now loaded from js, maybe transfer to inline html?
			
			if(!element.parents('.formfield').length && element.is(':radio')) 
				error.prependTo(element.parents('dl:first')).
					wrap('<div class="formfield level-1 alert"></div>'); // make generic
			else 
				error.prependTo(element.parents('.formfield').addClass('alert'));
			
		},
		
		showErrors: function(errorMap, errorList) {
			
			this.defaultShowErrors();
			
			$('.lightbox .formfield em:empty, .lightbox .formfield em:hidden').remove();
			
			$('.formfield').each( function() {
				if(!$(this).find('em').length) 
					$(this).removeClass('alert');
			} );
			
			if(!$('.lightbox .formfield em').length) 
				$('.lightbox .box_error').hide();
			
		},
		
		rules: {
			zipcode: {
				regex: /^[1-9][0-9]{3}([0-9]|[a-z]{2})?$/i
			},
			housenumber: {
				regex: /^[\w\-\/ ]+$/
			},
			housenumber_addition: {
				regex: /^[\w\-\/ ]+$/
			},
			askingprice: {
				regex: /^[\d,\.]+$/
			},
			desiredsellprice: {
				regex: /^[\d,\.]+$/
			},
			emailaddress: {
				email: true
				// remote: 'email.aspx'
			},
			phonenumber: {
				regex: /^[0-9\(\)\+\-\s]+$/
			},
			DOB_Day: {
				min: 1,
				max: 31
			},
			DOB_Year: {
				regex: /^19|20\d\d$/
			},
			password: {
				regex: /^(?=[\w@#$%^&]{6,})(?=.*?\d{2})(?=.*?[a-z]{2})[\w@#$%^&]*$/i
			},
			retypepassword: {
				equalTo: '#password'
			},
			sendby: {
				required: '#contactme-b:checked'
			},
			zipcode_2: {
				required: '#chkManualStreetCity:checked',
				regex: /^[1-9][0-9]{3}([0-9]|[a-z]{2})?$/i
			},
			housenumber_2: {
				regex: /^[\w\-\/ ]+$/
			},
			housenumber_addition_2: {
				regex: /^[\w\-\/ ]+$/
			},
			zipcode_3: {
				required: '#contactme-c:checked',
				regex: /^[1-9][0-9]{3}([0-9]|[a-z]{2})?$/i
			},
			housenumber_3: {
				regex: /^[\w\-\/ ]+$/
			},
			housenumber_addition_3: {
				regex: /^[\w\-\/ ]+$/
			},
			appointment_office: {
				required: '#contactme-d:checked'
			}
		},
		
		messages: {
			zipcode: {
				required: 'Vul een geldige postcode in',
				regex: 'Vul een geldige postcode in'
			},
			housenumber: {
				required: 'Vul een geldig huisnummer in',
				regex: 'Vul een geldig huisnummer in'
			},
			housenumber_addition: {
				required: 'Vul een geldige toevoeging in',
				regex: 'Vul een geldige toevoeging in'
			},
			askingprice: {
				required: 'Vraagprijs: Vul de gewenste vraagprijs in',
				regex: 'Vraagprijs: alleen hele getallen zijn toegestaan'
			},
			desiredsellprice: {
				regex: 'Koopprijs: alleen hele getallen zijn toegestaan'
			},
			firstname: {
				required: 'Vul uw voorletter(s) in'
			},
			lastname: {
				required: 'Vul uw achternaam in'
			},
			gender: {
				required: 'Geef aan of u man of vrouw bent'
			},
			emailaddress: {
				required: 'Vul uw email adres in',
				email: 'Vul een geldig email adres in',
				remote: 'Dit email adres staat reeds geregistreerd, vul een ander email adres in'
			},
			phonenumber: {
				required: 'Vul een geldig telefoonnummer in',
				regex: 'Toegestane karakters zijn getallen 0 t/m 9 ( ) + -'
			},
			DOB_Day: {
				required: 'Vul een geldige dag in',
				min: 'Vul een geldige dag in',
				max: 'Vul een geldige dag in'
			},
			DOB_Month: {
				required: 'Selecteer een maand'
			},
			DOB_Year: {
				required: 'Vul een geldig jaar in',
				regex: 'Vul een geldig jaar in'
			},
			password: {
				required: 'Vul een wachtwoord in',
				regex: 'Vul een wachtwoord in bestaande uit min. 2 cijfers en min. 2 letters'
			},
			retypepassword: {
				required: 'Herhaal het wachtwoord',
				equalTo: 'Het wachtwoord is niet gelijk'
			},
			sendby: {
				required: 'Selecteer hoe u de informatie wilt ontvangen'
			},
			zipcode_2: {
				required: 'Vul een geldige postcode in',
				regex: 'Vul een geldige postcode in'
			},
			housenumber_2: {
				required: 'Vul een geldig huisnummer in',
				regex: 'Vul een geldig huisnummer in'
			},
			housenumber_addition_2: {
				required: 'Vul een geldige toevoeging in',
				regex: 'Vul een geldige toevoeging in'
			},
			zipcode_3: {
				required: 'Vul een geldige postcode in',
				regex: 'Vul een geldige postcode in'
			},
			housenumber_3: {
				required: 'Vul een geldig huisnummer in',
				regex: 'Vul een geldig huisnummer in'
			},
			housenumber_addition_3: {
				required: 'Vul een geldige toevoeging in',
				regex: 'Vul een geldige toevoeging in'
			},
			appointment_office: {
				required: 'Selecteer een kantoor in uw regio'
			},
			time_question: {
				required: 'Vul minimaal één tijdstip in waarop u bereikbaar bent'
			}
		}
		
	} );
	
} );