﻿var one_day=1000*60*60*24
var one_month=1000*60*60*24*30
var one_year=1000*60*60*24*30*12

function display_age(id_string) {

	var day = '';
	var mon = '';
	var yr = '';
	
	day = document.getElementById('geburtsdatum-' + id_string + '-dd').value;
	mon = document.getElementById('geburtsdatum-' + id_string + '-mm').value;
	yr = document.getElementById('geburtsdatum-' + id_string).value;

	if (check_date(day + '.' + mon + '.' + yr)) {
		document.getElementById('geburtsdatum' + id_string + '_alter').value = calculate_age(yr,mon,day,"Jahre",0,"rounddown");		
		datePickerController.datePickers['geburtsdatum-' + id_string].setDateFromInput;
	}
	else {
		document.getElementById('geburtsdatum' + id_string + '_alter').value = "fehlerhaft";
	}


}

function calculate_age(yr, mon, day, unit, decimal, round){

	today=new Date()
	var pastdate=new Date(yr, mon-1, day)
	
	var countunit=unit
	var decimals=decimal
	var rounding=round
	
	finalunit=(countunit=="Tage")? one_day : (countunit=="Monate")? one_month : one_year
	decimals=(decimals<=0)? 1 : decimals*10
	
	if (unit!="Jahre"){
		if (rounding=="rounddown")
			return Math.floor((today.getTime()-pastdate.getTime())/(finalunit)*decimals)/decimals+" "+countunit
		else
			return Math.ceil((today.getTime()-pastdate.getTime())/(finalunit)*decimals)/decimals+" "+countunit
		}
	else {
		yearspast=today.getFullYear()-yr-1
		tail=(today.getMonth()>mon-1 || today.getMonth()==mon-1 && today.getDate()>=day)? 1 : 0
		pastdate.setFullYear(today.getFullYear())
		pastdate2=new Date(today.getFullYear()-1, mon-1, day)
		tail=(tail==1)? tail+Math.floor((today.getTime()-pastdate.getTime())/(finalunit)*decimals)/decimals : Math.floor((today.getTime()-pastdate2.getTime())/(finalunit)*decimals)/decimals

		return yearspast+tail+" "+countunit
	}

}

function check_date (datum) {
 //(Schritt 1) Fehlerbehandlung
 
 if (!datum) return false;
 datum=datum.toString();
 
 //(Schritt 2) Aufspaltung des Datums
 datum=datum.split(".");
 if (datum.length!=3) return false;
 
 if (isNumeric(datum[0]) == false || isNumeric(datum[0]) == false || isNumeric(datum[0]) == false) return false;

 //(Schritt 3) Entfernung der fuehrenden Nullen und Anpassung des Monats
 datum[0]=parseInt(datum[0],10);
 datum[1]=parseInt(datum[1],10)-1;

 //(Schritt 4) Behandlung Jahr nur zweistellig
 //if (datum[2].length==2) datum[2]="20"+datum[2];

 //(Schritt 5) Erzeugung eines neuen Dateobjektes
 var kontrolldatum=new Date(datum[2],datum[1],datum[0]);

 //(Schritt 6) Vergleich, ob das eingegebene Datum gleich dem JS-Datum ist
 if (kontrolldatum.getDate()==datum[0] && kontrolldatum.getMonth()==datum[1] && kontrolldatum.getFullYear()==datum[2])
 return true; else return false;

}

function isNumeric(value) {
  if (value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false;
  return true;
}

