function  validate(field, event) {
  var anzahl = 0;

  for(i = 0; i < field.value.length;++i) {
    if (field.value.charAt(i) == ',') {
      anzahl++;
    }
  }

  if (anzahl > 0) {
    if ((event.keyCode == 31 || (event.keyCode >= 48 && event.keyCode <= 57)) || (event.charCode == 31 || (event.charCode >= 48 && event.charCode <= 57) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 46)) {
      return true;
    }
  } else {
    if ((event.keyCode == 44 || event.keyCode == 31 || (event.keyCode >= 48 && event.keyCode <= 57)) || (event.charCode == 44 || event.charCode == 31 || (event.charCode >= 48 && event.charCode <= 57) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 46)) {
      return true;
    }
  }
  return false;
}

function  validateMinus(field, event) {
  var anzahl = 0;

  for(i = 0; i < field.value.length;++i) {
    if (field.value.charAt(i) == ',') {
      anzahl++;
    }
  }

  if (anzahl > 0) {
    if (field.value.length == 0) {
      if ((event.keyCode == 31 || event.keyCode == 45 || (event.keyCode >= 48 && event.keyCode <= 57)) || (event.charCode == 31 || event.charCode == 45 || (event.charCode >= 48 && event.charCode <= 57) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 46)) {
        return true;
      }
    } else {
      if ((event.keyCode == 31 || (event.keyCode >= 48 && event.keyCode <= 57)) || (event.charCode == 31 || (event.charCode >= 48 && event.charCode <= 57) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 46)) {
        return true;
      }
    }
  } else {
    if (field.value.length == 0) {
      if ((event.keyCode == 44 || event.keyCode == 31 || event.keyCode == 45 || (event.keyCode >= 48 && event.keyCode <= 57)) || (event.charCode == 44 || event.charCode == 31 || event.charCode == 45 || (event.charCode >= 48 && event.charCode <= 57) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 46)) {
        return true;
      }
    } else {
      if ((event.keyCode == 44 || event.keyCode == 31 || (event.keyCode >= 48 && event.keyCode <= 57)) || (event.charCode == 44 || event.charCode == 31 || (event.charCode >= 48 && event.charCode <= 57) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 46)) {
        return true;
      }
    }
  }
  return false;
}

function toDecimal(field, decimal) {
  var komma = -1;
  var newField = "";
  var helpField = "";
  var minus = "";

  if (field.value.length == 0) {
    newField = "0";

    for (i = 0; i < decimal; i++) {
      if (i == 0) {
        newField = newField + ",";
      }

      newField = newField + "0";
    }

    field.value = newField;
    return;
  }

  if (field.value.charAt(0) == '-') {
    helpField = field.value.substring(1);
    minus = '-';
  } else {
    helpField = field.value;
  }

  for (i = 0; i < helpField.length; i++) {
    // Komma suchen
    if (helpField.charAt(i) == ',') {
      komma = i;
    }
  }

  // kein Komma -> auf letzte Position
  if (komma == -1) {
    komma = helpField.length;
  }

  // bei Komma an der ersten Stelle
  if (komma == 0) {
    helpField = "0" + helpField;
    komma = 1;
  }

  // Vorkommastellen übertragen
  for (i = 0; i < komma; i++) {
    newField = newField + helpField.charAt(i);
  }

  var nachkomma = helpField.length - (komma + 1);

  // Nachkommastellen formatieren
  if (nachkomma >= decimal) {
    newField = newField + ",";

    for (i = 0; i < decimal; i++) {
      newField = newField + helpField.charAt((komma + 1) + i);
    }
  } else {
    if (decimal > 0) {
      newField = newField + ",";

      for (i = 0; i < decimal; i++) {
        if ((komma + 1) + i < helpField.length) {
          newField = newField + helpField.charAt((komma + 1) + i);
        } else {
          newField = newField + "0";
        }
      }
    }
  }

  // Feld übertragen
  field.value = minus + newField;
}

function toCurrency(field, decimal) {
  var komma = -1;
  var helpField = "";
  var minus = "";
  var newField = "";

  if (field.value.length == 0) {
    newField = "0";

    for (i = 0; i < decimal; i++) {
      if (i == 0) {
        newField = newField + ",";
      }

      newField = newField + "0";
    }

    field.value = newField;
    return;
  }

  if (field.value.charAt(0) == '-') {
    helpField = field.value.substring(1);
    minus = '-';
  } else {
    helpField = field.value;
  }

  for (i = 0; i < helpField.length; i++) {
    // Komma suchen
    if (helpField.charAt(i) == ',') {
      komma = i;
    }
    // Bereits formatiert
    if (helpField.charAt(i) == '.') {
      return;
    }
  }

  // kein Komma -> auf letzte Position
  if (komma == -1) {
    komma = helpField.length;
  }

  // bei Komma an der ersten Stelle
  if (komma == 0) {
    helpField = "0" + helpField;
    komma = 1;
  }

  // Vorkommastellen mit Tausenderpunkten formatieren
  for (i = 0, j = komma; i < komma; i++, j--) {
    if (j % 3 == 0 && i != 0) {
      newField = newField + '.';
    }
    newField = newField + helpField.charAt(i);
  }

  var nachkomma = helpField.length - (komma + 1)

  // Nachkommastellen formatieren
  if (nachkomma >= decimal) {
    newField = newField + ",";

    for (i = 0; i < decimal; i++) {
      newField = newField + helpField.charAt((komma + 1) + i);
    }
  } else {
    if (decimal > 0) {
      newField = newField + ",";

      for (i = 0; i < decimal; i++) {
        if ((komma + 1) + i < helpField.length) {
          newField = newField + helpField.charAt((komma + 1) + i);
	} else {
          newField = newField + "0";
        }
      }
    }
  }

  // Feld übertragen
  field.value = minus + newField;
}

function toNumeric(value) {
  var newValue = "";

  for (i = 0; i < value.length; i++) {
    switch (value.charAt(i)) {
      case '.':
        break;
      case ',':
        newValue = newValue + '.';
        break;
      case '0':
      case '1':
      case '2':
      case '3':
      case '4':
      case '5':
      case '6':
      case '7':
      case '8':
      case '9':
      case '-':
        newValue = newValue + value.charAt(i);
        break;
      default:
        break;
    }
  }

  return newValue;
}

function toString(value) {
  var oldValue = "" + value;
  var newValue = "";

  for (i = 0; i < oldValue.length; i++) {
    switch (oldValue.charAt(i)) {
      case '.':
        newValue = newValue + ',';
        break;
      case ',':
        break;
      case '0':
      case '1':
      case '2':
      case '3':
      case '4':
      case '5':
      case '6':
      case '7':
      case '8':
      case '9':
      case '-':
        newValue = newValue + oldValue.charAt(i);
        break;
      default:
        break;
    }
  }

  return newValue;
}

function calc() {
  if (document.myForm.betrag.value.length == 0 || document.myForm.zinssatz.value.length == 0) {
    document.myForm.gesamtbetrag.value = "";
    return;
  }

  var betrag = parseFloat(toNumeric(document.myForm.betrag.value));
  var zinssatz = parseFloat(toNumeric(document.myForm.zinssatz.value));

  document.myForm.gesamtbetrag.value = toString(betrag + (betrag * zinssatz / 100));
  toCurrency(document.myForm.gesamtbetrag, 2);
}