
	function form_date_age_difference(from, to) {
		var fy = from.getYear();
		var fm = from.getMonth();
		var fd = from.getDay();
		var ty = to.getYear();
		var tm = to.getMonth();
		var td = to.getDay();
		var age;
		if ((tm > fm) || (tm == fm && td > fd)) {
			return ty - fy;
		} else {
			return ty - fy - 1;
		}
	}

	function form_check_date_format(date_string, verify, max_age) {
		if (verify == undefined) {
			verify = false;
		}
		var rx = /^\s*(\d\d)\.(\d\d)\.(\d\d\d\d)\s*$/; 
		var matches = date_string.match(rx);
		if (matches === null) {
			return false;
		} else {
			if (!verify) {
				return true;
			}
			var day = parseInt(matches[1]);
			var month = parseInt(matches[2])-1;
			var year = parseInt(matches[3]);
			var date = new Date(year, month, day);
			var today = new Date();
			
			var agediff = form_date_age_difference(date, today);
						
			if (!(max_age > 0)) {
				return agediff >= 0;
			} else {
				return agediff >=0 && agediff <= max_age;
			}
		}
	}
	