var W3CDOM = (document.getElementsByTagName && document.createElement);

function validate()
{
	validForm = true;
	errorstring = '';
	var x = document.forms[0].elements;
	if (!x['vorname'].value)
		writeError(x['vorname'],'This field is required');
	if (!x['nachname'].value)
		writeError(x['nachname'],'This field is required');
	if (!x['strasse'].value)
		writeError(x['strasse'],'This field is required');
	if (!x['plz'].value)
		writeError(x['plz'],'This field is required');
	if (!x['ort'].value)
		writeError(x['ort'],'This field is required');

	if (!(checkEmail(x['email'].value)))
		writeError(x['email'],'This is not a valid E-mail address');
	if (!W3CDOM)
		alert(errorstring);
	if (firstError)
		firstError.focus();
	return validForm;
}

function writeError(obj,message)
{
	if (obj.hasError) { 
	  validForm = false;
	  return;
	}
	if (W3CDOM)
	{
		obj.className += ' error';
		obj.onchange = removeError;
		var sp = document.createElement('span');
		sp.className = 'error';
		sp.appendChild(document.createTextNode(message));
		obj.parentNode.appendChild(sp);
		obj.hasError = sp;
	}
	else
	{
		errorstring += obj.name + ': ' + message + '\n';
		obj.hasError = true;
	}
	if (validForm)
		firstError = obj;
	validForm = false;
}

function removeError()
{
	this.className = this.className.substring(0,this.className.lastIndexOf(' '));
	this.parentNode.removeChild(this.hasError);
	this.hasError = null;
	this.onchange = null;
}

function checkEmail(email) {
  var usr    = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
  var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
  var regex  = "^" + usr + "\@" + domain + "$";

  var rgx    = new RegExp(regex);
  return rgx.exec(email) ? true : false;
}
