var Calc = {
	form: null,
	maxL:    63600,   // maximaler lohn
	st1:     45,      // Steuerersparnis (absetzbarer Beitrag x 45%)
	st2:     66,      // davon 66% (absetzbar in 2008)
	maxUnMa: 20000,   // maximalbetrag für nicht verheiratete menschen
	maxMa:   40000,   // maximalbetrag für verheiratete menschen

	init: function(formId) {
		this.form = document.getElementById(formId) || null;

		if (this.form === null) {
			return false;
		}
	},

	calc: function() {
		if (this.form === null) {
			alert('Dieser Service ist vorübergehend nicht erreichbar.');
		}

		if (this.form.elements['lohn'].value > this.maxL) {
			var lohn = this.maxL;
		} else {
			var lohn = this.form.elements['lohn'].value;
		}

		var selectedVal = this.form.elements['selectBerufsgruppe'].options[this.form.elements['selectBerufsgruppe'].selectedIndex].value;

		var rueB = this.form.elements['rue'].value;

		if (this.form.elements['married'].checked && this.form.elements['rue'].value > this.maxMa) {
			alert('Der maximale Beitrag in die Rüruprente wurde auf ' + this.maxMa + ' korrigiert.');
			rueB = this.maxMa;
		}

		if (!this.form.elements['married'].checked && this.form.elements['rue'].value > this.maxUnMa) {
			alert('Der maximale Beitrag in die Rüruprente wurde auf ' + this.maxUnMa + ' korrigiert.');
			rueB = this.maxUnMa;
		}

		this.form.elements['rue'].value = rueB;

		if (selectedVal == 0) { // arbeitnehmer
			var calculatedL = Math.round(lohn * 0.199 / 2);

			this.form.elements['fee1'].value = calculatedL;
			this.form.elements['fee2'].value = calculatedL;
			this.form.elements['fee3'].value = calculatedL;
			this.form.elements['fee4'].value = calculatedL;
			this.form.elements['fee5'].value = calculatedL;
			this.form.elements['fee6'].value = calculatedL;
			this.form.elements['quoteB'].value = rueB;
			this.form.elements['sumA'].value = Number(this.form.elements['fee3'].value) + Number(this.form.elements['fee5'].value);
			this.form.elements['sumB'].value = Number(this.form.elements['fee4'].value) + Number(this.form.elements['fee6'].value) + Number(rueB);
			this.form.elements['bonusA'].value  = Math.round(Number(this.form.elements['sumA'].value) * (this.st2 / 100));
			this.form.elements['bonusB'].value  = Math.round(Number(this.form.elements['sumB'].value) * (this.st2 / 100));
			this.form.elements['ownA'].value    = Math.round(Number(this.form.elements['fee3'].value));
			this.form.elements['ownB'].value    = Math.round(Number(this.form.elements['fee4'].value));
			this.form.elements['reliefA'].value = Math.round(Number(this.form.elements['bonusA'].value) - Number(this.form.elements['ownA'].value));
			this.form.elements['reliefB'].value = Math.round(Number(this.form.elements['bonusB'].value) - Number(this.form.elements['ownB'].value));
			this.form.elements['dueA'].value    = Math.round(Number(this.form.elements['reliefA'].value) * (this.st1 / 100));
			this.form.elements['dueB'].value    = Math.round(Number(this.form.elements['reliefB'].value) * (this.st1 / 100));
		} else { // selbständiger
			var calculatedL = this.form.elements['fee2'].value; //Math.round(lohn * 0.199 / 2);

			this.form.elements['fee1'].value = 0;
			this.form.elements['fee2'].value = calculatedL;
			this.form.elements['fee3'].value = 0;
			this.form.elements['fee4'].value = 0;
			this.form.elements['fee5'].value = calculatedL;
			this.form.elements['fee6'].value = calculatedL;
			this.form.elements['quoteB'].value = rueB;
			this.form.elements['sumA'].value = Number(this.form.elements['fee3'].value) + Number(this.form.elements['fee5'].value);
			this.form.elements['sumB'].value = Number(this.form.elements['fee4'].value) + Number(this.form.elements['fee6'].value) + Number(rueB);
			this.form.elements['bonusA'].value  = Math.round(Number(this.form.elements['sumA'].value) * (this.st2 / 100));
			this.form.elements['bonusB'].value  = Math.round(Number(this.form.elements['sumB'].value) * (this.st2 / 100));
			this.form.elements['ownA'].value    = Math.round(Number(this.form.elements['fee3'].value));
			this.form.elements['ownB'].value    = Math.round(Number(this.form.elements['fee4'].value));
			this.form.elements['reliefA'].value = Math.round(Number(this.form.elements['bonusA'].value) - Number(this.form.elements['ownA'].value));
			this.form.elements['reliefB'].value = Math.round(Number(this.form.elements['bonusB'].value) - Number(this.form.elements['ownB'].value));
			this.form.elements['dueA'].value    = Math.round(Number(this.form.elements['reliefA'].value) * (this.st1 / 100));
			this.form.elements['dueB'].value    = Math.round(Number(this.form.elements['reliefB'].value) * (this.st1 / 100));
		}

		this.form.elements['dueA'].value = this.calcTax(this.form.elements['reliefA'].value);
		this.form.elements['dueB'].value = this.calcTax(this.form.elements['reliefB'].value);
		this.form.elements['taxB'].value = Math.round(Number(this.form.elements['dueB'].value) - Number(this.form.elements['dueA'].value));
	},

	updateSelFields: function(el) {
		if (el.options[el.selectedIndex].value == 0) {
			this.form.elements['lohn'].disabled = false;
			this.form.elements['fee1'].disabled = false;
		} else {
			//this.form.elements['lohn'].disabled = true;
			this.form.elements['fee1'].disabled = true;
			this.form.elements['fee1'].value = 0;
			this.form.elements['fee2'].value = 0;
		}
	},

	calcTax: function(input) {
		a = Math.floor(this.form.elements['lohn'].value);

		a = (this.form.elements['married'].checked ? a / 2 : a);
		b = (a - 7664) / 10000;
		c = (a - 12739) / 10000;
		var tax = 0;

		if (a < 7665) {
			tax = 0;
		} else {
			if (a < 12740) {
				tax = (883.74 * b + 1500) * b;
			} else {
				if (a < 52152) {
					tax = ((228.74 * c) + 2397) * c + 989;
				} else {
					if (a < 250001) {
						tax = 0.42 * a - 7914;
					} else {
						tax = 0.45 * a - 15414;
					}
				}
			}
		}

		document.getElementById('taxrate').innerHTML = Math.floor(tax / Number(this.form.elements['lohn'].value) * 100);
		return  Math.floor(input * (tax / Number(this.form.elements['lohn'].value) * 100) / 100);
	}
}