function berechnen_ch_it_anlagemix(formname, layername)
{
        // Anlagemix berechnen
        var fc = 0;                                      // eingegebene Felder
        var x = komma_ch( formname.x.value );         // Anlagebetrag
                                                         // Modus monatlich, viertelj. ...
        var m = zahl_ch(  formname.m.options[formname.m.options.selectedIndex].value );
        var n = komma_ch( formname.n.value );         // Laufzeit
        var p = komma_ch( formname.p.value );         // Zins
        var r = komma_ch( formname.r.value );         // Rate
        var z = komma_ch(formname.z.value );         // Ergebnis
        if ((x != "") && (!kommaZahl( x ) || ( x < 1 ) || ( x > 999999999 ))) {
                alert( "Vogliate introdurre solo un numero fra 1 e 999'999'999." );
                formname.x.value = "";
                formname.x.focus();
                return;
        }
        if ((m != "") && ( !ganzeZahl( m ) || ( m <  1) || ( m > 12))) {
                alert("Vogliate introdurre solo un numero interi fra 1 e 12.");
               formname.m.value = "";
               formname.m.focus();
                return;
        }
        if ((n != "") && (!kommaZahl( n ) || ( n <  1) || ( n > 100))) {
                alert("Bitte geben Sie eine ganze Zahl zwischen 1 e 100.");
                formname.n.value = "";
               formname.n.focus();
                return;
        }
        if ((p != "") && (!kommaZahl( p ) || ( p <= 0 ) || (p > 100))) {
                alert( "Vogliate introdurre solo un numero fra 0 e 50." );
                formname.p.value = "";
                formname.p.focus();
                return;
        }
        if ((r != "") && (!kommaZahl( r ) || ( r <=  0 ) || (r > 999999999))) {
                alert( "Vogliate introdurre solo un numero fra 1 e 999'999'999." );
                formname.r.value = "";
                formname.r.focus();
                return;
        }
        if ((z != "") && (!kommaZahl( z ) || ( z <  1))) {
                alert("Vogliate introdurre solo un numero fra 1 e 999'999'999.");
               formname.z.value = "";
                formname.z.focus();
                return;
        }
        // gef|llte Felder zdhlen
        if ( x != "" ) fc ++;
        if ( m != "" ) fc ++;
        if ( n != "" ) fc ++;
        if ( p != "" ) fc ++;
        if ( r != "" ) fc ++;
        if ( z != "" ) fc ++;
        // Feld lvschen ergibt neues Zielfeld f|rs Rechnen
        if (( x == "" ) || ( m == "" ) || ( n == "" ) || ( p == "" ) || ( r == "" ) || ( z == "" ))                      last = "";

        if ( fc < 5 ) return;
        // Anfangswert berechnen
        if ((x == "") || ((last =="x") && (fc > 5))) {
          formname.x.value = runden_ch( (z - Rentenendwert_vor( r, p, m, n )) / Math.pow( 1.0 + p / 100.0, n)  );
           last = "x";
           return;
        }
        // Rate berechnen
        if ((r == "") || ((last =="r") && (fc > 5))) {
           formname.r.value = runden_ch( Rateendwert_vor( z - WertInvest( x, p, n), p, m, n ));
           last = "r";
           return;
        }
        // Laufzeit berechnen
        if ((n == "") || ((last =="n") && (fc > 5))) {
           p = p / 100.0;
           var r1 = r * (m + ((m + 1.0) * p / 2.0));
           var k  = Math.log( (z * p + r1) / (x * p + r1 )) / Math.log( 1.0 + p );
           var jr = Math.round( k - 0.5 );
           var mt = Math.round( (k - (Math.ceil( k ) - 1.0)) * 12.0 );
           if (mt >= 12) {
               mt -= 12;
               jr += 1;
           }
           formname.n.value = jr;
           setMonate( mt, layername, "it" );
           last = "n";
           return;
        }
        // Zins berechnen
        if ((p == "") || ((last =="p") && (fc>4))) {
           var c  = z;
           var e1 = 1.05;
           var d  = 1.0;
           while( Math.abs( d ) > 0.0001) {
                  var f  = r * (Math.pow( e1, n )  - 1.0) * (m / (e1 - 1.0) + ( m + 1.0 ) / 2.0) + x * Math.pow( e1, n);
                  var f1 = ((n * Math.pow(e1, n - 1.0) * (m / (e1 - 1.0) + ( m + 1.0 ) / 2.0)) -
                           (Math.pow( e1, n )  - 1.0) *  m / Math.pow(e1 - 1.0, 2.0)) * r +
                           ( x * n * Math.pow( e1, n - 1.0));
                  var e2 = e1 - (f - c) / f1;
                  d  = e2 - e1;
                  e1 = e2;
           }
           formname.p.value = runden_ch( (e1 - 1.0) * 100.0);
           last = "p";
           return;
        }
        // Ergebnis berechnen
        if ((z == "") || ((last =="z") && (fc > 5))) {
           formname.z.value = runden_ch( Rentenendwert_vor( r, p, m, n ) + WertInvest( x, p, n ) );
           last = "z";
           return;
        }
}
