// vorhandene Typen: Datum_de, Text, Pulldown, Passwort, Passwort_neu, Checkbox, Checkbox_list, Pulldown_list, Email 

function checkFields(fieldNames, fieldDescription, fieldType)
{ 
  document.getElementById('form_submit').disabled = true;

  for (i=0; i < fieldNames.length; i++)
  {
    var felder = document.getElementsByName(fieldNames[i]);
    if (felder[0].disabled == false)
    {
      for (j=0; j < felder.length; j++)
      {
        if(fieldType[i] == 'Datum_de')
        {
          if (felder[j].value.length < 1)
          {
            alert(fieldDescription[i]);
            felder[j].focus();
            document.getElementById('form_submit').disabled = false;
            return false;
          }
          else
          {
            var start = felder[j].value; 
            var x = start.split(".");

            if (start == 'TT.MM.JJJJ')
            {
              alert('TT.MM.JJJJ nicht erlaubt als Datum');
              document.getElementById('form_submit').disabled = false;
              document.getElementById('form_submit').value = 'Speichern';
              return (false);
            }
            else if (start.match(/\d\d\.\d\d\.\d\d\d\d/) && x[0] <= 31 && x[1] <= 12 && x[2] <= 2038) 
            {
              if ((x[2] % 4 == 0 && x[2] != 0) || x[2] % 400 == 0) // Schaltjahr
              {
                if ((x[1] == 02 && x[0] > 29) || (x[1] == 04 && x[0] > 30) || (x[1] == 06 && x[0] > 30) || (x[1] == '09' && x[0] > 30) || (x[1] == 11 && x[0] > 30))
                {
                  alert('Fehlerhaftes Datum: ' + x[0] + '.' + x[1] + '.' + x[2]);
                  document.getElementById('form_submit').disabled = false;
                  return (false);
                }
              }
              else // kein Schaltjahr
              {
                if ((x[1] == 02 && x[0] > 28) || (x[1] == 04 && x[0] > 30) || (x[1] == 06 && x[0] > 30) || (x[1] == '09' && x[0] > 30) || (x[1] == 11 && x[0] > 30))
                {
                  alert('Fehlerhaftes Datum: ' + x[0] + '.' + x[1] + '.' + x[2]);
                  document.getElementById('form_submit').disabled = false;
                  return (false);
                }
              }
            }
            else 
            {
              alert("Datumswerte oder Datumsformat ist nicht korrekt!");
              felder[j].focus();
              document.getElementById('form_submit').disabled = false;
              return (false);
            }
          }
        }
        else if(fieldType[i] == 'Text')
        {
          if (felder[j].value.length < 1)
          {
            alert(fieldDescription[i]);
            felder[j].focus();
            document.getElementById('form_submit').disabled = false;
            return false;
          }
        }
        else if(fieldType[i] == 'Email')
        {
          if (felder[j].value.length < 1)
          {
            alert(fieldDescription[i]);
            felder[j].focus();
            document.getElementById('form_submit').disabled = false;
            return false;
          }
          else
          {
            if (emailCheck(felder[j].value) == false) return false;
          }
        }
        else if(fieldType[i] == 'Pulldown')
        {
          if (felder[j].value == 0)
          {
            alert(fieldDescription[i]);
            felder[j].focus();
            document.getElementById('form_submit').disabled = false;
            return false;
          }
        }
        else if(fieldType[i] == 'Passwort')
        {
          if (felder[j].value.length < 1)
          {
            alert(fieldDescription[i]);
            felder[j].focus();
            document.getElementById('form_submit').disabled = false;
            return false;
          }
          else if(document.getElementById(felder[j].id).value != document.getElementById(felder[j].id + '_confirm').value)
          {
            alert('deutsch: Passwort und Passwort Bestätigung stimmen nicht überein! Bitte geben Sie die Passwörter erneut ein!\nenglisch: The password and the repetition of password are not alike! Please enter the passwords again!');
            felder[j].focus();
            document.getElementById('form_submit').disabled = false;
            return false;
          }
        }
        else if(fieldType[i] == 'Passwort_neu')
        {
        if (felder[j].value != document.getElementById(felder[j].id + '_confirm').value)
          {
            alert('News Password: The new password and the repetition of password are not alike! Please enter the new passwords again!');
            felder[j].focus();
            document.getElementById('form_submit').disabled = false;
            return false;
          }
        }
        else if(fieldType[i] == 'Checkbox')
        {
          if (felder[j].checked == false)
          {
            alert(fieldDescription[i]);
            felder[j].focus();
            document.getElementById('form_submit').disabled = false;
            return false;
          }
          else if (felder[j].value == 0)
          {
            alert(fieldDescription[i]);
            felder[j].focus();
            document.getElementById('form_submit').disabled = false;
            return false;
          }
        }
        else if(fieldType[i] == 'Checkbox_list')
        {
          var listFields = document.getElementsByName(felder[j].name);
          var counter = 0;
          for (x=0; x<listFields.length; x++)
          {
            if (listFields[x].checked == true)
            {
              counter = 1;
            }
          }
          if (counter == 0)        
          {
            alert(fieldDescription[i]);
            document.getElementById('form_submit').disabled = false;
            return false;
          }
        }
      }
    }
  }
  document.getElementById('form_submit').disabled = false;
  return true;



function emailCheck (emailPatternString) { 
  var emailPattern=/^(.+)@(.+)$/ 
  var allowedChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" 
  var allowed2Chars="\[^\\s" + allowedChars + "\]" 
  var UserChars="(\"[^\"]*\")" 
  var IpdomainPatternStringtern=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/ 
  var atomString=allowed2Chars + '+' 
  var StringWord="(" + atomString + "|" + UserChars + ")" 
  var UserPatternString=new RegExp("^" + StringWord + "(\\." + StringWord + ")*$")
  var domainPatternString=new RegExp("^" + atomString + "(\\." + atomString +")*$") 
  var matchArray=emailPatternString.match(emailPattern) 

if (matchArray==null) { 
  alert("deutsch: Die EMail Adresse ist nicht Korrekt (@ und Punkte gesetzt?)\nenglisch: Email address is not correct (@ and dot?)")
  felder[j].focus(); 
  document.getElementById('form_submit').disabled = false;
  return false
} 

  var user=matchArray[1] 
  var domain=matchArray[2] 
if (user.match(UserPatternString)==null) { 
  alert("deutsch: Der Username der E-Mailadress ist ungültig.\nenglisch: The username in the E-Mailaddress is invalid.") 
  felder[j].focus(); 
  document.getElementById('form_submit').disabled = false;
  return false 
} 

  var IPArray=domain.match(IpdomainPatternStringtern) 
if (IPArray!=null) { 
  for (var i=1;i<=4;i++) { 
    if (IPArray[i]>255) { 
      alert("deutsch: Die IP Adresse ist ungültig!\nenglisch: The IP address is invalid!") 
      felder[j].focus(); 
      document.getElementById('form_submit').disabled = false;
      return false
     } 
   }
  return true
}

var domainArrayString=domain.match(domainPatternString)
if (domainArrayString==null) { 
   alert("deutsch: Der Domain Name ist ungültig.\nenglisch: The domain name is invalid.") 
   felder[j].focus(); 
   document.getElementById('form_submit').disabled = false;
   return false 
} 

var atomStringPat=new RegExp(atomString,"g") 
var DomainArray=domain.match(atomStringPat) 
var len=DomainArray.length 
if (DomainArray[DomainArray.length-1].length<2 || DomainArray[DomainArray.length-1].length>4) { 
   alert("deutsch: Der Domain Name muß mit 2 bis 4 Buchstaben enden\nenglisch: The domain name must has got 2 - 4 characters") 
   felder[j].focus(); 
   document.getElementById('form_submit').disabled = false;
   return false 
} 
if (len<2) { 
  var errString="deutsch: Bitte auch den Hostnamen angeben!\nenglisch: Please insert a host name!" 
  alert(errString)
  felder[j].focus();
  document.getElementById('form_submit').disabled = false;
  return false 
  } 
} 



}
