var check = true;

function newsubmit(e)
{
	if (check)
	{
		if (!e) var e = window.event;
			var target = e.target ? e.target : (e.srcElement ? e.srcElement : this);
			var everythingOk=true;
			var listmissing=true;
			var missing=Array();
			var labels=Array();
			try{
				ls=document.getElementsByTagName('label');
				for(k=0; k<ls.length; k++)
				{
					if(ls[k].innerText)
						labels[ls[k].htmlFor]=ls[k].innerText;
					else
						labels[ls[k].htmlFor]=ls[k].textContent;
				}
			}
			catch( e )
			{
				listmissing=false;
			}
		for(var j=0;j<target.elements.length;j++)
		{
			if(/required/.test(target.elements[j].className))
			{
				if(/\S/.test(target.elements[j].value))
				{
					target.elements[j].className="required_ok";
				}
				else
				{
					everythingOk=false;
					target.elements[j].className="required_missing";
					try
					{
						if(labels[target.elements[j].id])
							missing[missing.length]=labels[target.elements[j].id];
						else
							listmissing=false;
					}
					catch( e )
					{
						listmissing=false;
					}
				}
			}
		}	
		if(!everythingOk)
		{
			alert(missing.length>0 && listmissing ? "Folgende Felder müssen noch ausgefüllt werden: "+missing.join(", ") : "Alle rot markierten Felder müssen noch ausgefüllt werden!");
			
			e.cancelBubble = true;
			if (e.stopPropagation) e.stopPropagation();
			if(e.preventDefault) e.preventDefault();
			}
    return everythingOk
	}
	else
	{
		delete(document.forms[0].dontCheck);
		return true;
	}
}

// capture the onsubmit event on all forms
//window.addEventListener('submit', newsubmit, true);
function extendForms(){
	for(i=0; i<document.forms.length; i++)
	{
		if (document.forms[i].addEventListener)
			document.forms[i].addEventListener('submit', newsubmit, false);
		else if (document.forms[i].attachEvent)
			document.forms[i].attachEvent('onsubmit', newsubmit);
	}
}
if(window.addEventListener)
	window.addEventListener('load', extendForms, false);
else if (window.attachEvent)
	window.attachEvent('onload', extendForms);
