	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(lang)
	{
		var formError = 0;
		
		formError += checkInputs();
		formError += checkTexts();

		if(formError != 0)
		{		
			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 checkCheckbox()
	{
		var fError = 0;
		
		if(document.getElementById("teilnahmebedingungen"))
		{
			obj = document.getElementById("teilnahmebedingungen");

			if(obj.checked == false)
			{
				fError = 2;
			}		
		}
		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 changeClassname()
{
	argsCC = changeClassname.arguments;
	// argsCC[0] = objekt
	argsCC[1] = stylename
	
	argsCC[0].className = argsCC[1];
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
  var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
  if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
  d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
 if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}