


// +-----------------------------------------------------------------------------------------------------+
// | rechner.js                                                                                          |
// +-----------------------------------------------------------------------------------------------------+
// | Copyright (c) 2008 steuerberaten.de                                                                 |
// +-----------------------------------------------------------------------------------------------------+
// | Datum: 07.07.2008                                                                                   |
// +-----------------------------------------------------------------------------------------------------+
// | Urheberrechtshinweis:                                                                               |
// | Diese Script ist urheberrechtlich geschützt. Einer Freigabe zur Publikation in anderen Medien oder  |
// | zu sonstiger Verwendung wird ausdrücklich widersprochen. Jede Zuwiderhandlung wird - unabhängig von |
// | Zweck, Person, Umfang, Einsatzgebiet - sofort und ohne weitere Warnung juristisch verfolgt.         |
// +-----------------------------------------------------------------------------------------------------+
// | Autor: Michael Mühl <muehl@emric.de>                                                                |
// +-----------------------------------------------------------------------------------------------------+



// ********** INFO TEXTE *********
function set_info(type)
 {
 	var TAXCALC = "19272001169";
	var obj;
    var txt;

    if (document.all)
      obj = document.all.infotext;
    else
      obj = document.getElementById("infotext");


	switch (type)
    {
		case "ausgabe":
			txt = txtausgabe
			break;
		
		case "entfernung":
			txt = "Geben Sie die einfache Entfernung für den kürzesten Weg zwischen Wohnung und Arbeitsstätte ein";
			break;
		case "arbeitstage":
			txt = "An wieviel Tagen sind Sie zu Ihrer Arbeitsstätte gefahren?";
			break;
		case "einkommen":
			txt = "Geben Sie bitte das zu versteuernde Einkommen ein";
			break;
			
		case "entfernung_invalid_mann":
			txt = "Beim Mann: Die Entfernung muss mindestens 1 km betragen";
			break;
		case "entfernung_empty_mann":
			txt = "Beim Mann: Bitte geben Sie die Entfernung zum Arbeitsplatz ein";
			break;	
		case "arbeitstage_invalid_mann":
			txt = "Beim Mann: Höchstens 365 Tage";
			break;	
		case "arbeitstage_empty_mann":
			txt = "Beim Mann: Bitte geben Sie die Anzahl der Arbeitstage ein";
			break;		
		case "einkommen_empty_mann":
			txt = "Beim Mann: Bitte geben Sie das Einkommen ein";
			break;	
		/*case "steuersatz_invalid_mann":
			txt = "Beim Mann: Der Steuersatz sollte zwischen 0% und 42% liegen";
			break;*/	
			
		case "entfernung_invalid_frau":
			txt = "Bei der Frau: Die Entfernung muss mindestens 1 km betragen";
			break;
		case "entfernung_empty_frau":
			txt = "Bei der Frau: Bitte geben Sie die Entfernung zum Arbeitsplatz ein";
			break;	
		case "arbeitstage_invalid_frau":
			txt = "Bei der Frau: Höchstens 365 Tage";
			break;	
		case "arbeitstage_empty_frau":
			txt = "Bei der Frau: Bitte geben Sie die Anzahl der Arbeitstage ein";
			break;		
		case "einkommen_empty_frau":
			txt = "Bei der Frau: Bitte geben Sie das Einkommen ein";
			break;	
		/*case "steuersatz_invalid_frau":
			txt = "Bei der Frau: Der Steuersatz sollte zwischen 0% und 42% liegen";
			break;*/	

	}

    obj.innerHTML = txt;

  }
  
function berechne_steuer(einkommen)
{
	if (einkommen <= 7664)
		return 0;

	if (einkommen <= 12739) {
		y = (einkommen - 7664) / 10000;
		return Math.floor((883.74 * y + 1500) * y);
	}

	if (einkommen <= 52151) {
		z = (einkommen - 12739) / 10000;
		return Math.floor((228.74 * z + 2397) * z + 989);
	}

	if (einkommen <= 250000) {
		return Math.floor(0.42 * einkommen) - 7914;
	}

	return Math.floor(0.45 * einkommen - 15414);
}

// ********** CALC *********
function CalcEntfernung(widget, style)  
{
	style_action(style);
	
	if (widget == "") widget = false;
	else widget = true;

	var error_mann = false;
	var error_frau = false;

	var entfernung_mann		= parseInt(document.eingabe.entfernung_mann.value);
	var entfernung_frau		= parseInt(document.eingabe.entfernung_frau.value);
	var arbeitstage_mann	= parseInt(document.eingabe.arbeitstage_mann.value);
	var arbeitstage_frau	= parseInt(document.eingabe.arbeitstage_frau.value);
	var einkommen_mann		= parseInt(document.eingabe.einkommen_mann.value);
	var einkommen_frau		= parseInt(document.eingabe.einkommen_frau.value);

	pauschale_unbegrenzt_mann = 0;
	pauschale_unbegrenzt_frau = 0;
	pauschale_unbegrenzt_familie = 0;
	pauschale_ab21_mann	= 0;
	pauschale_ab21_frau	= 0;
	pauschale_ab21_familie	= 0;
	werbungskosten_mann = 0;
	werbungskosten_frau = 0;
	werbungskosten_familie = 0;
	eksteuer_mann = 0;
	eksteuer_frau = 0;
	eksteuer_familie = 0;
	soli_mann = 0;
	soli_frau = 0;
	kirche_mann = 0;
	kirche_frau = 0;
	summe_mann = 0;
	summe_frau = 0;
	summe_familie = 0;
	
	if (!einkommen_frau && (!einkommen_mann || einkommen_mann == 0 || einkommen_mann == '')) { error_mann = true; set_info('einkommen_empty_mann');	}
	if (einkommen_mann > 0)
	{
		if (arbeitstage_mann != "" && arbeitstage_mann > 365) { error_mann = true;  set_info('arbeitstage_invalid_mann'); }
		if (!arbeitstage_mann || arbeitstage_mann == 0 || arbeitstage_mann == '') { error_mann = true; set_info('arbeitstage_empty_mann');	}
		if (!einkommen_mann || einkommen_mann == 0 || einkommen_mann == '') { error_mann = true; set_info('einkommen_empty_mann');	}
		if (!entfernung_mann) { error_mann = true; set_info('entfernung_empty_mann');	}	
		if (entfernung_mann != "" && entfernung_mann < 1) { error_mann = true; set_info('entfernung_invalid_mann');	}	
	}
	
	if (!einkommen_frau && (entfernung_frau || arbeitstage_frau )) { error_frau = true; set_info('einkommen_empty_frau');	}
	if (einkommen_frau > 0)
	{
		if (arbeitstage_frau != "" && arbeitstage_frau > 365) { error_frau = true; set_info('arbeitstage_invalid_frau'); }
		if (!arbeitstage_frau || arbeitstage_frau == 0 || arbeitstage_frau == '') { error_frau = true; set_info('arbeitstage_empty_frau');}
		if (!entfernung_frau) { error_frau = true; set_info('entfernung_empty_frau');	}	
		if (entfernung_frau != "" && entfernung_frau < 1) { error_frau = true; set_info('entfernung_invalid_frau');	}	
	}
	
	if (!error_mann && einkommen_mann > 0) {
	
		pauschale_unbegrenzt_mann = entfernung_mann * arbeitstage_mann * 0.3;
		
		if (entfernung_mann > 20) 
		{
			entfernung_mann = entfernung_mann - 20;
			pauschale_ab21_mann	= entfernung_mann * arbeitstage_mann * 0.3;
		}
		else {	pauschale_ab21_mann	= 0; }
		
		werbungskosten_mann = pauschale_unbegrenzt_mann - pauschale_ab21_mann;
		eksteuer_mann = berechne_steuer(einkommen_mann);
		summe_mann = eksteuer_mann - berechne_steuer(einkommen_mann - werbungskosten_mann);
	}
	
	
	if (!error_frau && einkommen_frau > 0) {
	
		pauschale_unbegrenzt_frau = entfernung_frau * arbeitstage_frau * 0.3;
		
		if (entfernung_frau > 20) 
		{
			entfernung_frau = entfernung_frau - 20;
			pauschale_ab21_frau	= entfernung_frau * arbeitstage_frau * 0.3;
		}
		else {	pauschale_ab21_frau	= 0; }
		
		werbungskosten_frau = pauschale_unbegrenzt_frau - pauschale_ab21_frau;
		eksteuer_frau = berechne_steuer(einkommen_frau);
		summe_frau = eksteuer_frau - berechne_steuer(einkommen_frau - werbungskosten_frau);
	}

	if (!error_mann && !error_frau) {

		if (isNaN(einkommen_mann))
			einkommen_mann = 0;
		if (isNaN(einkommen_frau))
			einkommen_frau = 0;

		einkommen_familie = einkommen_mann + einkommen_frau;
		halbes_einkommen_familie = einkommen_familie / 2;
		
		pauschale_unbegrenzt_familie = pauschale_unbegrenzt_mann + pauschale_unbegrenzt_frau;
		pauschale_ab21_familie = pauschale_ab21_mann + pauschale_ab21_frau;
		werbungskosten_familie = werbungskosten_mann + werbungskosten_frau;
		eksteuer_familie = berechne_steuer(halbes_einkommen_familie) * 2;
		summe_familie = eksteuer_familie - berechne_steuer((einkommen_familie - werbungskosten_familie) / 2) * 2;
	}

	if (!error_mann && !error_frau) 
	{
		textzusammen(widget);
		set_info('ausgabe');
	}

}


function textzusammen(widget) 
{	

	text = "<TABLE cellspacing=0 cellpadding=0 border=0'>";
	text += "<TR><td class='cell_line'>&nbsp;</td><td class='cell_line_border'>&nbsp;</td><td class='cell_line_border'>&nbsp;</td><td class='cell_line_border'>&nbsp;</td></TR>";
	
	text += "<TR><TD></TD><TD class='cell_border'>Mann&nbsp;<br />&nbsp;Grundt.&nbsp;</TD><TD class='cell_border'>Frau&nbsp;<br />&nbsp;Grundt.&nbsp;</TD><TD class='cell_border'>Familie&nbsp;<br />&nbsp;Splitting&nbsp;</TD></TR>";

	text += "<TR><TD class='cell'>Pendlerpauschale insg.:</TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(pauschale_unbegrenzt_mann) + " &euro;&nbsp;</nobr></TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(pauschale_unbegrenzt_frau) + " &euro;&nbsp;</nobr></TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(pauschale_unbegrenzt_familie) + " &euro;&nbsp;</nobr></TD></TR>";

	
	text += "<TR><TD class='cell'>Pendlerpauschale ab 21 km:</TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(pauschale_ab21_mann) + " &euro;&nbsp;</nobr></TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(pauschale_ab21_frau) + " &euro;&nbsp;</nobr></TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(pauschale_ab21_familie) + " &euro;&nbsp;</nobr></TD></TR>";
	text += "<TR><td class='cell_line'>&nbsp;</td><td class='cell_line'>&nbsp;</td><td class='cell_line'>&nbsp;</td><td class='cell_line'>&nbsp;</td></TR>";
		
	text += "<TR><TD class='cell_green'>Differenz Werbungskosten:</TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(werbungskosten_mann) + " &euro;&nbsp;</nobr></TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(werbungskosten_frau) + " &euro;&nbsp;</nobr></TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(werbungskosten_familie) + " &euro;&nbsp;</nobr></TD></TR>";
	text += "<TR><td class='cell_line'>&nbsp;</td><td class='cell_line'>&nbsp;</td><td class='cell_line'>&nbsp;</td><td class='cell_line'>&nbsp;</td></TR>";
	
	text += "<TR><TD colspan=4 class='cell_green'>Erstattung nach dem Urteil des Verfassungsgerichtes</TD>";
	text += "<TR><td class='cell_line'>&nbsp;</td><td class='cell_line'>&nbsp;</td><td class='cell_line'>&nbsp;</td><td class='cell_line'>&nbsp;</td></TR>";
		
	text += "<TR><TD class='cell_green'>Gesamt-Erstattung:<br />(zzgl. Soli und ggf. KiSt.)</TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(summe_mann) + " &euro;&nbsp;</nobr></TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(summe_frau) + " &euro;&nbsp;</nobr></TD>";
	text += "<TD class='cell_border'><nobr>&nbsp;" + komma(summe_familie) + " &euro;&nbsp;</nobr></TD></TR>";
	text += "<TR><td class='cell_line'>&nbsp;</td><td class='cell_line'>&nbsp;</td><td class='cell_line'>&nbsp;</td><td class='cell_line'>&nbsp;</td></TR>";	
		
	text += "</TABLE>";


	if (!widget) 
	{ 
		promo = promo_e;
	} 
	else 
	{ 
		promo = "";
	}

	txtausgabe = text+promo;
}


