<!--
// date validating function
function formValidateDate(s_date,s_date_old,s_date_field_compare,s_place,s_element_name) {
	var re_date = /^\s*(\d{1,2})\.(\d{1,2})\.(\d{2,4})\s*$/;
	if (!re_date.exec(s_date)) {
		s_place.value = s_date_old;
		return s_date_old;
	}
	var n_day = Number(RegExp.$1),
		n_month = Number(RegExp.$2),
		n_year = Number(RegExp.$3);
	if (n_year < 100) {
		n_year += (n_year < this.a_tpl.centyear ? 2000 : 1900);
	}
	if (n_month < 1 || n_month > 12) {
		s_place.value = s_date_old;
		return s_date_old;
	}
	var d_numdays = new Date(n_year, n_month, 0);
	if (n_day > d_numdays.getDate()) {
		s_place.value = s_date_old;
		return s_date_old;
	}
	// Check that date is not smaller than min date
	var s_date_min = new Date(formParseDate(_oldDateValue['MinDate']));
	var s_date_check = new Date(formParseDate(s_date));
	if (s_date_min.getTime() > s_date_check.getTime()) {
		s_place.value = s_date_old;
		return s_date_old;
	}
	// keep date difference in given date field
	if (s_element_name != "") {
		var parseDate1 = new Date(formParseDate(s_date_old));
		var parseDate2 = new Date(formParseDate(document.getElementById(s_element_name).value));
		//return alert(parseDate1 + " - " + parseDate2);
		if (parseDate1 && parseDate2) {
			//Set 1 day in milliseconds
			var one_day = 1000*60*60*24;
			//Calculate difference btw the two dates, and convert to days
			//var parseDateDifference = Math.ceil( (parseDate2.getTime()-parseDate1.getTime()) / (one_day));
			//Calculate difference btw the two dates, and add it to given date value
			var parseDateNew = formGenerDate(new Date(parseDate2.getTime()-parseDate1.getTime()+formParseDate(s_date).getTime()));
			//var parseDateNew = formGenerDate(s_date);
			// Change old value for another date value
			_oldDateValue[s_element_name] = parseDateNew;
			// Change current value for another date value
			document.getElementById(s_element_name).value = parseDateNew;
			return s_date;
		}
	}
	// Check if date is smaller than in given date field
	if (s_date_field_compare != "") {
		if (_oldDateValue[s_date_field_compare] != "") {
			s_date_compare = _oldDateValue[s_date_field_compare];
			var parseCompareDate1 = new Date(formParseDate(s_date));
			var parseCompareDate2 = new Date(formParseDate(s_date_compare));
			if (parseCompareDate1.getTime() <= parseCompareDate2.getTime()) {
				s_place.value = s_date_old;
				return s_date_old;
			}
		}
	}
	s_date_old = s_date;
	return s_date;
}
// date parsing function
function formParseDate(s_date) {
	// Define what to return on false s_date_value
	var falseDateReturnValue = false;
	var re_date = /^\s*(\d{1,2})\.(\d{1,2})\.(\d{2,4})\s*$/;
	if (!re_date.exec(s_date)) {
		return falseDateReturnValue;
		//return alert ("Virheellinen päivämäärä: '" + s_date + "'.\nSallittu päivämäärämuoto on pp.kk.vvvv.")
	}
	var n_day = Number(RegExp.$1),
		n_month = Number(RegExp.$2),
		n_year = Number(RegExp.$3);
	if (n_year < 100) {
		n_year += (n_year < this.a_tpl.centyear ? 2000 : 1900);
	}
	if (n_month < 1 || n_month > 12) {
		return falseDateReturnValue;
		//return alert ("Virheellinen kuukausi: '" + n_month + "'.\nSallittu kuukauden numero on 01-12.");
	}
	var d_numdays = new Date(n_year, n_month, 0);
	if (n_day > d_numdays.getDate()) {
		return falseDateReturnValue;
		//return alert("Virheellinen kuukauden päivä: '" + n_day + "'.\nSallittu päivä valittuna kuukautena on 01 - " + d_numdays.getDate() + ".");
	}
	return new Date (n_year, n_month - 1, n_day);
}
// date generating function
function formGenerDate (d_date) {
	return (
		(d_date.getDate() < 10 ? '0' : '') + d_date.getDate() + "."
		+ (d_date.getMonth() < 9 ? '0' : '') + (d_date.getMonth() + 1) + "."
		+ d_date.getFullYear()
	);
}
// -->
