function isLeapYear( nYear ) {
	if ((nYear % 4) == 0 && (nYear % 100) != 0 || (nYear % 400) == 0)
		return 1;
	return 0;
}

function checkTime( fieldName ) {

	timeField = eval("document.forms[0]." + fieldName);
	timeValue = timeField.value;

	if (timeValue.length == 0) return;
	
	timeValues = timeValue.split( ":" );
	if( timeValues.length != 2 ||
		timeValues[0].length == 0 ||
		timeValues[1].length == 0) {
		alert( "Time Error -> HH:MM" );
		timeField.focus();
		return;
	}
	nHour = parseInt(timeValues[0], 10);
	nMinute = parseInt(timeValues[1], 10);
	
	if( nHour < 0 || nHour > 24 || nMinute < 0 || nMinute > 60) {
	    
		alert( "Time Error -> HH:MM" );
		timeField.focus();
		return;
	}

	valueChanged(fieldName);

}

function checkDate( fieldName ) {

	dateField = eval("document.forms[0]." + fieldName);
	strDate = dateField.value; 
	aMonths = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );

	if (strDate.length == 0) return;
	if (strDate.length > 10) {
		alert( "Datum Fehler" );
		dateField.focus();
		return;
	
	}

	astrDate = strDate.split( "." );
	if( astrDate.length != 3 ) {
		alert( "Datum Fehler -> DD.MM.YY" );
		dateField.focus();
		return;
	}

	nDay = parseInt(astrDate[0], 10);
	nMonth = parseInt(astrDate[1], 10);
	nYear = parseInt(astrDate[2], 10);

	if (nYear < 70) nYear = 2000 + nYear;
	if (nYear > 70 & nYear < 100) nYear = 1900 + nYear;
	dateField.value = nDay + "." + nMonth + "." + nYear;
	
	if( isNaN(nDay) || isNaN(nMonth) || isNaN( nYear ) ||
	    nMonth > 12 || nMonth < 1 || nYear < 1900 ||
	    nDay < 1 || nDay > (aMonths[nMonth-1] + isLeapYear(nYear))) {
	    
		alert( "Datum Fehler -> DD.MM.YY" );
		dateField.focus();
		return;
	}
	valueChanged(fieldName);
	
}


function dateListChanged(aName) {

	dayField = eval("document.forms[0].dateDay_" + aName);
	monthField = eval("document.forms[0].dateMonth_" + aName);
	yearField = eval("document.forms[0].dateYear_" + aName);
	selectedDay = dayField.selectedIndex;

	month = monthField.selectedIndex;
	if (month > 0) {
		month -= 1;
	
		array = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
		numberOfDays = array[month];
	
		year = parseInt(yearField.options[yearField.selectedIndex].text, 10);
	
		if (isLeapYear(year) && month == 1) numberOfDays += 1;
			
		for (i=dayField.options.length-1;i>numberOfDays;i--) dayField.options[i]=null;
		for(i=dayField.options.length; i<numberOfDays + 1; i++) {
		dayField.options[i] = new Option(i + ".", "");
 		}

		if (selectedDay > numberOfDays ) dayField.options[0].selected = true;
	}

	dateField = eval("document.forms[0]." + aName);	
	if (dateField != null) {
		if (dayField.selectedIndex > 0 || monthField.selectedIndex > 0 || yearField.selectedIndex > 0) {
			dateField.value = dayField.options[dayField.selectedIndex].text + monthField.selectedIndex + "." + yearField.options[yearField.selectedIndex].text; 
	
		} else { 
			dateField.value = "";
		}
		
	
	}
	
	button = eval("document.forms[0].button_" + aName); 
	if (button != null) {
		if (dayField.selectedIndex > 0 || monthField.selectedIndex > 0 || yearField.selectedIndex > 0) {
			button.value = eval("button_" + aName + "_reset");
		} else { 
			button.value = eval("button_" + aName + "_today");
		}
		
	}
	
	valueChanged(aName);
}


function dateInput(aName ) {

	box = eval("document.forms[0].checkbox_" + aName); 
	dayField = eval("document.forms[0].dateDay_" + aName);
	monthField = eval("document.forms[0].dateMonth_" + aName);
	yearField = eval("document.forms[0].dateYear_" + aName);
	
	if (box.checked) {
		dateToday = new Date();
		year = dateToday.getYear();
		if(year < 200) year += 1900;
		month = dateToday.getMonth() + 1;
	
		monthField.selectedIndex = dateToday.getMonth() + 1;
	
		year -= 5
		for (var i=yearField.options.length-1;i>0;i--) yearField.options[i]=null;
		for(i=1; i<11; i++) {
			yearField.options[i] = new Option(year + i, "");
 		}
 		yearField.options[5].selected=true;

		dateListChanged(aName);
		dayField.selectedIndex = dateToday.getDate();
	
	} else {
	
		monthField.options[0].selected=true;
		dayField.options[0].selected=true;
		yearField.options[0].selected=true;
	}

}

function dateButtonClicked(aName) {

	button = eval("document.forms[0].button_" + aName); 
	

	dayField = eval("document.forms[0].dateDay_" + aName);
	monthField = eval("document.forms[0].dateMonth_" + aName);
	yearField = eval("document.forms[0].dateYear_" + aName);
	
	if (button.value == eval("button_" + aName + "_today")) {
		dateToday = new Date();
		year = dateToday.getYear(); 
		if(year < 200) year += 1900;
		month = dateToday.getMonth() + 1;
	
		monthField.selectedIndex = dateToday.getMonth() + 1;
	
		year -= 5
		for(i=1; i<11; i++) {
			yearField.options[i] = new Option(year + i, "");
 		}
 		yearField.options[5].selected=true;

		dayField.selectedIndex = dateToday.getDate();
		button.value = eval("button_" + aName + "_reset");
		
	
	} else if (button.value == eval("button_" + aName + "_reset")) {
	
		monthField.options[0].selected=true;
		dayField.options[0].selected=true;
		yearField.options[0].selected=true;
	
		button.value = eval("button_" + aName + "_today")
	}
	
	dateListChanged(aName);

}

function advancedDateButtonClicked(aName, aYear, yearsBefore, yearsAfter) {

	button = eval("document.forms[0].button_" + aName); 

	dayField = eval("document.forms[0].dateDay_" + aName);
	monthField = eval("document.forms[0].dateMonth_" + aName);
	yearField = eval("document.forms[0].dateYear_" + aName);
	dateToday = new Date();
	
	if (button.value == eval("button_" + aName + "_today")) {
		if (aYear < 200) aYear += 1900;
		month = dateToday.getMonth() + 1;
	
		monthField.selectedIndex = dateToday.getMonth() + 1;
	
		numberOfYears = yearsBefore + yearsAfter + 1;
		year = aYear - yearsBefore;  
		for(i = 0; i < numberOfYears; i++) {
			yearField.options[i + 1] = new Option(year + i, "");
 		}
 		yearField.options[aYear - year + 1].selected=true;

		dayField.selectedIndex = dateToday.getDate();
		button.value = eval("button_" + aName + "_reset");
		
	
	} else if (button.value == eval("button_" + aName + "_reset")) {
	
		monthField.options[0].selected=true;
		dayField.options[0].selected=true;
		yearField.options[0].selected=true;
	
		button.value = eval("button_" + aName + "_today")
	}
	
	dateListChanged(aName);

}


function yearListChanged(aName) {

	yearListField = eval("document.forms[0].year_" + aName);
	yearField = eval("document.forms[0]." + aName);	
	
	if (yearField != null) {
	
		if (yearListField.selectedIndex > 0) {
			yearField.value = yearListField.options[yearListField.selectedIndex].text; 
		} else { 
			yearField.value = "";
		}
			
	}
	
	button = eval("document.forms[0].button_" + aName); 
	if (button != null) {
		if (yearListField.selectedIndex > 0) {
			button.value = eval("button_" + aName + "_reset");
		} else { 
			button.value = eval("button_" + aName + "_current");
		}
		
	}
}


function yearButtonClicked(aName) {

	button = eval("document.forms[0].button_" + aName); 
	yearField = eval("document.forms[0].year_" + aName);
	
	if (button.value == eval("button_" + aName + "_current")) {
		dateToday = new Date();
		year = dateToday.getYear(); 
		if(year < 200) year += 1900;
	
		year -= 5
		for(i=1; i<11; i++) {
			yearField.options[i] = new Option(year + i, "");
 		}
 		yearField.options[5].selected=true;
		button.value = eval("button_" + aName + "_reset");
		
	
	} else if (button.value == eval("button_" + aName + "_reset")) {
	
		yearField.options[0].selected=true;	
		button.value = eval("button_" + aName + "_current")
	}
	
	yearListChanged(aName);

}