function  validateInt(field, event) {
        if (event.keyCode == 31 || (event.keyCode >= 48 && event.keyCode <= 57)) {
                return true
        }
        return false
}
function  validateMinusInt(field, event) {
        var anzahl = 0

        if (field.value.length == 0) {
                if (event.keyCode == 31 || event.keyCode == 45 || (event.keyCode >= 48 && event.keyCode <= 57)) {
                        return true
                }
        }
        else {
                if (event.keyCode == 31 || (event.keyCode >= 48 && event.keyCode <= 57)) {
                        return true
                }
        }

        return false
}


function  validate(field, event) {
        var anzahl = 0;

        var richtig = false;

        if(event.keyCode == 13) { // if ENTER was pressed -> "fake" submit (recalculate)
          field.form.calculate_button.click();
          //field.form.submit();
          return true;
        }

        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)) {
                                richtig = true;
                        }
                }
                else {
                        if (event.keyCode == 31 || (event.keyCode == 44 && field.value.charAt(field.value.length - 1) != ",") ||
                        ((event.keyCode == 45 || event.keyCode == 43 ) && field.value.charAt(field.value.length - 1) != "-" && field.value.charAt(field.value.length - 1) != "+" && field.value.charAt(field.value.length - 1) != ",") ||
                        (event.keyCode >= 48 && event.keyCode <= 57)) {
                                if (event.keyCode >= 48 && event.keyCode <= 57) {
                                        if (field.value.charAt(field.value.length - 3) == ",") {
                                                 if (field.value.charAt(field.value.length - 1) == "-" || field.value.charAt(field.value.length - 1) == "+" || (field.value.charAt(field.value.length - 1) >= "0" && field.value.charAt(field.value.length - 1) <= "9") ) richtig = true;
                                        } else richtig = true;
                                } else {
                                        if (event.keyCode == 44) {
                                                if (field.value.charAt(field.value.length - 2) == ',' || (field.value.charAt(field.value.length - 3) == ',' && field.value.charAt(field.value.length - 1) != '+' && field.value.charAt(field.value.length - 1) != '-')) {
                                                        richtig = false;
                                                } else richtig = true;
                                        } else         richtig = true;
                                }

                        }
                }
        }
        else {
                if (field.value.length == 0) {
                        if (event.keyCode == 44 || event.keyCode == 31 || event.keyCode == 45 || (event.keyCode >= 48 && event.keyCode <= 57)) {
                                richtig = true;
                        }
                }
                else {
                        if (event.keyCode == 44 || event.keyCode == 31 ||
                                ((event.keyCode == 45 || event.keyCode == 43 ) && field.value.charAt(field.value.length - 1) != "-" && field.value.charAt(field.value.length - 1) != "+") ||
                                (event.keyCode >= 48 && event.keyCode <= 57)) {
                                richtig = true;
                        }
                }
        }

        return richtig;
}

function  validateMinus(field, event) {
        var anzahl = 0

        if (field.value.length == 0) {
                if (event.keyCode == 31 || event.keyCode == 45 || (event.keyCode >= 48 && event.keyCode <= 57)) {
                        return true
                }
        }
        else {
                if (event.keyCode == 31 || (event.keyCode >= 48 && event.keyCode <= 57)) {
                        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 checkCurrencySize(field,vk,nk){ // überprüft die größe. die zahl muss dabei im currency format geliefert werden
        // alert("Field: " + field.value + "; VK: " + vk + "; NK: " + nk);
        var wert = toNumeric(field.value) * 1;
        //        alert("Wert: " + wert);
        var maxsize= Math.pow(10,vk) - Math.pow(10,nk * -1); // = 999999.99 oder so

        if(wert > maxsize || wert < (maxsize * -1) ){
                //alert("Zahl zu groß: " + maxsize);
                return false;
        }
        else
                return true;
}
function toCurrencyNullSize(field, vk, nk)
{
        toCurrencyNull(field,nk);
        return checkCurrencySize(field,vk,nk);
}
function toCurrencySize(field, vk, nk)
{
        toCurrency(field,nk);
        return checkCurrencySize(field,vk,nk);
}

// wenn nichts eingegeben wird (NULL) wird es als nichts belassen, und nicht durch 0 ersetzt
// ansonsten gleich wie toCurrency
function toCurrencyNull(field, decimal) {
        if(field.value.length == 0 || field.value == ","){
                //07.12.2004 HJ: 0.00 vorbelgen // 21.12.2004 SN: in absprache mit HJ wieder zurückgebaut
//                field.value="0";
        }
        else
                toCurrency(field,decimal);
}

function toCurrency(field, decimal) {
        var komma = -1
        var helpField = ""
        var minus = ""
        var newField = ""
        var convertField = ""
        var nullField = ""
        var runden = ""
        var beginn = 0

        //alte Punkte bzw. Komma löschen
        convertField = toNumeric (field.value)
//        alert("toCurrency.convertField: " + convertField);
        if(decimal>0) {
                runden = convertField
                if (convertField.charAt(0) == '-') {
                        runden = convertField.substring(1)
                        minus = '-'
                }
                convertField = minus + runde_zahl(runden, decimal);
        }
//        alert("toCurrency.convertField (nach dezimal): " + convertField);
        field.value = toString (convertField);
//        alert("toCurrency.field.value: " + field.value);
        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
        }



        //Führende Nullen löschen
        for (i = 0; i < helpField.length; i++)
        {
                if ( helpField.charAt(i) != '0' || beginn == 1)
                {
                        nullField = nullField + helpField.charAt(i);
                        beginn = 1
                }
        }

        helpField = nullField


        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 = ""
//        alert("toString.value: " + value + "; .oldValue: " + oldValue + "; .oldValue.length: " + oldValue.length);
        for (i = 0; i < oldValue.length; i++) {
//                alert("toString.newValue: " + newValue);
                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)
}

function validateEingabeWert(field, event) {
//keycodes:
// 43: +
// 44: ,
// 45: -
// 48 - 57: 0 - 9

        var anzahl = 0;

        var richtig = false;

        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)) {
                                richtig = true;
                        }
                }
                else {
                        if (event.keyCode == 31 || (event.keyCode == 44 && field.value.charAt(field.value.length - 1) != ",") ||
                        ((event.keyCode == 45 || event.keyCode == 43 ) && field.value.charAt(field.value.length - 1) != "-" && field.value.charAt(field.value.length - 1) != "+" && field.value.charAt(field.value.length - 1) != ",") ||
                        (event.keyCode >= 48 && event.keyCode <= 57)) {
                                if (event.keyCode >= 48 && event.keyCode <= 57) {
                                        if (field.value.charAt(field.value.length - 3) == ",") {
                                                 if (field.value.charAt(field.value.length - 1) == "-" || field.value.charAt(field.value.length - 1) == "+" || (field.value.charAt(field.value.length - 1) >= "0" && field.value.charAt(field.value.length - 1) <= "9") ) richtig = true;
                                        } else richtig = true;
                                } else {
                                        if (event.keyCode == 44) {
                                                if (field.value.charAt(field.value.length - 2) == ',' || (field.value.charAt(field.value.length - 3) == ',' && field.value.charAt(field.value.length - 1) != '+' && field.value.charAt(field.value.length - 1) != '-')) {
                                                        richtig = false;
                                                } else richtig = true;
                                        } else         richtig = true;
                                }

                        }
                }
        }
        else {
                if (field.value.length == 0) {
                        if (event.keyCode == 44 || event.keyCode == 31 || event.keyCode == 45 || (event.keyCode >= 48 && event.keyCode <= 57)) {
                                richtig = true;
                        }
                }
                else {
                        if (event.keyCode == 44 || event.keyCode == 31 ||
                                ((event.keyCode == 45 || event.keyCode == 43 ) && field.value.charAt(field.value.length - 1) != "-" && field.value.charAt(field.value.length - 1) != "+") ||
                                (event.keyCode >= 48 && event.keyCode <= 57)) {
                                richtig = true;
                        }
                }
        }

        return richtig;
}

function toBerechneWert(field, nk) {
        var newvalue = "";
        var erg = 0;
        var zahl = "";
        var lastop = "";
        var ersteszeichen = "";

        //alle Kommastellen durch Punkte ersetzen!
        for(i = 0; i < field.value.length;++i) {
                if (field.value.charAt(i) == ',') {
                        newvalue = newvalue + '.';
                } else  {
                        if (field.value.charAt(i) != '.') {
                                newvalue = newvalue + field.value.charAt(i);
                        }
                }
        }


        //die einzelnen Eingabewerte zusammenrechnen
        //in der variablen ZAHL wird immer die Zahl zwischen den Operatoren gesichert
        //ERG enthält danach das Endergebnis
        for (i = 0; i < newvalue.length;++i) {
                //wenn ein - (nicht an erster stelle) oder + gefunden wird
                //wird das ergebnis berechnet
//16.03.2005 HaJ: + modifiziert, damit man bei Feldinhalt 0.00 mit + addieren kann
                if ((newvalue.charAt(i) == '-' && i != 0) || (newvalue.charAt(i) == '+' && i!= 0)) {
                        //beim ersten Auftreten von + oder - wird die bisher ermittelte Zahl
                        //als Ergebnis genommen, wenn an erster Stelle ein - stand, mit -1 multipliziert
                        if (lastop == '') {
                                erg = parseFloat(zahl);
                                if (ersteszeichen == '-') erg = erg * -1;
                                zahl = "";
                        } else {
                                //bei jedem weiteren Auftreten wird abhängig vom letzten operator
                                //die vorige Zahl dazugezählt oder subtrahiert
                                if (lastop == '+') {
                                        erg = erg + parseFloat(zahl);
                                } else {
                                        erg = erg - parseFloat(zahl);
                                }
                                //Zahl wird zurückgesetzt
                                zahl = "";
                        }
                        //der aktuelle Operator wird gesichert
                        lastop = newvalue.charAt(i);
                } else {
                        //wurde kein + bzw kein - bzw ein minus an erster Stelle gefunden
                        //wenn - an erster Stelle wird es nicht übernommen aber gemerkt
                        if (i == 0 && newvalue.charAt(i) == '-') {
                                ersteszeichen = '-';
                        } else {
                                zahl = zahl + newvalue.charAt(i);
                        }
                }
        }

        if (lastop == '') {
                erg = parseFloat(zahl);
                if (ersteszeichen == '-') erg = erg * -1;
        } else {
                if (lastop == '+') {
                        erg = erg + parseFloat(zahl);
                } else {
                        erg = erg - parseFloat(zahl);
                }
        }

        //Ausgabe formatieren
        //field.value = toString(erg);
        field.value = runde_zahl(erg, nk);
        field.value = field.value.substring(0,field.value.indexOf('.')) + ',' + field.value.substring(field.value.indexOf('.')+1);
        toCurrency(field, nk); // 21.12.04 SN: auf to Currency ohne Null in absprache mit MH und HJ

        //prüfen, ob die Zahl zu gross ist, wenn ja, Focus setzen und Fehlermeldung schreiben!
        if (checkCurrencySize(field,16-nk,nk) == false) {
                document.getElementsByName(field.name)[0].focus();
        }
}

function runde_zahl(x, n) {
  if (n < 1 || n > 14) return false;
  var e = Math.pow(10, n);
  var k = (Math.round(x * e) / e).toString();
//  var l = k // für ausgabe im alert
  if(k.indexOf('e') != -1) { // SN: 21.12.2004: damits auch mit großen Zahlen funktioniert das if
  //kann nur bei zu großen zahlen (= positiven e werten > 10 oder so) auftreten und wurde auch nur hierfür geschrieben.
  //kleine zahlen wurden oben gerundet
          var ewert = k.substring(k.indexOf('e')+2); // für das e und das + zeichen
          var versuch = k.charAt(0) + k.substring(2,k.indexOf('e'));
          var nullen = "";
          for(i=0;i<(ewert-versuch.length+1);i++)
                  nullen = nullen + "0";
          k = versuch + nullen;
  }
  //alert("runde_zahl.x: " + x + "; .n: " + n + "; .e: " + e + "; .k: " + k + "; .versuch: " + versuch + "; .ewert: " + ewert + "; .l: " + l);
  if (k.indexOf('.') == -1) k += '.';
  k += e.toString().substring(1);
  return k.substring(0, k.indexOf('.') + n+1);
}
