//*********************************************************************************************
//***                            MäuseSparen Calculator v1.1                                ***
//***                 2007 Nemint, New Media Interactiv www.nemint.de                       ***
//*********************************************************************************************
//*********************************************************************************************
//*********************************************************************************************
//*********************************      KONFIGURATION      ***********************************
//*********************************************************************************************
// Standard Sparbetrag für Berechnung
var initSparSum  = 10;
// Anzahl Jahre für die standardmäßig die Berechnung durchgeführt werden soll
var initZeitraum = 2;
// Anzahl Jahre für die maximal die Berechnung durchgeführt werden soll
var initMaxZeitraum = 13;
// Grenzbetrag für die Berechnung von niedrigerem Zinssatz
var initMaxSparZinssatzHigh = 500;
// Zinssatz über Grenzbetrag
var initZinssatzLow  = 1.00;
// Zinssatz bis Grenzbetrag
var initZinssatzHigh = 4.00;

//*********************************************************************************************
//**********************           ab hier nichts ändern              *************************
//*********************************************************************************************
var Sparentwicklung = new Array();
var out;
var initZinssatz = '';

var jetzt = new Date();
var Monat = jetzt.getMonth();
Monat++;
var Jahr = jetzt.getYear();
if(Jahr < 200) Jahr += 1900;
if(Monat == 12) {
	Monat = 1;
	Jahr++;
}
else {
	Monat++;
}
if(Monat < 10) {
	Monat = "0" + Monat;
}

function init() {
	jetzt = new Date();
	Sparentwicklung = new Array();
	document.calcform.sday.value = "01";
	document.calcform.smonth.value = Monat;
	document.calcform.syear.value = Jahr;
	document.calcform.eday.value = "01";
	document.calcform.emonth.value = Monat;
	document.calcform.eyear.value = Jahr + initZeitraum;
	document.calcform.sparsum.value = create_de_output(initSparSum);

	document.calcform.result_zinsen.value = '---';
	document.calcform.result_gkapital.value = '---';
	document.getElementById('cf_result_zinsen').onfocus = function(e) {this.blur(); };
	document.getElementById('cf_result_gkapital').onfocus = function(e) {this.blur(); };
	document.getElementById('cf_result_zinsen').onfocus = function(e) {this.blur(); };
	document.getElementById('cf_result_gkapital').onfocus = function(e) {this.blur(); };

	document.getElementById('calcform_berechnen').onfocus = function(e) {compute(); };

	document.getElementById('cf_sday').onfocus = function(e) {this.blur(); };
	document.getElementById('cf_smonth').onfocus = function(e) {this.blur(); };
	document.getElementById('cf_syear').onfocus = function(e) {this.blur(); };
	document.getElementById('cf_eday').onfocus = function(e) {this.blur(); };

	document.getElementById('cf_sday').onchange = function(e) {checkfield(); checkradio();};
	document.getElementById('cf_eday').onchange = function(e) {checkfield(); checkradio();};
	document.getElementById('cf_emonth').onchange = function(e) {checkfield(); checkradio();};
	document.getElementById('cf_eyear').onchange = function(e) {checkfield(); checkradio();};
	document.getElementById('cf_sparsum').onchange = function(e) {checkradio(); };
	document.getElementById('cf_zahlrhyt1').onchange = function(e) {checkradio(); };
	document.getElementById('cf_zahlrhyt2').onchange = function(e) {checkradio(); };

	//document.calcform.zinssatz.value = create_de_output(initZinssatz) + " %";
}

function checkradio()  {
	document.calcform.result_zinsen.value = '---';
	document.calcform.result_gkapital.value = '---';
}

function checkfield(rechnen) {
	var fieldValues = new Array();
	fieldValues['cf_sday'] = parseFloat(document.calcform.sday.value);
	fieldValues['cf_smonth'] = parseFloat(document.calcform.smonth.value);
	fieldValues['cf_syear'] = parseFloat(document.calcform.syear.value);
	fieldValues['cf_eday'] = parseFloat(document.calcform.eday.value);
	fieldValues['cf_emonth'] = parseFloat(document.calcform.emonth.value);
	fieldValues['cf_eyear'] = parseFloat(document.calcform.eyear.value);

	if(!fieldValues['cf_smonth'] || fieldValues['cf_smonth'] < 1 || fieldValues['cf_smonth'] > 12) {
	alert("Das Monatsfeld wurde zurückgesetzt.");
	document.calcform.smonth.value =  parseInt(Monat);
	fieldValues['cf_smonth'] = parseInt(Monat);
	}
	if(!fieldValues['cf_emonth'] || fieldValues['cf_emonth'] < 1 || fieldValues['cf_emonth'] > 12) {
	alert("Das Monatsfeld wurde zurückgesetzt." + fieldValues['cf_emonth']);
	document.calcform.emonth.value =  parseFloat(Monat);
	fieldValues['cf_emonth'] =  parseFloat(Monat);
	}
	if(!fieldValues['cf_syear'] || fieldValues['cf_syear'] < Jahr || fieldValues['cf_syear'] > 2050) {
	alert("Das Jahresfeld wurde zurückgesetzt.");
	document.calcform.syear.value = Jahr;
	fieldValues['cf_syear'] = Jahr;
	}
	if(!fieldValues['cf_eyear'] || fieldValues['cf_eyear'] < Jahr || fieldValues['cf_eyear'] > 2050) {
	alert("Das Jahresfeld wurde zurückgesetzt.");
	document.calcform.eyear.value = Jahr + initZeitraum;
	fieldValues['cf_eyear'] = Jahr + initZeitraum;
	}
	/*
	if(
	fieldValues['cf_sday'] < 1 || fieldValues['cf_smonth'] == 2 && fieldValues['cf_sday'] > 29
	|| fieldValues['cf_smonth'] == 2 && fieldValues['cf_syear'] % 4 != 0 && fieldValues['cf_sday'] > 28
	|| ((fieldValues['cf_smonth'] == 4 || fieldValues['cf_smonth'] == 6 || fieldValues['cf_smonth'] == 9 || fieldValues['cf_smonth'] == 11) && fieldValues['cf_sday'] > 30)
	) {
	*/
	if(!fieldValues['cf_sday'] || fieldValues['cf_sday'] != 1) {
	alert("Das Tagesfeld wurde auf den 01. zurückgesetzt.");
	document.calcform.sday.value = '01';
	fieldValues['cf_sday'] = 1;
	}
	/*
	if(
	fieldValues['cf_eday'] < 1 || fieldValues['cf_emonth'] == 2 && fieldValues['cf_eday'] > 29
	|| fieldValues['cf_emonth'] == 2 && fieldValues['cf_eyear'] % 4 != 0 && fieldValues['cf_eday'] > 28
	|| ((fieldValues['cf_emonth'] == 4 || fieldValues['cf_emonth'] == 6 || fieldValues['cf_emonth'] == 9 || fieldValues['cf_emonth'] == 11) && fieldValues['cf_eday'] > 30)
	) {
	*/
	if(!fieldValues['cf_eday'] || fieldValues['cf_eday'] != 1) {
	alert("Das Tagesfeld wurde auf den 01. zurückgesetzt.");
	document.calcform.eday.value = '01';
	fieldValues['cf_eday'] = 1;
	}
	if(fieldValues['cf_sday'] < 10) {
	document.calcform.sday.value = '0' + fieldValues['cf_sday'];
	}
	if(fieldValues['cf_eday'] < 10) {
	document.calcform.eday.value = '0' + fieldValues['cf_eday'];
	}
	if(fieldValues['cf_smonth'] < 10) {
	document.calcform.smonth.value = '0' + fieldValues['cf_smonth'];
	}
	if(fieldValues['cf_emonth'] < 10) {
	document.calcform.emonth.value = '0' + fieldValues['cf_emonth'];
	}
	var mybtime = parseFloat(document.calcform.syear.value + '' + document.calcform.smonth.value + '' + document.calcform.sday.value);
	var myetime = parseFloat(document.calcform.eyear.value + '' + document.calcform.emonth.value + '' + document.calcform.eday.value);
	if(myetime < mybtime) {
	alert("Die eingegebenen Daten ergeben eine negative Laufzeit.");
	document.calcform.smonth.value = Monat;
	document.calcform.emonth.value = Monat;
	document.calcform.syear.value = Jahr;
	document.calcform.eyear.value = Jahr + initZeitraum;
	fieldValues['cf_smonth'] = Monat;
	fieldValues['cf_emonth'] =  Monat;
	fieldValues['cf_syear'] = Jahr;
	fieldValues['cf_eyear'] = Jahr + initZeitraum;
	}

	var fieldValue = create_input(document.calcform.sparsum.value);
	if (fieldValue % 1 != 0) {
	alert("Es werden nur ganze Beträge berücksichtigt.");
	document.calcform.sparsum.value = create_de_output(initSparSum);
	return false;
	}
	document.calcform.sparsum.value = create_de_output(fieldValue);

	return true;
}

function compute() {
	checkfield(0);
	SparBetrag = create_input(document.calcform.sparsum.value);
	out = "";

	StartDay   = document.calcform.sday.value * 1;
	StartMonth = document.calcform.smonth.value * 1;
	StartYear  = document.calcform.syear.value * 1;
	EndDay     = document.calcform.eday.value * 1;
	EndMonth   = document.calcform.emonth.value * 1;
	EndYear    = document.calcform.eyear.value * 1;

	LaufzeitMonate = (EndMonth - StartMonth) + ((EndYear - StartYear) * 12);
	if(LaufzeitMonate > initMaxZeitraum * 12) {
		alert("Die maximale Laufzeit beträgt " + initMaxZeitraum  + " Jahre.");
		return false;
	}

	Sparkapital= 0;
	GKapital   = 0;
	JKapital   = 0;
	SEntwickIndex = 0;
	GZins      = 0;
	index      = 0;
	StartJahrMonate = 12;
	BisMonat = 13;
	Startdays  =  0;
	days       =  0;
	Kapital    = 0;
	Spar_Kapital    = 0;
	if(document.calcform.zahlrhyt[0].checked) {
	Spar_Kapital = SparBetrag;
	}

	Ber	= new Array();
	if(EndYear == StartYear) {
	StartJahrMonate = EndMonth * 1 - 1;
	Startdays   =  (StartJahrMonate-StartMonth) * 30 + 30 - StartDay + 1;
	}
	else {
	Startdays   =  (StartJahrMonate-StartMonth) * 30 + 30 - StartDay + 1;
	}

	for(i = 0; i <= EndYear - StartYear;i++) {
	SEntwickIndex = StartYear + i;
	Ber[SEntwickIndex] = new Array();
	JahrZins  = 0;
	if(i == 0) {
		countMonth = StartMonth;
		BisMonat = EndMonth;
		if(EndYear != StartYear) {
		JKapital = SparBetrag * 1;
		Kapital  += SparBetrag;
		BisMonat = 13;
		}
	}
	else if(i == EndYear - StartYear) {
		countMonth = 1;
		BisMonat = EndMonth;
	}
	else {
		countMonth = 1;
	}
//*******************************************************
// Monatsberechnung ->
//*******************************************************
	if(document.calcform.zahlrhyt[1].checked) {
		for(i2=countMonth; i2 < BisMonat; i2++) {
		JKapital += SparBetrag;
		Spar_Kapital  += SparBetrag;
		abc = parseFloat(i2);
		Ber[SEntwickIndex][abc] = new Array();
		Ber[SEntwickIndex][abc]['zinsen'] = 0;
		Ber[SEntwickIndex][abc]['SparBetrag']= parseFloat(SparBetrag);
		Ber[SEntwickIndex][abc]['GKapital']= Spar_Kapital;

		if(Ber[SEntwickIndex][abc]['GKapital'] >= initMaxSparZinssatzHigh) {
			Ber[SEntwickIndex][abc]['zinsen'] += initMaxSparZinssatzHigh / 360 * 30 / 100 * initZinssatzHigh;
			Ber[SEntwickIndex][abc]['zinsen'] += (Ber[SEntwickIndex][abc]['GKapital'] - initMaxSparZinssatzHigh) / 360 * 30 / 100 * initZinssatzLow;
		}
		else {
			Ber[SEntwickIndex][abc]['zinsen'] += Ber[SEntwickIndex][abc]['GKapital'] / 360 * 30 / 100 * initZinssatzHigh;
		}

		JahrZins += Ber[SEntwickIndex][abc]['zinsen'];
		Ber[SEntwickIndex][abc]['gzins'] = GZins;
		}
	}
//*******************************************************
// <- Monatsberechnung
// Einmalzahlung ->
//*******************************************************
	else {
		for(i2=countMonth; i2 < BisMonat; i2++) {
		JKapital = 0;
		abc = parseFloat(i2);
		Ber[SEntwickIndex][abc] = new Array();
		Ber[SEntwickIndex][abc]['zinsen'] = 0;
		Ber[SEntwickIndex][abc]['SparBetrag']= parseFloat(SparBetrag);
		Ber[SEntwickIndex][abc]['GKapital']= Spar_Kapital;

		if(Ber[SEntwickIndex][abc]['GKapital'] >= initMaxSparZinssatzHigh) {
			Ber[SEntwickIndex][abc]['zinsen'] += initMaxSparZinssatzHigh / 360 * 30 / 100 * initZinssatzHigh;
			Ber[SEntwickIndex][abc]['zinsen'] += (Ber[SEntwickIndex][abc]['GKapital'] - initMaxSparZinssatzHigh) / 360 * 30 / 100 * initZinssatzLow;
		}
		else {
			Ber[SEntwickIndex][abc]['zinsen'] += Ber[SEntwickIndex][abc]['GKapital'] / 360 * 30 / 100 * initZinssatzHigh;
		}

		JahrZins += Ber[SEntwickIndex][abc]['zinsen'];
		Ber[SEntwickIndex][abc]['gzins'] = GZins;
		}
	}
//*******************************************************
// <- Einmalzahlung
//*******************************************************
	GZins += runde_4stellen(JahrZins);
	Sparkapital += JKapital;
	Spar_Kapital += runde_4stellen(JahrZins);
	GKapital = Spar_Kapital;
	}

	GZins    = Math.floor(runde_3stellen(GZins));
	GKapital = Math.floor(runde_3stellen(GKapital));
	document.calcform.result_zinsen.value = create_de_output(GZins);
	document.calcform.result_gkapital.value = create_de_output(GKapital);
	return false;
}

window.onload = init;


