var jahr;
var merktxt;
var eu=1;
var dm=1;
var dmEur="EUR";
var eur=1;

function est(zvE, tabArt, eur)
{
  zvE = Math.floor(zvE)
  if (zvE>0) 
  {
    document.steuerber.Eink.value = zvE;
    if (eur==1) 
    {
      dm = 1.95583; 
      eu = 1; 
      dmEur = "DM";
    }
    else
    {
      dm = 1;
      eu = 1.95583;
      dmEur = "&euro;";
    }
    var dmy="Splitting";
    if (tabArt==1) dmy="Grund";

// prüfen, ob Fenster schon geöffnet ist


    var drk;
    drk = "<html><head><title>Einkommensteuerberechnung ab 1996<\/title>";
    drk = drk + "<style type=\"text/css\">\n";
    drk = drk + "<!--\n";
    drk = drk + "td { color:black; font-size:10pt; font-family:Verdana;";
    drk = drk + " font-weight:bold;}\n//-->\n";
    drk = drk + "<\/style><\/head><body bgcolor=\#eeeeee onblur=\"javascript:nF.close();\">";
    drk = drk + "<table border=0 align=center height=\"100%\"><tr><td valign=middle><table border=1 align=center cellpadding=0 cellspacing=0 ";
    drk = drk + "height=300 bgcolor=white>";
    drk = drk + "<tr><td colspan=4 align=center bgcolor=#dddddd><font color=darkblue>";
    drk = drk + "Einkommensteuerberechnung ab 1996<br>";
    drk = drk + "zu verst. Einkommen " + dmEur +" ";
    drk = drk + texte(zvE) + " (";
    drk = drk + dmy + "tabelle)<\/font><\/td><\/tr>";
    drk = drk + "<tr bgcolor=\"#eeeeee\"><td align=center width=100>Jahr/e<\/td>";
    drk = drk + "<td width=135 align=center>Einkommen-<br>steuer in " + dmEur;
    drk = drk + "<\/td><td width=110 align=center>Durchschn.-<br>Steuersatz %<\/td>";
    drk = drk + "<td align=center width=110>Grenz-<br>Steuersatz %<\/td><\/tr>";
    for(jahr = 1997; jahr <= 2008; jahr++) 
    {
      jahrtxt = jahr;
      if (jahr==1997) jahrtxt="1996 - 1997";
      if (jahr==2002) {jahrtxt="2002 - 2003"; jahr=2003;};
      if (jahr==2005) jahrtxt="2005 - 2006";
      if (jahr==2006) jahrtxt="2007 - 2008";
      if (jahr==2007) jahrtxt="2009";
      if (jahr==2008) jahrtxt="ab 2010";
      drk = drk + "<tr><td align=center bgcolor=\"#eeeeee\">" + jahrtxt; 
      drk = drk + "<\/td><td align=right";
      if (jahr==2008) {drk = drk + " bgcolor=yellow";}
      drk = drk + ">" + texte(stbr(jahr, zvE, tabArt)) 
      drk = drk + "&nbsp;<\/td><td align=right>";
      drk = drk + texte(stbr(jahr, zvE, tabArt)*100/(zvE+0.001)) + "&nbsp;<\/td><td align=right>" + texte(grenz(jahr, zvE, tabArt)) + "&nbsp;<\/td><\/tr>";
    }
    drk = drk + "<tr><td align=left colspan=4 bgcolor=\"#dddddd\" height=40>&nbsp;<br><center>";
    drk = drk + "<a href=\"JavaScript:self.close();\">";
    drk = drk + "<font style=\"{color:red; font-size:8pt; font-family:Verdana;}\">";
    drk = drk + "Fenster schlie&szlig;en<\/font><\/a><\/center><br><\/td><\/tr><\/table><\/td><\/tr><\/table>";
    drk = drk + "<font style=\"{font-size:8pt;font-family:Verdana;}\">" + merktxt + "<\/font><\/body><\/html>";
    nF=open("","nF","width=480 height=370 top=1 left=1 resizable=no");
    nF.document.write(drk);
    nF.focus();
  }
  else
  {
    alert("Die eingegebene Zahl ist nicht korrekt.");
    self.document.steuerber.Eink.focus();
  } 
}

function texte(betrag)
{
  var wert = "" + Math.round(betrag*100);
  for(var i = 1; i <= 2; i++) if (wert.length == i) wert = "0" + wert;
  for(var i = 5; i <= 18; i+=4) if (wert.length > i) wert = wert.substr(0, wert.length - i) + "." + wert.substr(wert.length - i, i);
  wert = wert.substr(0, wert.length - 2) + "," + wert.substr(wert.length - 2, 2);
  return(wert);
}

function stbr(jahr, zvE, tabArt)
{
  var st;
  switch(jahr-1996)
  {
    case 1:
      zl=new Array(54,0,12096,55728,86.63,2590,120042,151.91,3346,12949,0.53,22842);
      st=estall(zvE*eu, tabArt)/eu;
      break;
    case 2:
      zl=new Array(54,0,12366,58644,91.19,2590,120042,151.96,3434,13938,0.53,22843);
      st=estall(zvE*eu, tabArt)/eu;
      break;
    case 3:
      st=est1999(zvE*eu, tabArt)/eu;
      break;
    case 4:
      zl=new Array(54,0,13500,17496,262.76,2290,114696,133.74,2500,957,0.51,20575);
      st=estall(zvE*eu, tabArt)/eu;
      break;
    case 5:
      zl=new Array(54,27,14094,18090,387.89,1990,107568,142.49,2300,857,0.485,19299);
      st=estall(zvE*eu, tabArt)/eu;
      break;
    case 7:
      zl=new Array(36,18,7236,9252,768.85,1990,55008,278.65,2300,432,0.485,9872);
      st=estall(zvE/dm, tabArt)*dm;
      break;
    case 8:
      zl=new Array(1,0,7665,12740,793.1,1600,52152,265.78,2405,1016,0.45,8845);   
      st=estall(zvE/dm, tabArt)*dm;
      break;
    case 9:
      zl=new Array(1,0,7665,12740,883.74,1500,52152,228.74,2397,989,0.42,7914);
      st=estall(zvE/dm, tabArt)*dm;
      break;
    case 10:
      zl=new Array(1,0,7665,12740,883.74,1500,52152,228.74,2397,989,0.42,7914);
      st=estall(zvE/dm, tabArt)*dm;
      break;
    case 11:
      zl=new Array(1,0,7835,13140,939.68,1400,52552,228.74,2397,1007,0.42,8064);
      st=estall(zvE/dm, tabArt)*dm;
      break; 
    case 12:
      zl=new Array(1,0,8005,13470,912.17,1400,52882,228.74,2397,1038,0.42,8172);
      st=estall(zvE/dm, tabArt)*dm;
      break;
  }
  return (Math.floor(st));
}

function grenz(jahr, zvE, tabArt)
{
  var st;
  switch(jahr-1996)
  {
    case 1:
      st=Grenzall(zvE*eu, tabArt);
      break;
    case 2:
      st=Grenzall(zvE*eu, tabArt);
      break;
    case 3:
      st=Grenz1999(zvE*eu, tabArt);
      break;
    case 4:
      st=Grenzall(zvE*eu, tabArt);
      break;
    case 5:
      st=Grenzall(zvE*eu, tabArt);
      break;
    default:
      st=Grenzall(zvE/dm, tabArt);
      merktxt = "";      
      if (jahr > 2005)
      {
        oGr = 250000;
        if (jahr == 2007) oGr = 250400;
        if (jahr == 2008) oGr = 250730;
        if (zvE/dm/tabArt > oGr) 
        {
          st = 45;
          merktxt = "ab 2007 gegebenenfalls Erm&auml;&szlig;igung nach &sect; 32c EStG";
        }
      }
      break;
  }
  return (st);
}

function estall(Einkommen, Tabelle)
{
  var Wert = 0;
  var x = Math.floor(Einkommen / Tabelle /zl[0]) * zl[0] + zl[1];
  var y;
  if (x < zl[2]) Wert = 0;
  else
  {
    if (x < zl[3])
    {
      y = (x - (zl[2] - zl[0])) / 10000;
      Wert = Math.floor((y * zl[4] + zl[5]) * 1000) / 1000;
      Wert = Math.floor(Wert * y);
    }
    else
    {
      if (x < zl[6])
      {
        y = (x - (zl[3] - zl[0])) / 10000;
        Wert = Math.floor((y * zl[7] + zl[8]) * 100000) / 100000;
        Wert = Math.floor(Wert * y + zl[9]);
      }
      else Wert = Math.floor(x * zl[10] - zl[11] );
    }
  }
  if (jahr == 2006)
  {
    if (x > 250000)
    Wert = Math.floor(x * 0.45 - 15414);
  }
  if (jahr == 2007)
  {
    if (x > 250400)
    Wert = Math.floor(x * 0.45 - 15576);
  }
  if (jahr == 2008)
  {
    if (x > 250730)
    Wert = Math.floor(x * 0.45 - 15694);
  }


  Wert = Wert * Tabelle;
  return Wert;
}

function Grenzall(Einkommen, Tabelle)
{
  var Wert;
  var x;
  var y;
  x = Math.floor(Einkommen / Tabelle /zl[0]) * zl[0] + zl[1];
  if (x < zl[2]) Wert = 0;
  else
  {
    if (x < zl[3])
    {
      y = (x - (zl[2] - zl[0])) / 10000;
      Wert = (2 * zl[4] * y + zl[5]) / 100;
    }
    else
    {
      if (x < zl[6])
      {
        y = (x - (zl[3] - zl[0])) / 10000;
        Wert = (2 * zl[7] * y + zl[8]) / 100;
      }
      else Wert = zl[10] * 100;
    }
  }
  return Wert;
}

function est1999(Einkommen, Tabelle)
{
  var Wert;
  var x = Math.floor(Einkommen / Tabelle /54) * 54;
  var y1 = (x - 13014) / 10000;
  var y2 = (x - 17010) / 10000;
  var z = (x - 66312) / 10000;
  if (x < 13068) Wert = 0;
  else
  {
    if (x < 17064)
    {
      Wert = Math.floor((y1 * 350.35 + 2390) * 1000) / 1000;
      Wert = Math.floor(Wert * y1);
    }
    else
    {
      if (x < 66366)
      {
        Wert = Math.floor((y2 * 101.31 + 2670) * 1000) / 1000;
        Wert = Math.floor(Wert * y2 + 1011);
      }
      else
      {
	if (x < 120042)
        {
          Wert = Math.floor((z * 151.93 + 3669) * 1000) / 1000;
          Wert = Math.floor(Wert * z + 16637);
        }
        else Wert = Math.floor(x * 0.53 - 22886);
      }
    }
  }
  Wert = Wert * Tabelle;
  return Wert;
}

function Grenz1999(Einkommen, Tabelle)
{
  var Wert;
  var x;
  var y;
  x = Math.floor(Einkommen / Tabelle /54) * 54;
  if (x < 13068) Wert = 0;
  else
  {
    if (x < 17064)
    {
      y = (x - 13014) / 10000;
      Wert = (700.7 * y + 2390) / 100;
    }
    else
    {
      if (x < 66366)
      {
        y = (x - 17010) / 10000;
        Wert = (202.62 * y + 2670) / 100;
      }
      else
      {
        if (x < 120042)
        {
          y = (x - 66312) / 10000;
          Wert = (303.86 * y + 3669) / 100;
        }
        else Wert = 53;
      }
    }
  }
  return Wert;
}