	var formClasses = new Array();			// speichert die stylenamen der form Felder ab
	var highlight_errors = 1;				// sollen die fehler felder markiert werden 0 oder 1
	var error_class = 'form_error';			// diese style wird verwendet um nicht ausgefuellte felder zu markieren
	
	function checkFields()
	{
		var formError = 0;



		formError += checkInputs();
		formError += checkRadios();
		formError += checkTexts();
		formError += checkSelects();
		
		if(formError != 0)
		{
			alert('Es wurden nicht alle Felder korrekt ausgefüllt.\n\nBitte überprüfen Sie Ihre Eingaben.');
			
			return false;
		}
		else
		{
			return true;
		}
	}
	
	function checkFieldsEng()
	{
		var formError = 0;
		
		formError += checkInputs();
		formError += checkRadios();
		formError += checkTexts();
		formError += checkSelects();
		formError += checkCheckbox();
		
		if(formError != 0)
		{
			alert('Not all areas have been filled-out correctly.\n\nPlease check your information to see whether you have made any mistakes.');
			
			return false;
		}
		else
		{
			return true;
		}
	}

	function saveFormStyle(formName, formStyle)
	{
		if(formClasses[formName] == null)
		{
			formClasses[formName] = formStyle;
		}
		
		return true;
	}
	
	function highlightError(formObj)
	{
		if(highlight_errors == 1)
		{
			saveFormStyle(formObj.name, formObj.className);
			formObj.className = error_class;
		}
	}
	
	function unhighlightError(formObj)
	{
		if(highlight_errors == 1)
		{
			formObj.className = formClasses[formObj.name];
		}
	}
	
	function checkInputs()
	{
		var fError = 0;
		
		allInputs = document.getElementsByTagName('input');
		
		for(i = 0; i < allInputs.length; i++)
		{
			if(isDuty(allInputs[i]) && allInputs[i].type == 'text')
			{
				if(allInputs[i].value == '')
				{
					highlightError(allInputs[i]);
					fError = 1;
				}
				else
				{
					unhighlightError(allInputs[i]);
				}
			}
		}
		
		return fError;
	}
	
	function checkRadios()
	{
		var fError = 0;
		var radioFields = new Array();
		var groupError = new Array();
		
		allRadios = document.getElementsByTagName('input');
		
		// zuerst die gruppennamen der radio felder holen
		for(i = 0; i < allRadios.length; i++)
		{
			if(allRadios[i].type == 'radio')
			{
				if(isDuty(allRadios[i]))
				{
					radioFields[allRadios[i].name] = 1;
				}
			}
		}
		
		// jetzt checken wir ob nicht irgendein radio feld der gruppe angewaehlt ist
		for(var index in radioFields)
		{
			radioGroup = document.getElementsByName(index);
			// einen neuen array aufbauen bei dem wir standardmaessig von einem fehler pro gruppe ausgehen
			groupError[index] = 1;
			
			for(i = 0; i < radioGroup.length; i++)
			{
				if(radioGroup[i].checked)
				{
					i = radioGroup.length;
					// ok in dieser gruppe wurde ein feld gewaehlt also fehler wert auf null setzen
					groupError[index] = 0;
				}
			}
		}
		
		// jetzt im fehler array schauen ob in irgendeiner gruppe ein fehler war
		for(var index in groupError)
		{
			if(groupError[index] == 1)
			{
				// yep hier ist etwas nicht ausgefuellt worden als fError auf 1 setzen
				fError = 1;
			}
		}
		
		return fError;
	}
	
	function checkTexts()
	{
		var fError = 0;
		
		allTexts = document.getElementsByTagName('textarea');
		
		for(i = 0; i < allTexts.length; i++)
		{
			if(isDuty(allTexts[i]))
			{
				if(allTexts[i].value == '')
				{
					highlightError(allTexts[i]);
					fError = 1;
				}
				else
				{
					unhighlightError(allTexts[i]);
				}
			}
		}
		
		return fError;
	}
	
	function checkSelects()
	{
		var fError = 0;
		
		allSelects = document.getElementsByTagName('select');
		
		for(i = 0; i < allSelects.length; i++)
		{
			if(isDuty(allSelects[i]))
			{
				if(allSelects[i].value == '')
				{
					highlightError(allSelects[i]);
					fError = 1;
				}
				else
				{
					unhighlightError(allSelects[i]);
				}
			}
		}
		
		return fError;
	}
	
	function isDuty(fObj)
	{
		if(fObj.getAttribute('duty') == 1)
		{
			// wir speichern hier noch den className damit abhaengige felder 
			saveFormStyle(allInputs[i].name, allInputs[i].className);
			
			// es ist pfliche nun checken ob pflich nur besteht wenn eine abhaengigkeit zu einem anderen feld besteht
			if(fObj.getAttribute('dep') != null)
			{
				// nun die value des feldes von dem dieses abhaengig ist holen
				depObj = document.getElementsByName(fObj.getAttribute('dep'));
				depObj = depObj[0];
				depValue = getFieldValue(depObj);

				if(depValue == fObj.getAttribute('depvalue'))
				{
					return true;
				}
				else
				{
					unhighlightError(fObj);
					return false;
				}
				
			}
			else
			{
				return true;	
			}
		}
		else
		{
			return false;
		}
	}
	
	function getFieldValue(fObj)
	{
		switch(fObj.type)
		{
			case 'text'		:	return fObj.value; break;
			case 'radio'	:	return getRadioValue(fObj.name); break;
		}
	}
	
	function getRadioValue(radioGroupName)
	{
		radioGroup = document.getElementsByName(radioGroupName);
		
		for(depi = 0; depi < radioGroup.length; depi++)
		{
			if(radioGroup[depi].checked == 1)
			{
				return radioGroup[depi].value;
			}
		}
	}
	
	function checkCheckbox()
	{
		if(document.form2.check01.checked == true)
		{
			fError = 1;
			alert(fError);
		}
		else
		{
			fError = 0;
			alert(fError);
		}
	}