var heute = new Date();
var minYear = 55;
var maxYear = 68;
var minGebDat = convertStringToDate('1.1.1943');
var maxGebDat = convertStringToDate('31.12.1996');
var nbsp = "\u00a0";
var focusedInput;
// Fehlermeldungen
var error = 0;
var warningBtrag = "Bitte geben Sie eine Zahl als Dienstgeberbeitrag ein!";
var warningBemgl = "Bitte geben Sie eine Zahl als Bemessungsgrundlage ein!";
var warningBtran = "Bitte geben Sie eine Zahl als Eigenbeiträge ein!";
// var warningBtranprozent = "Bitte geben Sie eine Zahl als Eigenbeiträge in Prozent der Dienstgeberbeiträge ein!";
//var warningDGBeitragZuNiedrig = "DG Beitragswert ist zu niedrig, bitte höheren Wert wählen!";
// URLs
var pensionsrechnerURL = "http://online.bpk.at/pensionskassenrechner/Controller";
var pdfURL = "http://online.bpk.at/pensionskassenrechner/createPdfBpk";



// initialize SPIN BUTTONS
var yearOptions = {
		min: minYear,						// Set lower limit.
		max: maxYear,					// Set upper limit.
		step: 1					// Set increment size.
		}

var monthOptions = {
		min: 0,						// Set lower limit.
		max: 11,					// Set upper limit.
		step: 1					// Set increment size.
		}

var veranlagungserfOptions = {
		min: 0,						// Set lower limit.
		max: 5,					// Set upper limit.
		step: 0.5					// Set increment size.
		}

var valodgOptions = {
		min: 0,						// Set lower limit.
		max: 5,					// Set upper limit.
		step: 0.5					// Set increment size.
		}

$.datepicker.regional['de'] = {
		closeText: 'schließen',
		prevText: '&#x3c;zurück',
		nextText: 'Vor&#x3e;',
		currentText: 'heute',
		monthNames: ['Januar','Februar','März','April','Mai','Juni',
		'Juli','August','September','Oktober','November','Dezember'],
		monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
		'Jul','Aug','Sep','Okt','Nov','Dez'],
		dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
		dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
		dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
		dateFormat: 'dd.mm.yy', firstDay: 1,
		isRTL: false,
		duration: 'fast',
		constrainInput: false, 
		showOn: 'button', 
		buttonImage: '../image/calendar.gif', 
		buttonImageOnly: true,
		changeMonth: true, 
		changeYear: true,
		gotoCurrent: true};





$(document).ready(function(){

	// Initialise INPUT element(s) as SpinButtons: (passing options if desired)
	$("#ageYear").SpinButton(yearOptions);
	$("#ageMonth").SpinButton(monthOptions);
	$("#veranlagungserf").SpinButton(veranlagungserfOptions);
	$("#valodg").SpinButton(valodgOptions);
	
	$.datepicker.setDefaults($.datepicker.regional['de']);
	$("#geburtDat").datepicker({yearRange: '1943:1996', onClose: function(dateText, inst) { $("#antritt").blur(); $("#geburtDat").focus(); }});
	$("#antritt").datepicker({yearRange: '2010:2064', onClose: function(dateText, inst) { $("#antritt").blur(); $("#antritt").focus(); }});
		
	
	$("#ageYear").bind("blur", calcRetirementDat);
	$("#ageYear").bind("click", calcRetirementDat);
	
	$("#ageMonth").bind("blur", calcRetirementDat);
	$("#ageMonth").bind("click", calcRetirementDat);
	
	$("#geburtDat").bind("blur", geburtDatBlurEvent);
	$("#antritt").bind("blur", retirementDatBlurEvent);
	
	$("#bemgl").bind("blur", bemglBlurEvent);
	$("#btrag").bind("blur", btragBlurEvent);
	$("#btranI").bind("blur", btranBlurEvent);
	
	$("input[name^='btranprozent']").bind("change", btranprozentChangeEvent);
	
	$("#btranI").bind("focus", function () {
		$("#btranprozentI").attr("checked","checked");
		//$("input[name='btranprozent']:nth(6)").attr("checked","checked");
	});
	
	$("#drdg").bind("blur", drdgBlurEvent);
	$("#drdn").bind("blur", drdnBlurEvent);	


	$("input").bind("focus", function () {
		focusedInput = $(this);
	});
	
	clearForm();
	
	window.scrollTo(0,0);

});


// Weiterleitung
function checkStringDateEvent(event)
{
	checkStringDate($("#" + event.data.element).attr("id"));
}

// prueft und formatiert ein eingegebenes String-Datum tt.mm.jjjj
// TRUE wenn gueltiges Datum und formatiert Eingabefeld
// FALSE wenn ungueltiges Datum und loescht Eingabefeld
function checkStringDate(id) 
{
	id = "#" + id; 
	var value = $(id).val();
	if (value != "")
	{
		var suche = /^\d{1,2}\.\d{1,2}\.\d{4}$/;
		if (!suche.test(value)) 
		{ 
			$(id).val("");
			$(id).focus();			
			return;
		} 
		else 
		{
		 	var p1 = value.indexOf('.');
			var p2 = value.lastIndexOf('.');
			var date   = value.substr(0,2);
			var month  = value.substr(3,2);
			var year   = value.substr(p2+1,4);
			if (p1 < 2) 
			{
				date  = '0' + value.substr(0,1);
				month  = value.substr(2,2);
				if (p2 < 4)	
				{
					month  = value.substr(2,1);
					month  = '0' + month;
				}
			} 
			else 
			{
				if (p2 < 5) 
				{
					month  = value.substr(3,1);
					month  = '0' + month;				
				}				
			}
			value = date+'.'+month+'.'+year;
			$(id).val(value);
		}
		return true;
	}
	else return false;
}


// Date -> String tt.mm.jjjj
function convertDateToString(pDate) 
{
	var retval = '';
	
	if (pDate != null)
	{
		var year  = pDate.getFullYear();
		var month = pDate.getMonth() + 1; 
		var day   = pDate.getDate();
		
		if (day < 10) retval='0' + day;
		else retval = retval + day;
		    
		if (month < 10) retval=retval + '.' + '0' + month;
		else retval = retval + '.' + month;	    
		    
		retval = retval + '.' + year;
	}
	return retval;
}

// GETTER für Pensionsantrittsdatum
function getRetirementDat()
{
	if (($("#antritt").val().length > 0) & (checkStringDate("antritt")))
	{
		var day   = $("#antritt").val().substr(0,2);
		var month = $("#antritt").val().substr(3,2);
		var year  = $("#antritt").val().substr(6,4);
			
		var pa = new Date();
		pa.setDate(day);
		pa.setMonth(month - 1);
		pa.setYear(year);
		return pa;
	}		
	else return null;
}


// Date -> String (dd.mm.jjjj)
function convertStringToDate(pStringDate)
{
	var day   = pStringDate.substr(0,2);
	var month = pStringDate.substr(3,2);
	var year  = pStringDate.substr(6,4);
	month = month - 1;
	
	var vDate = new Date();
	vDate.setDate(day);
	vDate.setMonth(month);
	vDate.setYear(year);
	vDate.setHours(0);
	vDate.setMinutes(0);
	vDate.setSeconds(0);
	vDate.setMilliseconds(0)

//	alert(vDate.getYear());
	
	return vDate;
}

// liefert den nächsten Monatsersten
function getFirstDayofNextMonth(pDate)
{
	var nextMonth = new Date();
	var year = pDate.getFullYear();
	var month = pDate.getMonth() + 1;
	var day = pDate.getDate();
	
	if (day > 1) 
	{
		day = 1;
		month++;
	}
	if (month > 12)
	{
		year++;
		month = month - 12;
	}
	nextMonth.setDate(day);
	nextMonth.setMonth(month - 1);
	nextMonth.setYear(year);
	
	return nextMonth;
}

// GETTER für ageYear
function getAgeYear()
{
	if ($("#ageYear").val() == null)
	{
		$("#ageYear").val(minYear);
	}
	else if (($("#ageYear").val().length == 0) | (parseInt($("#ageYear").val()) < minYear))
	{
		$("#ageYear").val(minYear);
	}
	else if (parseInt($("#ageYear").val()) > maxYear)
	{
		$("#ageYear").val(maxYear);
	}
	return parseInt($("#ageYear").val());
}

// GETTER für ageMonth
function getAgeMonth()
{
	if ($("#ageMonth").val() == null)
		$("#ageMonth").val(0);
	return parseInt($("#ageMonth").val());
}

//berechnet pensionsantrittdatum aus Geburtsdatum und ageYear, ageMonth
function calcRetirementDat()
{
	if (getGeburtDat() != null)
	{
		var year = getAgeYear();
		var month = getAgeMonth();
		
		var yearRetire = getGeburtDat().getFullYear() + year;
		var monthRetire = getGeburtDat().getMonth() + month + 1;
		var dayRetire = getGeburtDat().getDate();

		if (dayRetire > 1) 
		{
			dayRetire = 1;
		    monthRetire = monthRetire + 1;
		}

		if (monthRetire > 12) 
		{
			monthRetire = monthRetire - 12;
		    yearRetire++;
		}

		var retireDat = new Date();
		retireDat.setDate(dayRetire);
		retireDat.setMonth(monthRetire - 1);
		retireDat.setYear(yearRetire);

		var warning = "Bei diesem Pensionierungsalter liegt der Pensionsantritt in der Vergangenheit!";
		if (retireDat.getTime() < heute.getTime()) 
		{
			addWarning("errorParameter", warning);
			$("#antritt").val("");
			
			return false;
		}
		else 
		{
			$("#antritt").val(convertDateToString(retireDat));
			removeWarning("errorParameter", warning);
		}
		
		return true;
	}
	else return false;
}


// ausgelöst wenn ANTRITT den Focus verliert
function retirementDatBlurEvent()
{
	if (getRetirementDat() != null)
	{
		var retireDat;
		if (getRetirementDat().getTime() < heute.getTime())
			retireDat = heute;
		else retireDat = getRetirementDat();
		
		var yearRetire = retireDat.getFullYear();
		var monthRetire = retireDat.getMonth();
		var dayRetire = retireDat.getDate();
		
		if (dayRetire > 1) 
		{
			dayRetire = 1;
			monthRetire = monthRetire + 1;
		}
		if (monthRetire > 11) 
		{	
			yearRetire = yearRetire + 1;
			monthRetire = 0;
		}
		retireDat.setDate(dayRetire);
		retireDat.setMonth(monthRetire);
		retireDat.setYear(yearRetire);

		$("#antritt").val(convertDateToString(retireDat));			
		
		if (getGeburtDat() != null)
		{
			calcRetirementAge();
		}
	}	
}

// GETTER Bemessungsgrundlage
function getBemgl()
{
	var bemgl = $("#bemgl").val();
	bemgl = bemgl.replace(/\./g, "");
	bemgl = bemgl.replace(/,/g, ".");
	bemgl = parseFloat(bemgl);
	
	if ((bemgl != null) && (bemgl.toString() == "NaN"))
	{	
		addWarning("errorBeitragsdaten", warningBemgl);
		
		$("#bemgl").val("");
		return null;
	}
	else
	{
		$("#bemgl").val(formatToGui(bemgl));
		removeWarning("errorBeitragsdaten", warningBemgl);
		return bemgl;
	}
}

// GETTER Beiträge Arbeitgeber/Dienstgeber 
function getBtrag()
{
	var btrag = $("#btrag").val();
	btrag = btrag.replace(/\./g, "");
	btrag = btrag.replace(/,/g, ".");
	btrag = parseFloat(btrag);

	if ((btrag != null) && (btrag.toString() == "NaN"))
	{	
		addWarning("errorBeitragsdaten", warningBtrag);
		$("#btrag").val("");
		return null;
	}
	else
	{
		if (btrag < 1000 && getBtran1() > 1000) $("#btranI").val(formatToGui(1000));
		// eigenbeitraege == 1000 and eigenbeitraege > Arbeitgeberbeitraege -> disable Valo.
/*
		if (getBtran1() == 1000 && getBtran1() > btrag)
		{
			$("#valodn1").attr("disabled", "disabled");
			$("#valodn2").attr("checked", "checked");
		}
		else $("#valodn1").removeAttr("disabled");
*/		
		$("#btrag").val(formatToGui(btrag));
		removeWarning("errorBeitragsdaten", warningBtrag);
		return parseFloat(btrag);
	}
}


function getBtrag1()
{
	var btrag = $("#btrag").val();
	btrag = btrag.replace(/\./g, "");
	btrag = btrag.replace(/,/g, ".");
	btrag = parseFloat(btrag);
	
	if (btrag.toString() == "NaN")
	{	
		return null;
	}
	else
	{
		return parseFloat(btrag);
	}
}


// GETTER Eigenbeiträge 
function getBtran()
{
	var btran = $("#btranI").val();
	
	btran = btran.replace(/\./g, "");
	btran = btran.replace(/,/g, ".");
	btran = parseFloat(btran);
		
	var selection = getBtranprozent1();
			
	if ((btran != null) && (btran.length > 0) && (btran.toString() == "NaN") && (selection == -1))
	{	
		addWarning("errorBeitragsdaten", warningBtran);
		$("#btranI").val("");
		$("#btran").val("");
		return null;
	}
	else
	{
		var dummy = Math.max(getBtrag1(), 1000);
		if (btran > dummy) btran = dummy;
		// eigenbeitraege == 1000 and eigenbeitraege > Arbeitgeberbeitraege -> disable Valo.
/*
		if (btran == 1000 && btran > getBtrag1())
		{
			$("#valodn1").attr("disabled", "disabled");
			$("#valodn2").attr("checked", "checked");
		}			
		else $("#valodn1").removeAttr("disabled");
*/		
		$("#btranI").val(formatToGui(btran));
		$("#btran").val(formatToGui(btran));
		removeWarning("errorBeitragsdaten", warningBtran);
//		removeWarning("errorBeitragsdaten", warningDGBeitragZuNiedrig);
		return parseFloat(btran);
	}
}

function getBtran1()
{
	var btran = $("#btranI").val();
	btran = btran.replace(/\./g, "");
	btran = btran.replace(/,/g, ".");
	btran = parseFloat(btran);
	
	if (btran.toString() == "NaN")
	{	
		return null;
	}
	else
	{
		return parseFloat(btran);
	}
}



// GETTER Eigenbeiträge-prozent der Arbeitgeberbeiträge
function getBtranprozent()
{
	var btranprozent = getBtranprozent1();
			
	if (btranprozent != null)
	{
	// wenn nicht individueller betrag ausgewählt, dann Fehlermeldung entfernen
		if (btranprozent != -1)
		{
			removeWarning("errorBeitragsdaten", warningBtran);
			// 25, 50, 75, 100 Prozent RBs
			if (btranprozent < 1000)
			{
				var dummy = btranprozent / 100;
				$("#btran").val(formatToGui(getBtrag1() * dummy));
			}
			// 1000 Euro jaehrlich RB
			else
			{
				$("#btran").val(formatToGui(1000));
			}
			$("#btranI").val("");
//			$("#btranI").attr("disabled", "disabled");
//			$("#btranI").addClass("disabled");
		}
		// indiv. Beitrag RB
		else
		{
//			$("#btranI").removeAttr("disabled");
//			$("#btranI").removeClass("disabled");
			$("#btranI").focus();
		}
	}
/*			
	if ((btranprozent == null) || (btranprozent.toString() == "NaN"))
	{
		addWarning("errorBeitragsdaten", warningBtranprozent);
		$("#btranprozent").val("");
		return null;
	}
	else
	{
		var dummy = btranprozent / 100;
		$("#btran").val(formatToGui(getBtrag1() * dummy));
		$("#btranprozent").val(formatToGui(btranprozent));
		removeWarning("errorBeitragsdaten", warningBtranprozent);
//		removeWarning("errorBeitragsdaten", warningDGBeitragZuNiedrig);
		return parseFloat(btranprozent);
	}
*/	
	return parseFloat(btranprozent);
}


function getBtranprozent1()
{
	var btranprozent = $("input[name^='btranprozent']:checked").val();
	
	btranprozent = parseFloat(btranprozent);
	
	if (btranprozent.toString() == "NaN")
	{	
		return null;
	}
	else
	{
		return parseFloat(btranprozent);
	}
}



function getDrdg1()
{
	var value = $("#drdg").val();

	value = value.replace(/\./g, "");
	value = value.replace(/,/g, ".");
	value = parseFloat(value);
	
	if (value.toString() == "NaN")
	{	
		return null;
	}
	else
	{
		return parseFloat(value);
	}
}

function getDrdn1()
{
	var value = $("#drdn").val();

	value = value.replace(/\./g, "");
	value = value.replace(/,/g, ".");
	value = parseFloat(value);
	
	if (value.toString() == "NaN")
	{	
		return null;
	}
	else
	{
		return parseFloat(value);
	}
}


function drdgBlurEvent()
{
	$("#drdg").val(formatToGui(getDrdg1()));
}

function drdnBlurEvent()
{
	$("#drdn").val(formatToGui(getDrdn1()));
}


// berechnet Year and Month des Pensionsalters
function calcRetirementAge()
{
	var retirementDat = getRetirementDat();
	var dob = getGeburtDat();
	
	var year = retirementDat.getFullYear() - dob.getFullYear();
	var month = retirementDat.getMonth() - dob.getMonth();
	
	if (dob.getDate() > 1) month--; // weil auf den nächsten Monatsersten gerechnet wird
			
	if (month < 0) 
	{
		year--;
		month = month + 12;
	}
	
	if ((year >= minYear) & (year <= maxYear)) 
	{
		$("#ageYear").val(year);
		$("#ageMonth").val(month);
	}
	else // adapt RetirementDat
	{
		if (year > maxYear) $("#ageYear").val(maxYear);
		else if (year < minYear) $("#ageYear").val(minYear);
		
		$("#ageMonth").val(0);
		
		calcRetirementDat();
	}
}


// liefert das Pensionsantrittsdatum als DOUBLE
function getRetirementDat_double()
{
	var ret = 0.0;
	ret = ret + getAgeYear();
	ret = ret + getAgeMonth() * 1 / 12;
	return ret;
}


/*
function getValodn()
{
	// wenn nicht "Wie Dienstgeber Valo" ausgewählt wurde, dann automatisch "keine" auswählen
	if ($("#valodn1").attr("checked") == false)
		return "n"
	else return "j";
}
*/


// Eingabefeld existiert nicht mehr
// wenn individueller Betrag ausgewählt -> keine Valorisierung
// wenn prozentsatz der DG Beiträge ausgewählt -> Valorisierung wie DG Beiträge
function getValodn()
{
	var result = "";
	if ($("#btranprozentI").attr("checked") == true)
		result = "n"
	else result = "j";
	return result;
}


function calculate()
{
	focusedInput.blur();
	
	if (error == 0)
	{
		clearOutput();
		// wenn Eingaben fehlen, dann nicht berechnen
		if ($("#bemgl").val().length == 0 || $("#btrag").val().length == 0 || ($("#btran").val().length == 0) && ($("#btranprozentI").attr("checked") == true))
			return;
		
		enableLoader();
		disableCalculateBtn();
		disablePdf();
		
		var now = new Date();
		
		// Ajax Request
		$.ajax({
			type: "GET",
			url: pensionsrechnerURL, 
			timeout: 10000,
			data: 	{
						"nachname" : $("#nachname").val(),
						"vorname" : $("#vorname").val(),
						"titel" : $("#titel").val(),
						"geburtDat" : $("#geburtDat").val(),
	//					"geschlecht" : $("#geschlecht").val(),
						"bemgl" : $("#bemgl").val(),
						"btrag" : $("#btrag").val(),
						"btran" : $("#btran").val(),
						"drdg" : $("#drdg").val(),
						"drdn" : $("#drdn").val(),
						"pa" : getRetirementDat_double(),
						"veranlagungserf" : $("#veranlagungserf").val() * 100,
						"valodg" : $("#valodg").val() * 100,
						"valodn" : getValodn(),
						"modus" : 1,
						"againstcaching" : now.getTime()
					},
			success: ajaxSuccessCallback, 
			error: ajaxErrorCallback,
			complete: ajaxCompleteCallback,
			dataType: "json" });
		
		
	/*	
		$.get( "http://localhost:8080/pensionsrechner/Controller", 
		{
		"nachname" : $("#nachname").val(),
		"vorname" : $("#vorname").val(),
		"titel" : $("#titel").val(),
		"geburtDat" : $("#geburtDat").val(),
		"geschlecht" : $("#geschlecht").val(),
		"btrag" : $("#btrag").val(),
		"btran" : $("#btran").val(),
		"pa" : getRetirementDat_double(),
		"veranlagungserf" : $("#veranlagungserf").val(),
		"valodg" : $("#valodg").val(),
		"valodn" : getValodn()
		},
		ajaxCallback, 
		"text" );
	*/
	
	
	
	/*	
		Parameter
		'kalkulator.jsp' +
	    '?btrag='+ document.daten.btrag.value + 
	    '&btran='+ document.daten.btran.value +
	    '&veranlagungserf='+ document.daten.veranlagungserf.value +
	    '&abfertzr=' + document.daten.abfertzr.value +
	    '&pa='+ getPa_double() +
	    '&valodg='+ document.daten.valodg.value +
	    '&valodn='+ get_valodn() +
	    '&modus=1';
	*/
	} // end if error == 0
	else
	{
		clearOutput();
	}
}

function ajaxSuccessCallback(data, textStatus)
{
//	alert("success: data=" + data + "; status=" + textStatus);
//	alert(data.pensionszahlungsbeginn);
//	$.each(data, function(a, b){alert(a + "=" + b);});
/*
	if (data.paDgBtr < 0) 
	{
		addWarning("errorBeitragsdaten", warningDGBeitragZuNiedrig);
		ajaxErrorCallback(null, null, null);
		ajaxCompleteCallback(null, null);
		return;
	}
*/
	$("#pensionierung").text(data.pensionszahlungsbeginn);
	$("#pensionierung").removeClass("colorred");
	$("#paGesDg").text(data.paGesDg);
	$("#paGesDg").removeClass("colorred");
	$("#paGesDn").text(data.paGesDn);
	$("#paGesDn").removeClass("colorred");
	$("#paGes").text(data.paGes);
	$("#paGes").removeClass("colorred");
	$("#kapital").text(data.kapital);
	$("#kapital").removeClass("colorred");
	$("#kapdetails").text(data.kapdetails);
	$("#bwdetails").text(data.bwdetails);	
	
	
	enablePdf();
	
	if (($("#nachname").val() == "debug") & ($("#vorname").val() == "debug"))
	{
		$("#footnote").html("status=" + XMLHttpRequest.status + "<br/>statusText=" + XMLHttpRequest.statusText + "<br/>responseText=" + XMLHttpRequest.responseText);
	}
}


function ajaxErrorCallback(XMLHttpRequest, textStatus, errorThrown)
{
//	alert("error: XMLHttpRequest=" + XMLHttpRequest.responseText + "; status=" + textStatus + "; errorThrown=" + errorThrown + ";xmlhttprequest.status=" + XMLHttpRequest.status);
	$("#pensionierung").text("Fehler");
	$("#pensionierung").addClass("colorred");
	$("#paGesDg").text("Fehler");
	$("#paGesDg").addClass("colorred");
	$("#paGesDn").text("Fehler");
	$("#paGesDn").addClass("colorred");	
	$("#paGes").text("Fehler");
	$("#paGes").addClass("colorred");
	$("#kapital").text("Fehler");
	$("#kapital").addClass("colorred");
	
	if (($("#nachname").val() == "debug") & ($("#vorname").val() == "debug"))
	{
		$("#footnote").html("status=" + XMLHttpRequest.status + "<br/>statusText=" + XMLHttpRequest.statusText + "<br/>responseText=" + XMLHttpRequest.responseText);
	}
}

function ajaxCompleteCallback(XMLHttpRequest, textStatus)
{
//	alert("complete: XMLHttpRequest=" + XMLHttpRequest.responseText + "; status=" + textStatus);
	disableLoader();
	enableCalculateBtn();
}


function clearForm()
{
	$("#nachname").val("Musternachname");
	$("#vorname").val("Mustervorname");
	$("#titel").val("");
	$("#geburtDat").val("01.01.1970");
	$("#geschlecht").val("M");
	$("#titel").val("");
	$("#bemgl").val("32.520");
	$("#btrag").val("250");
	$("#btranI").val("");
//	$("#btranI").attr("disabled", "disabled");
//	$("#btranI").addClass("disabled");	
	$("#btran").val("0");
//	$("#btranprozent").val("100");

	$("input[name='btranprozent']:nth(0)").attr("checked","checked");
	$("#drdg").val("0");
	$("#drdn").val("0");
	$("#ageYear").val(65);
	$("#ageMonth").val(0);
	calcRetirementDat();
	$("#veranlagungserf").val(3);
	$("#valodg").val(1.5);
//	$("#valodn1").attr("disabled", "");
//	$("input[name='valodn']:nth(1)").attr("checked","checked");
	
	$("#errorPersonaldaten").text("");
	$("#errorBeitragsdaten").text("");
	$("#errorParameter").text("");
	enableCalculateBtn();
	
	clearOutput();
}



function clearOutput()
{
	// loader ausblenden
	disableLoader();
	// pdf icon ausblenden
	disablePdf();
	// Ausgabe leeren
	$("#pensionierung").text(nbsp);
	$("#pensionierung").removeClass("colorred");
	$("#paGesDg").text(nbsp);
	$("#paGesDg").removeClass("colorred");	
	$("#paGesDn").text(nbsp);
	$("#paGesDn").removeClass("colorred");	
	$("#paGes").text(nbsp);
	$("#paGes").removeClass("colorred");
	$("#kapital").text(nbsp);
	$("#kapital").removeClass("colorred");

}


function enableLoader()
{
	// loader einblenden
	$(".loader").css("visibility", "visible");
}

function disableLoader()
{
	// loader ausblenden
	$(".loader").css("visibility", "hidden");
}


// Beiträge Arbeitgeber/Dienstgeber Blur Event
function btragBlurEvent()
{
	var value = getBtrag();
	if (value != null)
	{
		$("#bemgl").val(formatToGui(value / 0.0076875));
//		$("#btran").val(formatToGui(value * getBtranprozent1() / 100));
//		removeWarning("errorBeitragsdaten", warningBemgl);
//		removeWarning("errorBeitragsdaten", warningDGBeitragZuNiedrig);
	}
}

// Eigenbeiträge Blur Event
function btranBlurEvent()
{
	getBtran();
}


// Eigenbeiträge in Prozent der Arbeitgeberbeiträge
function btranprozentChangeEvent()
{
	getBtranprozent();
}

// Bemessungsgrundlage Blur Event
function bemglBlurEvent()
{
	var value = getBemgl();
	if (value != null)
	{
		$("#btrag").val(formatToGui(value * 0.0076875));
		removeWarning("errorBeitragsdaten", warningBtrag);
//		removeWarning("errorBeitragsdaten", warningDGBeitragZuNiedrig);
	}
}


function formatToCalc(value) 
{
	value = value.replace(/\$|\./g,'');
	value = value.replace(/\$|\,/g,'.');
	return value;
}

function formatToGui(value) 
{
	//alert("format:"+value);
//	value = value.replace(/\$|\./g,'');
//	value = value.replace(/\$|\,/g,'.');
	if(isNaN(value)) 
	{
		//alert("format1:"+value);
		// $("#"+id).val("0,00");
		return "0";
	}
	if (value > 999999999) 
	{
		//alert("format2:" + value);
//		$("#"+id).val("0,00");
		return "0";
	}
	 
	var sign = (value == (value = Math.abs(value)));
	
	if (!sign) 
	{
		//alert("format3:"+value);
//		$("#"+id).val("0,00");
		return "0";
	}
/*	
	value = Math.floor(value*100+0.50000000001);
	var cents = value%100;
	value = Math.floor(value/100).toString();
	if (cents < 10) cents = "0" + cents;
	for (var i = 0; i < Math.floor((value.length-(1+i))/3); i++)
		value = value.substring(0,value.length-(4*i+3))+'.'+ value.substring(value.length-(4*i+3));
	value = (((sign)?'':'-') + value + ',' + cents);
*/	
// Runden ohne Nachkomma
	value = Math.round(value).toString();
	for (var i = 0; i < Math.floor((value.toString().length-(1+i))/3); i++)
		value = value.substring(0,value.toString().length-(4*i+3))+'.'+ value.substring(value.toString().length-(4*i+3));
	value = (((sign)?'':'-') + value);
	return value;
}


function generatePdf()
{
//	alert("generatePdf");
}

function disableCalculateBtn()
{
	$("#calculateBtn").attr("disabled", "disabled");
}


function enableCalculateBtn()
{
	$("#calculateBtn").removeAttr("disabled");
}


function enablePdf()
{
	// pdf icon ausblenden
	$(".pdf").addClass("visible");
	$(".pdf").removeClass("hidden");
	
}

function disablePdf()
{
	// pdf icon ausblenden
	$(".pdf").removeClass("visible");
	$(".pdf").addClass("hidden");
}


// ausgelöst wenn GEBURT_DAT den Focus verliert
function geburtDatBlurEvent()
{
//	alert("dob " + getGeburtDat().toString());
//	alert("min " + minGebDat);
//	var warningMin = "Das Geburtsdatum liegt vor dem Minimum (" + convertDateToString(minGebDat) + ")";
//	var warningMax = "Das Geburtsdatum liegt nach dem Maximim (" + convertDateToString(maxGebDat) + ")";
	if (getGeburtDat() < minGebDat)
	{
//		addWarning("errorPersonaldaten", warningMin);
		$("#geburtDat").val(convertDateToString(minGebDat));
	}
	else if (getGeburtDat() > maxGebDat)
	{
//		addWarning("errorPersonaldaten", warningMax);
		$("#geburtDat").val(convertDateToString(maxGebDat));
	}
//	else 
//	{
//		removeWarning("errorPersonaldaten", warningMin);
//		removeWarning("errorPersonaldaten", warningMax);
//	}

	calcRetirementDat();

}

// GETTER für Geburtsdatum
function getGeburtDat()
{
	if (($("#geburtDat").val() != null) & ($("#geburtDat").val().length > 0) & (checkStringDate("geburtDat")))
	{
		var dob_str = $("#geburtDat").val(); 
		var day   = dob_str.substr(0,2);
		var month = dob_str.substr(3,2);
		var year  = dob_str.substr(6,4);
			
		var dob = new Date();
		dob.setDate(day);
		dob.setMonth(month - 1);
		dob.setYear(year);
		dob.setHours(0);
		dob.setMinutes(0);
		dob.setSeconds(0);
		dob.setMilliseconds(0)
		return dob;
	}		
	else return null;
}


function addWarning(container, message)
{
	if ($("#" + container).text().indexOf(message) == -1) 
	{
		$("#" + container).append(message + "<br />");
		$("#" + container).fadeOut().fadeIn().fadeOut().fadeIn();
		error++;
	}
}


function removeWarning(container, message)
{
//	alert("removeWarning\t" + container + "\t" + message);
//	alert("removeWarning\t" + $("#" + container).text() + "\t" + message + "\t" + $("#" + container).text().indexOf(message));
	if ($("#" + container).text().indexOf(message) > -1) 
	{
		$("#" + container).text($("#" + container).text().replace(message, ""));
		error--;
	}
}