var meldungen = '';
var ok = true;
var gut = '#ffffff';
var schlecht = '#F5DEB3';
/*
tel und email nur wenn angegeben prüfen
wenn privat, dann keine Zuzahluing und keine Krankenkasse prüfen
Produkte mind eins und wenn Anzahl dann auch Bezeichnung  und umgekehrt


*/
function checkEmailAdr( address )
{
  var status = true;
  var username = "";
  var hostname = "";

  if ( address.length < 8 )
    return false;

  var seperate = address.lastIndexOf("@");
  if ( seperate == -1 )
    return false;

  username = address.substring(0, seperate );
  if ( ! checkUsername( username, "<>()[],;:@\" " ) )
    return false;

  hostname = address.substring(seperate+1, address.length );
  if ( ! checkHostname( hostname ) )
    return false;

  return true;
}

function g(element)
{
  return document.getElementById(element);
}

function isDigit( ch )
{
  if ( (ch >= '0') && (ch <= '9') )
    return true;
  else
    return false;
}


function isAlpha( ch )
{
  if ( ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) )
    return true;
  else
    return false;
}


function isAlnum( ch )
{
  if ( isAlpha( ch ) || isDigit( ch ) )
    return true;
  else
    return false;
}

function notIn( str1, str2 )
{
  var i = 0;
  var j = str2.length;
  for( ; i<j; i++ )
  {
    var str3 =  str2.charAt(i);
    if( str1.indexOf( str3 ) != -1 )
      return false;
  }
  return true;
}


function checkUsername( username, mustBeQuoted )
{
  var i = 0;
  var j = username.length;
  if ( username.charAt(0) != '"' )
  {
    if ( (username.charAt(0) <  ' ') || (username.charAt(0) >  '~')
          || !notIn( mustBeQuoted, username.charAt(0) ) )
      return false;
    for( i=1; i<j; i++ )
    {
      if ( ( (username.charAt(i) < ' ') || (username.charAt(i) >  '~')
            || !notIn ( mustBeQuoted, username.charAt(i) ) )
           && ( username.charAt(i-1) != '\\' ) )
        return false;
    }
  }
  else
  {
    if ( username.charAt( j-1 ) != '"' )
      return false;
    for( i=1; i<j-1; i++ )
    {
      if ( ( (username.charAt(i) == '\n') || (username.charAt(i) == '\r')
            || (username.charAt(i) == '\"') )
          && (username.charAt(i-1) != '\\') )
        return false;
    }

  }
  return true;
}


function checkNr ( nr )
{
  var i=0;
  var j=nr.length;

  if( j < 1 )
    return false;

  for( ; i<j; i++ )
    if( ( nr.charAt(i) < '0' ) || ( nr.charAt(i) > '9' ) )
      return false;

  return true;
}


function checkIpnr( ipnr )
{
  var iL=0;
  var iC=0;
  var i=0;
  var sNr = "";

  for( ; i< ipnr.length; i++ )
  {
    if ( ipnr.charAt(i) == '.' )
    {
      if ( !iL || (iL> 3) || parseInt( sNr,10 ) > 255 )
        return false;
      iC++;
      iL = 0;
      sNr = "";
      continue;
    }
    if ( isDigit ( ipnr.charAt(i) ) )
    {
      iL++;
      sNr = sNr + ipnr.charAt(i);
      continue;
    }
    return false;
  }

  if ( parseInt( sNr,10 ) > 255 )
    return false;
  if ( ( (iC==3) && (iL>=1) && (iL<=3) ) || ( (iC==4) && (!iL) )  )
    return true;
  else
    return false;
}


function checkFqdn( fqdn )
{
  var iL=0;
  var iC=0;
  var i=fqdn.length-1;

  if ( (fqdn.charAt(0) == '.') || (fqdn.charAt(0) == '-') )
    return false;
  if ( fqdn.charAt(i) == '.' )
    i=i-1;

  for( ; i>=0; i-- )
  {
    if ( fqdn.charAt(i) == '.' )
    {
      if ( iL < 2 && iC < 2 )
        return false;
      if ( fqdn.charAt(i-1) == '-' )
        return false;
      iC++;
      iL = 0;
      continue;
    }
    if ( isAlnum ( fqdn.charAt(i) ) )
    {
      iL++;
      continue;
    }
    if ( fqdn.charAt(i) == '-' )
    {
      if ( !iL )
        return false;
      iL++;
      continue;
    }
    return false;
  }

  if ( !iC || ( iL == 1 && iC < 2 ) || ( !iL && iC==1 ) ) {
    return false;
  }

  return true;

}


function checkHostname( hostname )
{
  if ( hostname.charAt(0) == '[' )
  {
    if ( hostname.charAt(hostname.length-1) != ']' )
      return false;
    var ipnr = hostname.substring( 1, hostname.length -1 );
      return checkIpnr( ipnr );
  }

  if ( hostname.charAt(0) == '#' )
  {
    var nr = hostname.substring( 1, hostname.length );
      return checkNr( nr );
  }

  return checkFqdn( hostname );
}
  
function check_geburtstag()
{
  var temp = true;
  
  var feld = g('geburtstag1');
  if(!checkNr(feld.value))
  {
    feld.style.backgroundColor = schlecht;
    meldungen += 'Geburtstag\n';
    temp = false;
  }else
  {
    feld.style.backgroundColor =  gut;
  }
  feld = g('geburtstag2');
  if(!checkNr(feld.value))
  {
    feld.style.backgroundColor = schlecht;
    meldungen += 'Geburtsmonat\n';
    temp = false;
  }else
  {
    feld.style.backgroundColor =  gut;
  }
  feld = g('geburtstag3');
  if(!checkNr(feld.value))
  {
    feld.style.backgroundColor = schlecht;
    meldungen += 'Geburtsjahr\n';
    temp = false;
  }else
  {
    feld.style.backgroundColor =  gut;
  }
  if (!temp) ok = false;
}


function check_numberfeld(feldname,angezeigter)
{
  var feld = g(feldname);
  if(!checkNr(feld.value))
  {
    feld.style.backgroundColor = schlecht;
    meldungen += angezeigter+'\n';
    ok = false;
  }else
  {
    feld.style.backgroundColor =  gut;
  }
}

function check_plz(feldname,angezeigter)
{
  var feld = g(feldname);
  if(!checkNr(feld.value) || !(feld.value.length == 5))
  {
    feld.style.backgroundColor = schlecht;
    meldungen += angezeigter+'\n';
    ok = false;
  }else
  {
    feld.style.backgroundColor =  gut;
  }
}

function check_emailfeld(feldname,angezeigter)
{
  var feld = g(feldname);
  if(!checkEmailAdr(feld.value))
  {
    feld.style.backgroundColor = schlecht;
    meldungen += angezeigter+'\n';
    ok = false;
  }else
  {
    feld.style.backgroundColor =  gut;
  }
}
function check_textfeld(feldname,angezeigter)
{
  var feld = g(feldname);
  if(feld.value == '')
  {
    feld.style.backgroundColor = schlecht;
    meldungen += angezeigter+'\n';
    ok = false;
  }else
  {
    feld.style.backgroundColor =  gut;
  }
}
function check_checkbox(feldname,angezeigter)
{
  var feld = g(feldname);
  if(feld.checked)
  {
    feld.style.backgroundColor =  gut;
  }else
  {
    feld.style.backgroundColor = schlecht;
    meldungen += angezeigter+'\n';
    ok = false;
  }
}

/*
function check_produkte()
{
  var counter = 0;
  var anz_feld = '';
  var pro_feld = '';
  var merker = true;
  for(var i = 1; i <= 5; i++)
  {

    anz_feld = g('anzahl['+i+']');
    pro_feld = g('produkt['+i+']');
    if(anz_feld.value.length != 0)
    {
      if(checkNr(feld.value))
      {

      }

    }
  }
  
  g(feldname);
  if(feld.checked)
  {
    feld.style.backgroundColor =  gut;
  }else
  {
    feld.style.backgroundColor = schlecht;
    meldungen += angezeigter+'\n';
    ok = false;
  }
}

*/

function checktheform()
{
  ok = true;
  meldungen = 'Folgende Felder wurden noch nicht ausgefüllt:\n';

check_textfeld('vorname','Vorname');
check_textfeld('nachname','Nachname');
check_textfeld('strasse','Strasse');
check_textfeld('hausnr','Hausnummer');
check_plz('plz','PLZ');
check_textfeld('stadt','Stadt');
check_geburtstag();
if ( g('email').value.length > 0 )
  check_emailfeld('email','E-Mail');
if( (g('tel_vorwahl').value.length > 0) ||  (g('tel_rufnummer').value.length > 0))
{
  check_numberfeld('tel_vorwahl','Tel-Vorwahl');
  check_numberfeld('tel_rufnummer','Tel-Rufnummer');
  check_textfeld('erreichbar','Erreichbar ab');
}
check_textfeld('rezeptform','Rezeptform');
if(g('rezeptform').value == 'Kassenrezept')
{
  check_textfeld('krankenkasse','Krankenkasse');
  check_textfeld('zuzahlung','Zuzahlung');
}else
{
    g('krankenkasse').style.backgroundColor =  gut;
    g('zuzahlung').style.backgroundColor =  gut;
}
check_textfeld('zahlungsart','Zahlungsart');
check_textfeld('bestellung','Bestellung');
check_checkbox('agb','AGB gelesen');
/*feld.value */

  if (ok)
  {
    g('absenden').style.visibility='visible';
     return true;
  }
  alert(meldungen);
/*   meldungen .= "nixda\n";
  meldungen .= "nixda\n";*/
  return false;

}function checkthekontaktform()
{
  ok = true;
  meldungen = 'Folgende Felder wurden noch nicht ausgefüllt:\n';

check_textfeld('vorname','Vorname');
check_textfeld('nachname','Nachname');
// check_textfeld('strasse','Strasse');
// check_textfeld('hausnr','Hausnummer');
// check_plz('plz','PLZ');
// check_textfeld('stadt','Stadt');
check_emailfeld('email','E-Mail');
if( (g('tel_vorwahl').value.length > 0) ||  (g('tel_rufnummer').value.length > 0))
{
  check_numberfeld('tel_vorwahl','Tel-Vorwahl');
  check_numberfeld('tel_rufnummer','Tel-Rufnummer');
}
/*feld.value */

  if (ok)
  {
    g('absenden').style.visibility='visible';
     return true;
  }
  alert(meldungen);
/*   meldungen .= "nixda\n";
  meldungen .= "nixda\n";*/
  return false;

}

