function formularchecker() {
 document.buchung.senden.value = "Moment please!";
 document.buchung.senden.disabled = true;
 

 if(document.buchung.f_vol.checked == false) {
   alert("Please agree  the community service agreement!");
   document.buchung.f_vol.focus();
   
   subaktivi();
   return false;
 }
   if(document.buchung.f_an.value == "") {
   alert("Please enter Preferred period of service: From!");
   document.buchung.f_an.focus();
   
   subaktivi();
   return false;
  }
  else if(!isDate(document.buchung.f_an.value)){
		alert("Please enter a valid Preferred period of service: From!");
		document.buchung.f_an.focus();
   
	   subaktivi();
	   return false;
  } 
  if(document.buchung.f_ab.value == "") {
   alert("Please enter Preferred period of service: Til!");
   document.buchung.f_ab.focus();
   
   subaktivi();
   return false;
  }
  else if(!isDate(document.buchung.f_ab.value)){
		alert("Please enter a valid Preferred period of service: Til!");
		document.buchung.f_ab.focus();
   
	   subaktivi();
	   return false;
  } 
 else if(document.buchung.f_vn.value == "")  {
   alert("Please enter your first name!");
   document.buchung.f_vn.focus();
   
   subaktivi();
   return false;
  }
  else if(document.buchung.f_nn.value == "")  {
   alert("Please enter your family name!");
   document.buchung.f_nn.focus();
   
   subaktivi();
   return false;
  }
  else if(document.buchung.f_ort.value == "") {
   alert("Please enter Place of your birth!");
   document.buchung.f_ort.focus();
   
   subaktivi();
   return false;
  }
  if(document.buchung.f_geb.value == "") {
   alert("Please enter Date of your birth!");
   document.buchung.f_geb.focus();
   
   subaktivi();
   return false;
  }
  else if(!isDate(document.buchung.f_geb.value)){
		alert("Please enter a valid Date of your birth!");
		document.buchung.f_geb.focus();
   
	   subaktivi();
	   return false;
  }
  else if(document.buchung.f_pers.value == "") {
   alert("Please enter your Nationality!");
   document.buchung.f_pers.focus();
   
   subaktivi();
   return false;
  }
  if(document.buchung.f_adr.value == "") {
   alert("Please enter your Address (road/door)!");
   document.buchung.f_adr.focus();
   
   subaktivi();
   return false;
  }
  else if(document.buchung.f_plz.value == "") {
   alert("Please enter your Postcode, place of residence!");
   document.buchung.f_plz.focus();
   
   subaktivi();
   return false;
  }
  else if(document.buchung.f_tel.value == "") {
   alert("Please enter your Telephone!");
   document.buchung.f_tel.focus();
   
   subaktivi();
   return false;
  }
 else if(document.buchung.f_email.value == "") {
   alert("Please enter your E-mail address!");
   document.buchung.f_email.focus();
   
   subaktivi();
   return false;
  }
  else{
    var email = document.buchung.f_email.value
	var datePat = /^[A-z0-9][\w.-]*@[A-z0-9-\.]+\.[A-z0-9]{2,6}$/;
	if(email.search(datePat)){
	   alert("Please enter a valid E-mail address!");
	   document.buchung.f_email.focus();
	   
	   subaktivi();
	   return false;
	}
  }
  if(document.buchung.f_pass.value == "") {
   alert("Please enter Passport number!");
   document.buchung.f_pass.focus();
   
   subaktivi();
   return false;
  }

  else if(document.buchung.f_passort.value == "") {
   alert("Please enter Place of issue!");
   document.buchung.f_passort.focus();
   
   subaktivi();
   return false;
  }
  else if(document.buchung.f_passdatum.value == "") {
   alert("Please enter Date of issue!");
   document.buchung.f_passdatum.focus();
   
   subaktivi();
   return false;
  }
  else if(!isDate(document.buchung.f_passdatum.value)){
		alert("Please enter a valid Date of issue!");
		document.buchung.f_passdatum.focus();
   
	   subaktivi();
	   return false;
  } 
  else if(document.buchung.f_passgultig.value == "") {
   alert("Please enter  valid until!");
   document.buchung.f_passgultig.focus();
   
   subaktivi();
   return false;
  }
  else if(!isDate(document.buchung.f_passgultig.value)){
		alert("Please enter  valid until");
		document.buchung.f_passgultig.focus();
   
	   subaktivi();
	   return false;
  }
  else if(document.buchung.f_beruf.value == "") {
   alert("Please enter your Profession!");
   document.buchung.f_beruf.focus();
   
   subaktivi();
   return false;
  }
}

function subaktivi(){
   document.buchung.senden.value = "Absenden!";
   document.buchung.senden.disabled = false;
}
//******************************************************************
// This function accepts a string variable and verifies if it is a
// proper date or not. It validates format matching either
// mm-dd-yyyy or mm/dd/yyyy. Then it checks to make sure the month
// has the proper number of days, based on which month it is.

// The function returns true if a valid date, false if not.
// ******************************************************************
function isDate(dateStr) {
		
	var datePat = /^(\d{1,2})(\/|-|\.)(\d{1,2})(\/|-|\.)(\d{4})$/;
	var dat = dateStr;
	var matchArray = dat.match(datePat);
	

	if (matchArray == null) {
		return false;
	}

	day = matchArray[1]; // p@rse date into variables
	month  = matchArray[3];
	year = matchArray[5];

	if (month < 1 || month > 12) { // check month range
		return false;
	}

	if (day < 1 || day > 31) {
		return false;
	}

	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false;
	}

	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap)) {
			return false;
		}
	}
	return true; // date is valid
}