function round(zahl,stellen){
var exp=10^stellen;
var roundz= Math.round(zahl*exp)/exp;
return roundz.toFixed(2).replace(".", ",");
}



function kalkSoli(ekst){
	if(ekst>972){
		return ekst*0.055;
	}else{
		return 0;
	}
}
function kalkKiSt(ekst){
	if ($('#kirchensteuerNEIN:checked').val() != null) {
		 return 0;
		}else{
	return ekst * 0.09;}
}
function kalkulateGewerbesteuer(gewinn, hebesatz) {
	if ($('#GewerbesteuerNEIN:checked').val() != null){return 0;}
	else{gewinn = gewinn * 1;
	if (gewinn > 24500) {
		var messzahl= (gewinn - 24500) * 0.035 ;
		var gwst=messzahl * (hebesatz / 100) ;		
		if(gwst>0){return gwst;}
		else return 0;
	} else {
		return 0;
	}}
}
function steuerlichRelevanteVorsorge() {
	var vorsorgohnerv = (1 * $("#krankenversicherung").val())
			+ (1 * $("#Berufsunfähigkeit").val())
			+ (1 * $("#sonstige_versicherungen").val())
			;
	//alert(vorsorgohnerv);
	if (vorsorgohnerv > 2800) {
		return 2800 + (0.7 * getSteuerlichRelevanteRente($("#rentenversicherung").val()));
	} else {
		return vorsorgohnerv
				+ (0.7 * getSteuerlichRelevanteRente($("#rentenversicherung").val()));
	}
	function getSteuerlichRelevanteRente(rente){
		if(rente<20000){
			return rente;
		}
		else{
			return 20000;
		}
	}
}
function einkommenst(zvE) {
	var yyy = -1;
	var est = -1;
	var freibatrag=8004;
	var zweiteZone=13469;
	var dritteZone=52881;
	var vierteZone=250400;
	var fuenfteZone=250401;
	zvE = zvE * 1;
	if (zvE <= freibatrag) {
		return 0;
	} else {
		if (zvE <= zweiteZone) {
			yyy = (zvE - freibatrag) / 10000;
			est = (912.17 * yyy + 1400) * yyy;
			return est;
		} else {
			if (zvE <= dritteZone) {
				yyy = (zvE - zweiteZone) / 10000;
				est = (228.74 * yyy + 2397) * yyy +1038;
				return est;
			} else {
				if (zvE <= vierteZone) {
					est = 0.42 * zvE - 8172;
					return est;
				} else {
					if (zvE >= fuenfteZone) {
						est = 0.45 * zvE - 15694;
						return est;
					}
				}
			}
		}
	}
}

function validate(dies) {
	// $(this).next("span").css('display','inline').fadeOut(1000);
	// alert( typeof($(this).val()*1));
	var myval = trim(dies.val());
	var Ausdruck = /^[0-9]{1,}(\.[0-9]{1,}){0,1}$/;
	if (myval == "") {
		if ($(dies).hasClass("required")) {
			// alert("Pflichtfeld");
			addError(dies, "Das Feld darf nicht leer sein!");
			return false;
		} else {
			removeError(dies);
			return true;
		}
	} else {

		// alert("nicht leer");
		if (!Ausdruck.test(myval)) {
			addError(dies,
					"Bitte eine gültige Zahl angeben, in der Form 99 oder 99.99! ");
			return false;

		} else {
			removeError(dies);
			return true;
		}
	}
}
function trim(zeichenkette) {
	// Erst führende, dann Abschließende Whitespaces entfernen
	// und das Ergebnis dieser Operationen zurückliefern
	return zeichenkette.replace(/^\s+/, '').replace(/\s+$/, '');
}
function addError(dies, msg) {
	$(dies).css("border", "1px solid red");
	$(dies).parents('p').children('div .formfield_error').html(msg).show();
	if (!$(dies).hasClass("error")) {
		$(dies).addClass("error");
	}
	if ($(dies).hasClass("empty")) {
		$(dies).removeClass("empty");
	}
}
function removeError(dies) {
	$(dies).parents('p').children('div .formfield_error').hide();
	$(dies).removeAttr("style");
	if ($(dies).hasClass("empty")) {
		$(dies).removeClass("empty");
	}
}
$(document)
		.ready(function() {
			//$("#Ergebnisse").hide();
				var sel = $("#kalkulator-from p");
				sel
						.append("<div class='formfield_error' style='color:red; border:1px solid red;clear:left;'>Hello</div>");
				$("#kalkulator-from .formfield_error").hide();
				$("form input:radio").click(function() {
					//alert($(this).name);
						if ($(this).attr('id') == "GewerbesteuerJA") {
							//alert("ja");
							$("#hebesatz").addClass("required error");
							$("#hebesatz").removeAttr("disabled");
						}
						if ($(this).attr('id') == "GewerbesteuerNEIN") {
							removeError("#hebesatz");
							$("#hebesatz").removeClass("required");
							$("#hebesatz").attr("disabled", "disabled");
						}

						//alert("klick");
					});
				//					$("#GewerbesteuerJA:checked").click(function(){
				//						$("#hebesatz").addClass("required");
				//						$("#hebesatz").removeAttr("disabled");
				//					});
				var allInput = $('#kalkulator-from :input[type="text"]');
				allInput.addClass("empty");
				allInput.blur(function() {
					validate($(this));
				});
				$("#kalkulator-from")
						.submit(
								function() {
									var errors = 0;
									$('#kalkulator-from :input[type="text"]')
											.each(
													function() {
														if ($(this).hasClass(
																"error")
																|| $(this)
																		.hasClass(
																				"empty")) {

															if (!validate($(this))) {
																$(this).focus();
																errors++;
															}

														} else {
															// alert("alle
															// Felder
															// bereit");
														}
													});

									if (errors == 0) {
										//alert("Formular enthält KEINE Fehler");
										if($("#monatlich:checked").val()!=null){
											$("#kalkulator-from input[type='text']").each(function(){
												if($(this).attr('id')!='hebesatz'){
													$(this).val($(this).val()*12);
												}
											});
										}
										$("#Ergebnisse").show("slow");
										//$('#kalkulator-from :input').each(function(){
										$(this).focus();
										var betriesausgaben = ($(
												"#betriebshaftpflich").val() * 1)
												+ ($("#rechtschutzversicherung")
														.val() * 1)
												+ ($("#kfz_versicherung").val() * 1)
												+ ($(
														"#betriebskostenversicherung")
														.val() * 1)
												+ ($("#sonstige_versicherung")
														.val() * 1)+($("#betriebsausgaben").val()*1);
										
										//alert(betriesausgaben);
										
										var vorsorgeaufwand = (1 * $("#krankenversicherung").val())
												+ (1 * $("#rentenversicherung").val())
												+ (1 * $("#Berufsunfähigkeit").val())
												+ (1 * $("#sonstige_versicherungen").val());
										//alert(vorsorgeaufwand);
										var steuerlich_relavant = steuerlichRelevanteVorsorge();
										//betriesausgaben = betriesausgaben + steuerlich_relavant;
										var zve = (1 * $("#umsatz").val())
												-( betriesausgaben + steuerlich_relavant);
										var est=kalkulateGewerbesteuer(zve,(1 * $("#hebesatz").val()));
										var gewinnNachSte=zve-(einkommenst(zve)+est+kalkKiSt(est)+kalkSoli(est));
										var verfek=gewinnNachSte-((vorsorgeaufwand-steuerlich_relavant)+(1 * $("#summeprivat").val()));
										//alert("ich bin hier");
										$("#berechnung").html(
												"<table>"+
												"<thead><tr><th>Summe</th><th>jährlich</th><th>monatlich</th></tr></thead>"+
												"<tbody><tr><td>Umsatz:</td><td>"+ round($("#umsatz").val(),2)+"€</td><td>"+ round($("#umsatz").val()/12,2)+"€</td></tr>"+
												"<tr><td>- Betriebsausgaben:</td><td>"+ round(betriesausgaben,2)+"€</td><td>"+round(betriesausgaben/12,2)+"€</td></tr>"+
												"<tr><td>- Vorsorge-Abzüge:</td><td> "+ round(steuerlich_relavant,2)+"€</td><td> "+round(steuerlich_relavant/12,2)+"€</td></tr>"+
												"<tr><td>= z. v. Einkommen:</td><td> "+round(zve,2)+"€</td><td>"+round(zve/12,2)+"€</td></tr>"+
												"<tr><td>- Einkommensteuer:</td><td>"+round(einkommenst(zve),2)+"€</td><td> "+round(einkommenst(zve)/12,2)+"€</td></tr>"+
												"<tr><td>- Gewerbesteuer:</td><td> "+round(est,2)+"€</td><td>"+round(est/12,2)+"€</td></tr>"+
												"<tr><td>- Kirchensteuer:</td><td> "+round(kalkKiSt(est),2)+"€</td><td> "+round(kalkKiSt(est)/12,2)+"€</td></tr>"+
												"<tr><td>- Solidaritätszuschlag:</td><td>"+round(kalkSoli(einkommenst(zve)),2)+"€</td><td> "+round(kalkSoli(einkommenst(zve))/12,2)+"€</td></tr>"+
												"<tr><td>= Gewinn nach Steuern:</td><td> "+round(gewinnNachSte,2)+"€</td><td> "+round(gewinnNachSte/12,2)+"€</td></tr>"+
												"<tr><td>- Vorsorgeaufwendungen:</td><td> "+round((vorsorgeaufwand-steuerlich_relavant),2)+"€</td><td> "+round((vorsorgeaufwand-steuerlich_relavant)/12,2)+"€</td></tr>"+
												"<tr><td>- Lebenshaltung:</td><td> "+round((1 * $("#summeprivat").val()),2)+"€</td><td>"+round((1 * $("#summeprivat").val())/12,2)+"€</td></tr>"+
												"<tr><td>= verfügbares Einkommen:</td><td> "+round(verfek,2)+"€</td><td> "+round(verfek/12,2)+"€</td></tr>"
												+"</tbody></table>"
											
										);
										
										$("#berechnung").focus();
										if($("#monatlich:checked").val()!=null){
											$("#kalkulator-from input[type='text']").each(function(){
												if($(this).attr('id')!='hebesatz'){
													$(this).val($(this).val()/12);
												}
											});
										}
										//});
									}
									else{
										
									}
									//alert(errors);
									return false;

								});

			}

		);