function checkform(of)
{
	var reqfields,em,i,f,ty;
	var labels,fieldnames;
	fieldnames=new Array();
	if(document.getElementsByTagName('label').length>0)
	{
		labels=document.getElementsByTagName('label');
		for(i=0;i<labels.length;i++)
		{
			fieldnames[labels[i].htmlFor]=labels[i].firstChild.nodeValue;
		}
	}
	if(document.getElementById('required'))
	{
		reqfields=document.getElementById('required').value.split(',');
		if(document.getElementById('errormsg')){
			em=document.getElementById('errormsg');
			em.parentNode.removeChild(em);
		}
		for(i=0;i<reqfields.length;i++)
		{
			f=document.getElementById(reqfields[i]);
			if(f.nextSibling && /img/i.test(f.nextSibling.nodeName)){
				f.parentNode.removeChild(f.nextSibling);
			}
			f.style.background='transparent';
			if(f){
				ty=f.type.toLowerCase();
				switch(ty)
				{
					case 'text':
						if(f.value==''){adderr(f.id,fieldnames[f.id],of)}
						if(f.id=='email' && f.value!=''  && !isEmailAddr(f.value)){adderr(f.id,fieldnames[f.id],of)}							
					break;
					case 'textarea':
						if(f.value==''){adderr(f.id,fieldnames[f.id],of)}							
					break;
					case 'checkbox':
						if(!f.checked){adderr(f.id,fieldnames[f.id],of)}							
					break;
					/* extend as needed */
				}
			}
			
		}
		
	}
	if(document.getElementById('errormsg'))
	{
		return false;
	}
}
function adderr(id,name,of)
{
	var se,i,nli,na,newli,newa;
	i=document.createElement('img');
	i.src='img/alert.gif';
	i.alt='Fehler';
	i.className='formerrorpic';
	i.title='Dieses Feld muss ausgefüllt werden!';
	se=document.getElementById(id);
	se.parentNode.insertBefore(i,se.nextSibling)
	se.style.background='#fff1a0';
	if(!document.getElementById('errormsg')){
		var em=document.createElement('p');
		em.id='errormsg';
		em.appendChild(document.createTextNode('Bitte füllen Sie die folgenden Felder aus: '))
		ul=document.createElement('ul');
		ul.id='errorlist';
		em.appendChild(ul);
		for(var i=0;i<of.getElementsByTagName('input').length;i++)
		{
			if(/submit/i.test(of.getElementsByTagName('input')[i].getAttribute('type')))
			{
				var sb=of.getElementsByTagName('input')[i];
				break;
			}
		}
		em.style.border='2px solid #c00';
		em.style.padding='5px';
		em.style.width='370px';
		sb.parentNode.insertBefore(em,sb);
	}
	if(id=='email' && !isEmailAddr(document.getElementById(id).value)){
		pn=document.createElement('p');
		pn.appendChild(document.createTextNode('eMail ist ungültig'))	
		document.getElementById('errormsg').appendChild(pn);
	}
	newli=document.createElement('li');
	newa=document.createElement('a');
	newa.appendChild(document.createTextNode(name));
	newa.href='#'+id;
	newa.isid=id;
	newa.onclick=function()
	{
		document.getElementById(this.isid).focus();
		return false;
	}
	newli.appendChild(newa)
	document.getElementById('errorlist').appendChild(newli);
}

function isEmailAddr(str) 
{
	return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
}
