
function reformatNumber(inputText, fractDigits) {
	var value = inputText.value;
	value = value.replace('.', '');
	value = value.replace(',', '.');
	if(value && !isNaN(value))
		inputText.value = formatNumber(value, fractDigits);
}

function formatNumber(number, fractDigits) {
	var negative = number < 0;
	if(negative)
		number = -number;
	var factor = 1;
	for(var i = 0; i<fractDigits; i++)
		factor *= 10;
	number = Math.round(number * factor) / factor;
	string = '' + number;
	if(fractDigits>0) {
		if(string.indexOf('.')<0)
			string = string + '.';
		while(string.length-string.indexOf('.')<=fractDigits)
			string += '0';
		string = string.replace('.', ',');
	}
	if(negative)
		string = '-' + string;
	return string;
}

function reformatDatumZeit(inputText) {
	var value = inputText.value;
	if(value) {
		var parts = splitIntoNumbers(value);
		var jahr = 0;
		var monat = 0;
		var tag = 0;
		var stunde = -1;
		var minute = -1;
		var sekunde = -1;
		var part = 0;
		if(part<parts.length)
			tag = parts[part++];
		if(part<parts.length)
			monat = parts[part++];
		if(part<parts.length)
			jahr = parts[part++];
		if(part<parts.length)
			stunde = parts[part++];
		if(part<parts.length)
			minute = parts[part++];
		if(part<parts.length)
			sekunde = parts[part++];
		inputText.value = formatDatum(jahr, monat, tag, stunde, minute, sekunde);
	}
}

function reformatZeit(inputText) {
	var value = inputText.value;
	if(value) {
		var parts = splitIntoNumbers(value);
		value = '';
		for(var i = 0; i<parts.length; i++) {
			if(i>0)
				value += ':';
			if(parts[i]<10)
				value += '0';
			value += parts[i];
		}
		inputText.value = value;
	}
}

function reformatDatum(inputText) {
	var value = inputText.value;
	if(value) {
		var parts = splitIntoNumbers(value);
		var jahr = 0;
		var monat = 0;
		var tag = 0;
		switch(parts.length) {
		case 0:
			break;
		case 1:
			jahr = parts[0];
			break;
		case 2:
			monat = parts[0];
			jahr = parts[1];
			break;
		default:
			tag = parts[0];
			monat = parts[1];
			jahr = parts[2];
			break;
		}
		inputText.value = formatDatum(jahr, monat, tag, -1, -1, -1);
	}
}

function formatDatum(jahr, monat, tag, stunde, minute, sekunde) {
	if(jahr>0 && jahr<100) {
		var aktuellesJahr = (new Date()).getYear();
		if(aktuellesJahr<1900)
			aktuellesJahr += 1900;
		var divMod100 = (aktuellesJahr-jahr)%100;
		// zehn Jahre in die Zukunft, 90 in die Vergangenheit
		// siehe auch DatumZeit.java
		if(divMod100>=90)
			jahr = aktuellesJahr + 100 - divMod100;
		else
			jahr = aktuellesJahr - divMod100;
	}
	var value = '';
	if(jahr>0) {
		if(monat>0) {
			if(tag>0) {
				if(tag<10)
					value += '0';
				value += tag;
				value += '.';
				if(monat<10)
					value += '0';
				value += monat;
				value += '.';
				if(jahr<1000)
					value += '0';
				value += jahr;
			} else {
				if(monat<10)
					value += '0';
				value += monat;
				value += '/';
				if(jahr<1000)
					value += '0';
				value += jahr;
			}
		} else {
			if(jahr<1000)
				value += '0';
			value += jahr;
		}
	}
	if(jahr>0 && stunde>-1)
		value += ' ';
	if(stunde>-1) {
		if(stunde<10)
			value += '0';
		value += stunde;
		if(minute>-1) {
			value += ':';
			if(minute<10)
				value += '0';
			value += minute;
			if(sekunde>-1) {
				value += ':';
				if(sekunde<10)
					value += '0';
				value += sekunde;
			}
		}
	}
	return value;
}

function splitIntoNumbers(str) {
	var parts = new Array();
	var wasNumber = false;
	for(var i = 0; i<str.length; i++) {
		var c = str.charAt(i);
		if(c>='0' && c<='9') {
			if(!wasNumber) {
				parts[parts.length] = 0;
				wasNumber = true;
			}
			parts[parts.length-1] = parts[parts.length-1]*10 + parseInt(c) - '0';
		} else
			wasNumber = false;
	}
	return parts;
}

