// macht aus einer Eingabe in einem Zahlenfeld
// eine gültige Eingabe nach 1.000,00-Format
// und aktualisiert das Feld damit
function formatiereZahlenFeld(f)
{
  //var feldInhalt=eval("document.forms['" +formname+"']."+feldname+".value");
  //var neuerFeldWert=formatiereZahlenString(feldInhalt);
  //eval("document.forms['" +formname+"']."+feldname+".value=neuerFeldWert;");
  var feldInhalt=f.value;
  feldInhalt=feldInhalt.replace(".","");
  var neuerFeldWert=formatiereZahlenString(feldInhalt);
  if(neuerFeldWert.indexOf(",00")==neuerFeldWert.length-3){
    neuerFeldWert=neuerFeldWert.substr(0,neuerFeldWert.length-3);
  }
  f.value=neuerFeldWert;
}
// erzeugt aus einem String eine gültige Zahl nach
// 1.000,00-Format. Wenn der String ungültig ist,
// wird 0,00 zurückgegeben und eine Fehlermeldung
// gezeigt
function formatiereZahlenString(feldInhalt)
{
  var neuerInhalt="";
  var posPunkt;
  var posKomma;
  var zulaessigeZeichen="0123456789.,";
  var komma=false;
  var punkt=false;
  var c;
  var meldung="Zahlen müssen nach dem Muster\n1.234,56 eingegeben werden!";

  feldInhalt=trim(feldInhalt);

  if(feldInhalt==""){
    return "0,00";
  }else{
    for(var i=0;i<feldInhalt.length;i++){
      c=feldInhalt.substr(i,1);
      if(zulaessigeZeichen.indexOf(c)>-1){
        if(c=="."){
          if(punkt){
            showFormError(meldung);
            return "0,00";
          }
          posPunkt=i;
          punkt=true;
        }else if(c==","){
          if(komma){
            showFormError(meldung);
            return "0,00";
          }
          posKomma=i;
          komma=true;
        }
      }else{
        showFormError(meldung);
        return "0,00";
      }
    }
    if(punkt && komma && posKomma<posPunkt){
      showFormError(meldung);
      return "0,00";
    }else if (!punkt && !komma){
      return tausenderNotation(true,parseInt(feldInhalt));
    }else{
      //showFormError(feldInhalt+" "+feldInhalt.replace("/./",""));
      feldInhalt=feldInhalt.replace(/\./,"");
      if(komma){
        return tausenderNotation(true,zweiStellen(feldInhalt));
      }else{
        return tausenderNotation(true,parseInt(feldInhalt));
      }
    }
  }

}

// erwartet einen Zahlenstring, der ein Komma enthält
// der Nachkommaanteil wird auf zwei Stellen gerundet
// gibt einen Zahlenstring mit Punkt zurück
function zweiStellen(zahlString)
{
  var posKomma=zahlString.indexOf(",");
  var vorKomma=zahlString.substring(0,posKomma);
  var nachKomma=zahlString.substring(posKomma+1);
  if(vorKomma=="") vorKomma="0";
  if(nachKomma==""){
    nachKomma="00";
  }else if(nachKomma.length==1){
    nachKomma+="0";
  }else if(nachKomma.length>2){
    var temp=""+Math.round(parseFloat("0."+nachKomma)*100)/100;
    nachKomma=temp.substring(2);
  }
  return vorKomma+"."+nachKomma;
}


// formatiert nach dem Muster 1.000,20
// oder macht aus solchen Ausdrücken Zahlen
// Korrektheit des Ausdrucks wird vorausgesetzt
function tausenderNotation(formatieren, einWert)
{
  var erg;
  var nachKomma;
  var vorKomma;
  var zahlString;
  var posPunkt;
  var posKomma;

  if(formatieren){
    // Wenn eine Zahl formatiert werden soll
    zahlString=""+einWert;
    if(trim(zahlString)=="") return "0,00";
    if(isNaN(einWert)){
      return "0,00";
    }
    posPunkt=zahlString.indexOf(".");
    if(posPunkt==-1){
      vorKomma=zahlString;
      nachKomma="00";
    }else{
      vorKomma=zahlString.substring(0,posPunkt);
      nachKomma=zahlString.substring(posPunkt+1);
      if(nachKomma.length==1) nachKomma+="0";
    }
    if(vorKomma.length>6){
      erg=vorKomma.substring(0,vorKomma.length-6) + "." +
          vorKomma.substring(vorKomma.length-6,vorKomma.length-3) + "." +
          vorKomma.substring(vorKomma.length-3) + "," +
          nachKomma;
    }else if(vorKomma.length>3){
      erg=vorKomma.substring(0,vorKomma.length-3) + "." +
          vorKomma.substring(vorKomma.length-3) + "," +
          nachKomma;
    }else{
      if(vorKomma=="") vorKomma="0";
      erg=vorKomma+","+nachKomma;
    }
  }else{
    // Wenn aus einem formatierten Ausdruck eine Zahl
    // werden soll
    erg=trim(einWert);
    posPunkt=erg.indexOf(".");
    posKomma=erg.indexOf(",");
    if(erg=="") return 0;
    if(posPunkt==-1 && posKomma==-1){
       if(isNaN(erg)){
         return 0; // wenn keine Zahl
       }else{
         return parseInt(erg); // wenn einfache Ganzzahl
       }
    }
    if(posPunkt>erg.length-3 ||
       (posKomma>0 && posKomma<erg.length-3)){
       return 0; // wenn offensichtlich nicht wohlgeformt
    }
    erg=erg.replace(/\./,"");
    erg=erg.replace(/,/,".");
    erg=parseFloat(erg);
  }
  return erg;
}




//var feldNamen=        {"f_benutzernummer",   "f_pw"};
//var feldBezeichnungen={"Benutzernummer",     "Passwort"};
//var feldArten=        {"text",               "zahl"};

function testeFelder(formName)
{
  var fehlerText="";
  var leerKette="";
  var obj=document.forms[formName];
  var wert;
  var anzahl=0;
  var parts;
  for(var i=0;i<feldNamen.length;i++){
    if(feldArten[i]=="text" || feldArten[i]=="email" ||
       feldArten[i]=="zahl"){
      eval("wert=obj."+feldNamen[i]+".value;");
      wert=trim(wert);
      if(wert==""){
        anzahl++;
        if(anzahl>1) leerKette=leerKette+", ";
        leerKette=leerKette+"\""+feldBezeichnungen[i]+"\"";
      }
    }
  }
  if(leerKette!=""){
    fehlerText+="Bitte f&uuml;llen Sie ";
    if(anzahl==1){
      fehlerText+="das Feld ";
    }else{
      fehlerText+="die Felder ";
    }
    if(anzahl==2) leerKette=leerKette.replace(/,/," und");
    fehlerText+=leerKette;
    fehlerText+=" aus!";
  }

  anzahl=0;
  leerKette="";
  for(var i=0;i<feldNamen.length;i++){
    if(feldArten[i]=="auswahl"){
      eval("wert=obj."+feldNamen[i]+".value;");
      wert=trim(wert);
      if(wert==""){
        anzahl++;
        if(anzahl>1) leerKette=leerKette+", ";
        leerKette=leerKette+"\""+feldBezeichnungen[i]+"\"";
      }
    }
  }
  if(leerKette!=""){
    if(fehlerText!="") fehlerText+="\n";
    fehlerText+= "Bitte wählen Sie";
    if (anzahl>1){
      fehlerText+=" aus den Listen ";
    }else{
      fehlerText+=" aus der Liste ";
    }
    if (anzahl==2) leerKette=leerKette.replace(/,/," und");
    fehlerText+=leerKette;
    fehlerText+="!";
  }

  anzahl=0;

  for(var i=0;i<feldNamen.length;i++){
    if(feldArten[i]=="email"){
      eval("wert=obj."+feldNamen[i]+".value;");
      wert=trim(wert);
      if(wert!=""){
        if(wert.indexOf("@")==-1 || wert.indexOf(".")==-1 ||
          wert.length<5){
          anzahl=1;
        }else{
          parts=wert.split("@");
          for(var j=0;j<parts.length;j++){
            if(parts[j]=="" || parts[j]=="."){
              anzahl=1;
              break;
            }
          }
        }
      }
      if(anzahl==1){
        if(fehlerText!="") fehlerText+="\n";
        fehlerText+="Bitte geben Sie eine gültige E-Mail-Adresse an!";
        break;
      }
    }
  }

  anzahl=0;
  leerKette="";
  var radioLength;
  var che;
  for(var i=0;i<feldNamen.length;i++){
    if(feldArten[i]=="radio"){
      che=false,
      eval("radioLength=document.forms['"+formName+"']."+feldNamen[i]+".length;");
      for(var j=0;j<radioLength;j++){
        eval("che=document.forms['"+formName+"']."+feldNamen[i]+"["+j+"].checked;");
        if(che==true){
          break;
        }
      }
      if(che==false){
        anzahl++;
        if(anzahl>1) leerKette=leerKette+", ";
        leerKette=leerKette+"\""+feldBezeichnungen[i]+"\"";
      }
    }
  }
  if(leerKette!=""){
    if(fehlerText!="") fehlerText+="\n";
    fehlerText+="Bitte kreuzen Sie ";
    if(anzahl==2) leerKette=leerKette.replace(/,/," und");
    fehlerText+=leerKette;
    fehlerText+=" an!";
  }

  if(fehlerText!="") showFormError(fehlerText);
}
