/**
 * validator.js
 * 
 * author: Johannes Ehm
 * version: 2.2.1
 * since: 24/03/2009 
 **/

function validateRequiredValue(value) {
	
	if(value.length > 0) {
		return true;
	}
	else {
		return false;
	}
	
}

function validateNumeric(value) {
	
	var pattern = /^\d*$/;
	return pattern.test(value);
	
}

function validateBankleitzahl(value) {
	
	var pattern = /^(\d{8}|\d{5}|\d{3}\s{1}\d{3}\s{1}\d{2})$/;
	return pattern.test(value);
	
}

function validateEmail(email) {
	
	var pattern = /^[\w.!#%&\*\/=\?\^\`\{\|\}\~+-]{1,64}\@[\w.-]{1,255}\.[a-z]{2,6}$/i;
	return pattern.test(email);
	
}

function validateJahr(jahr) {
	
	var pattern = /^\d{4}$/;
	return pattern.test(jahr);
	
}

function validatePlz(plz) {

	var pattern = /^\d{5}|\d{4}$/;
	return pattern.test(plz);
	
}

function validateAge(geburtsdatum) {

	var geburtsdaten = geburtsdatum.split(/[/.-]/)
	var day = geburtsdaten[0];
	var month = geburtsdaten[1];
	var year = geburtsdaten[2];
	var pattern = /^\D$/;
	
	if(pattern.test(day) || pattern.test(month) || pattern.test(year)) {
	
		return false;
		
	}
	else {
		
		if(day > 31 || day <= 0 || month > 12 || month <= 0 || year > 2100 || year < 1900) {
			
			return -1;
			
		}
		
		date = new Date();
		var currentDay = date.getDate();
		var currentMonth = date.getMonth();
		var currentYear = date.getFullYear();
		
		if( ((currentYear - year) > 18) || 
			((currentYear - year) == 18 && (currentMonth - month) > 0) || 
			((currentYear - year) == 18 && (currentMonth - month) == 0 && (currentDay - day) >= 0) ) {
			
			// birthdate is over 18
			return 2;
		
		}
		else if( ((currentYear - year) > 16) || 
			((currentYear - year) == 16 && (currentMonth - month) > 0) || 
			((currentYear - year) == 16 && (currentMonth - month) == 0 && (currentDay - day) >= 0) ) {

			// birthdate is over 16	
			return 1;	
		
		}
		else if( ((currentYear - year) < 16) || 
			((currentYear - year) == 16 && (currentMonth - month) < 0) || 
			((currentYear - year) == 16 && (currentMonth - month) == 0 && (currentDay - day) <= 0) ) {
		
			// birthdate is under 16
			return 0;
		
		}
		else {
		
			return false;
		
		}
		
	}

}