/*
COPYRIGHT
Dieser Code unterliegt dem Copyright der Kap Dion - Gesellschaft für Bankensoftware GmbH, Wien.
Kopieren und Verwendung dieses Codes nur mit Genehmigung der Kap Dion GmbH. 

*/

function isRetirementDateInFuture(pensionDay) {
	return (new Date(pensionDay.year, pensionDay.month, pensionDay.day) > new Date() );
}

function minMonthEarlyRetirement(birth, isFemale) {
		var minAgeMonth = 420;
		var month = birth.month;
		var year = birth.year;
		if (isFemale) {
			if ((month<=11)&&(year<=1941)) { minAgeMonth=420; } else 
			if ((month<=5 )&&(year<=1942)) { minAgeMonth=423; } else 
			if ((month<=11)&&(year<=1942)) { minAgeMonth=426; } else 
			if ((month<=5 )&&(year<=1943)) { minAgeMonth=429; } else 
			if ((month<=11)&&(year<=1943)) { minAgeMonth=432; } else 
			if ((month<=5 )&&(year<=1944)) { minAgeMonth=435; } else 
			if ((month<=11)&&(year<=1944)) { minAgeMonth=438; } else 
			if ((month<=5 )&&(year<=1945)) { minAgeMonth=441; } else 
			if ((month<=11)&&(year<=1945)) { minAgeMonth=444; } else 
			{ minAgeMonth=450; }  
		} else {
			if ((month<=11)&&(year<=1936)) { minAgeMonth=420; } else 
			if ((month<=5 )&&(year<=1937)) { minAgeMonth=423; } else 
			if ((month<=11)&&(year<=1937)) { minAgeMonth=426; } else 
			if ((month<=5 )&&(year<=1938)) { minAgeMonth=429; } else 
			if ((month<=11)&&(year<=1938)) { minAgeMonth=432; } else 
			if ((month<=5 )&&(year<=1939)) { minAgeMonth=435; } else 
			if ((month<=11)&&(year<=1939)) { minAgeMonth=438; } else 
			if ((month<=5 )&&(year<=1940)) { minAgeMonth=441; } else 
			if ((month<=11)&&(year<=1940)) { minAgeMonth=444; } else 
			{ minAgeMonth=450; }  
		}
		return minAgeMonth;
}
/**
 * Checks if specified Date is in pension model
 */
function isDateOfBirthInModel(isFemale, day, month, year) {
	var isInModel = false;
	var timeOfBirth = new Date(year, month, day).getTime();
	var startDate;
	if (isFemale) {
		startDate = new Date(1944, 1-1, 1);
	} else {
		startDate = new Date(1939, 1-1, 1);
	}
	if (timeOfBirth >= startDate.getTime()) isInModel = true;
	//alert("GebDatum = "+day+"."+month+"."+year+"; isInModel="+isInModel);
	return isInModel;
}	

function isHackler1Stichtag(birth, isFemale) {
    var isHackler1 = false;
    var timeOfBirth = new Date(birth.year, birth.month, birth.day).getTime();
    var startDate;
    var endDate;
    if (isFemale) {
        // Frauen
        startDate = new Date(1945, 10-1, 1);
        endDate = new Date(1952, 1-1, 1); // bis 31.12.1951
    } else {
        // Maenner 
        startDate = new Date(1940, 10-1, 1);
        endDate = new Date(1947, 1-1, 1); // bis 31.12.1946
    }
    if ((timeOfBirth >= startDate.getTime())&&(timeOfBirth < startDate.getTime())) isHackler1 = true;

    return isHackler1;
}

function isHackler2Stichtag(isFemale, birth) {
    var isHackler2 = false;
    var timeOfBirth = new Date(birth.year, birth.month, birth.day).getTime();
    var startDate;
    var endDate;

    if (isFemale) {
        // Frauen
        startDate = new Date(1952, 1-1, 1);
        endDate = new Date(1953, 7-1, 1); 
    } else {
        // Maenner 
        startDate = new Date(1947, 1-1, 1);
        endDate = new Date(1948, 7-1, 1); 
    }
    if ((timeOfBirth >= startDate.getTime())&&(timeOfBirth < startDate.getTime())) isHackler2 = true;
    return isHackler2;
}

function isSchwerarbeiterStichtag(isFemale, birth) {
    var isSchwerarbeiterStichtag = false;
    var timeOfBirth = new Date(birth.year, birth.month, birth.day).getTime();
    var startDate;
    var endDate;

    if (isFemale) {
        // Frauen
        startDate = new Date(1952, 1-1, 1);
        endDate = new Date(1964, 1-1, 1); 
    } else {
        // Maenner 
        startDate = new Date(1947, 1-1, 1);
        endDate = new Date(1959, 1-1, 1); 
    }
    if ((timeOfBirth >= startDate.getTime())&&(timeOfBirth < startDate.getTime())) isSchwerarbeiterStichtag = true;
    return isSchwerarbeiterStichtag;
}

function isFruehpensionPossible(dateOfBirth, isFemale) {
	var result = true;
	var birth = new Date(dateOfBirth.year, dateOfBirth.month, dateOfBirth.day);
	if (isFemale) {
		if (birth.getTime() > new Date(1957,5-1,1).getTime()) result = false;
	} else {
		if (birth.getTime() > new Date(1952,5-1,1).getTime()) result = false;	
	}
	return result;
}
	

function getRegelpensionsalterInMonaten(isFemale, day, month, year) {
	// Anhebung Regelpensionsalter laut BVG

	var pensionsalter;
	if (isFemale) {
		if (
			(year<1963)||
			((year==1963)&&(month<11))||
			((year==1963)&&(month==11)&&(day==1))
		) { pensionsalter = 60 * 12; }
		
		else {
			if (	
				(year<1964)||
				((year==1964)&&(month<5))||
				((year==1964)&&(month==5)&&(day==1))
			) {pensionsalter = 60.5 * 12; } 
			else {
				if (	
					(year<1964)||
					((year==1964)&&(month<11))||
					((year==1964)&&(month==11)&&(day==1))
				) pensionsalter = 61 * 12;
				else {
					if (	
						(year<1965)||
						((year==1965)&&(month<5))||
						((year==1965)&&(month==5)&&(day==1))
					) pensionsalter = 61.5 * 12;
					else {
						if (	
							(year<1965)||
							((year==1965)&&(month<11))||
							((year==1965)&&(month==11)&&(day==1))
						) pensionsalter = 62 * 12;
						else {
							if (	
								(year<1966)||
								((year==1966)&&(month<5))||
								((year==1966)&&(month==5)&&(day==1))
							) pensionsalter = 62.5 * 12;
							else {
								if (	
									(year<1966)||
									((year==1966)&&(month<11))||
									((year==1966)&&(month==11)&&(day==1))
								) pensionsalter = 63 * 12;
								else {
									if (	
										(year<1967)||
										((year==1967)&&(month<5))||
										((year==1967)&&(month==5)&&(day==1))
									) pensionsalter = 63.5 * 12;
									else {
										if (	
											(year<1967)||
											((year==1967)&&(month<11))||
											((year==1967)&&(month==11)&&(day==1))
										) pensionsalter = 64 * 12;
										else {
											if (	
												(year<1968)||
												((year==1968)&&(month<5))||
												((year==1968)&&(month==5)&&(day==1))
											) pensionsalter = 64.5 * 12;
											else {
												pensionsalter = 65 * 12;
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	} else  {
		pensionsalter = 65 *12;
	}
	return pensionsalter;
}

function minRetirementAgeFruepension( dayOfBirth, monthOfBirth, yearOfBirth, isFemale ) {
	// determine minimum age for fruepension depending on birthday and sex
	var year = yearOfBirth;
	var month = monthOfBirth;
	var day = dayOfBirth;
	
	if (isFemale) {
		year += 56;
		month += 6;
		if (month>11) {
			month -= 12;
			year++;
		}
	} else {
		//male
		year += 61;
		month += 6;
		if (month>11) {
			month -= 12;
			year++;
		}
	}
	var minAgeMonth = 0;
			if (isFemale) {
					// female
					// alte erhoehung
			if (year<2004 || ((month<=5 )&&(year<=2004)) ) { minAgeMonth=678; } else
			if ((month<=8 )&&(year<=2004)) { minAgeMonth=680; } else
			if ((month<=11 )&&(year<=2004)) { minAgeMonth=682; } else
			if ((month<=2  )&&(year<=2005)) { minAgeMonth=683; } else
			if ((month<=5  )&&(year<=2005)) { minAgeMonth=684; } else
			if ((month<=8  )&&(year<=2005)) { minAgeMonth=685; } else
			if ((month<=11 )&&(year<=2005)) { minAgeMonth=686; } else
			if ((month<=2  )&&(year<=2006)) { minAgeMonth=687; } else
			if ((month<=5  )&&(year<=2006)) { minAgeMonth=688; } else
			if ((month<=8  )&&(year<=2006)) { minAgeMonth=689; } else
			if ((month<=11 )&&(year<=2006)) { minAgeMonth=690; } else
			if ((month<=2  )&&(year<=2007)) { minAgeMonth=691; } else
			if ((month<=5  )&&(year<=2007)) { minAgeMonth=692; } else
			if ((month<=8  )&&(year<=2007)) { minAgeMonth=693; } else
			if ((month<=11 )&&(year<=2007)) { minAgeMonth=694; } else
			if ((month<=2  )&&(year<=2008)) { minAgeMonth=695; } else
			if ((month<=5  )&&(year<=2008)) { minAgeMonth=696; } else
			if ((month<=8  )&&(year<=2008)) { minAgeMonth=697; } else
			if ((month<=11 )&&(year<=2008)) { minAgeMonth=698; } else
			if ((month<=2  )&&(year<=2009)) { minAgeMonth=699; } else
			if ((month<=5  )&&(year<=2009)) { minAgeMonth=700; } else
			if ((month<=8  )&&(year<=2009)) { minAgeMonth=701; } else
			if ((month<=11 )&&(year<=2009)) { minAgeMonth=702; } else
			if ((month<=2  )&&(year<=2010)) { minAgeMonth=703; } else
			if ((month<=5  )&&(year<=2010)) { minAgeMonth=704; } else
			if ((month<=8  )&&(year<=2010)) { minAgeMonth=705; } else
			if ((month<=11 )&&(year<=2010)) { minAgeMonth=706; } else
			if ((month<=2  )&&(year<=2011)) { minAgeMonth=707; } else
			if ((month<=5  )&&(year<=2011)) { minAgeMonth=708; } else
			if ((month<=8  )&&(year<=2011)) { minAgeMonth=709; } else
			if ((month<=11 )&&(year<=2011)) { minAgeMonth=710; } else
			if ((month<=2  )&&(year<=2012)) { minAgeMonth=711; } else
			if ((month<=5  )&&(year<=2012)) { minAgeMonth=712; } else
			if ((month<=8  )&&(year<=2012)) { minAgeMonth=713; } else
			if ((month<=11 )&&(year<=2012)) { minAgeMonth=714; } else
			if ((month<=2  )&&(year<=2013)) { minAgeMonth=715; } else
			if ((month<=5  )&&(year<=2013)) { minAgeMonth=716; } else
			if ((month<=8  )&&(year<=2013)) { minAgeMonth=717; } else
			if ((month<=11 )&&(year<=2013)) { minAgeMonth=718; } else
			if ((month<=2  )&&(year<=2014)) { minAgeMonth=719; } else
			{ 
				//minAgeMonth=720; 
				// und jetzt kommt Anhebung Regelpensionsalter
			  minAgeMonth=getRegelpensionsalterInMonaten(isFemale,dayOfBirth,monthOfBirth,yearOfBirth);
			 
			
			} 
		} else {
			if (year<2004 || ((month<=5 )&&(year<=2004))) { minAgeMonth=738;} else
			if ((month<=8 )&&(year<=2004)) { minAgeMonth=740;} else
			if ((month<=11 )&&(year<=2004)) { minAgeMonth=742; } else
			if ((month<=2  )&&(year<=2005)) { minAgeMonth=743; } else
			if ((month<=5  )&&(year<=2005)) { minAgeMonth=744; } else
			if ((month<=8  )&&(year<=2005)) { minAgeMonth=745; } else
			if ((month<=11 )&&(year<=2005)) { minAgeMonth=746; } else
			if ((month<=2  )&&(year<=2006)) { minAgeMonth=747; } else
			if ((month<=5  )&&(year<=2006)) { minAgeMonth=748; } else
			if ((month<=8  )&&(year<=2006)) { minAgeMonth=749; } else
			if ((month<=11 )&&(year<=2006)) { minAgeMonth=750; } else
			if ((month<=2  )&&(year<=2007)) { minAgeMonth=751; } else
			if ((month<=5  )&&(year<=2007)) { minAgeMonth=752; } else
			if ((month<=8  )&&(year<=2007)) { minAgeMonth=753; } else
			if ((month<=11 )&&(year<=2007)) { minAgeMonth=754; } else
			if ((month<=2  )&&(year<=2008)) { minAgeMonth=755; } else
			if ((month<=5  )&&(year<=2008)) { minAgeMonth=756; } else
			if ((month<=8  )&&(year<=2008)) { minAgeMonth=757; } else
			if ((month<=11 )&&(year<=2008)) { minAgeMonth=758; } else
			if ((month<=2  )&&(year<=2009)) { minAgeMonth=759; } else
			if ((month<=5  )&&(year<=2009)) { minAgeMonth=760; } else
			if ((month<=8  )&&(year<=2009)) { minAgeMonth=761; } else
			if ((month<=11 )&&(year<=2009)) { minAgeMonth=762; } else
			if ((month<=2  )&&(year<=2010)) { minAgeMonth=763; } else
			if ((month<=5  )&&(year<=2010)) { minAgeMonth=764; } else
			if ((month<=8  )&&(year<=2010)) { minAgeMonth=765; } else
			if ((month<=11 )&&(year<=2010)) { minAgeMonth=766; } else
			if ((month<=2  )&&(year<=2011)) { minAgeMonth=767; } else
			if ((month<=5  )&&(year<=2011)) { minAgeMonth=768; } else
			if ((month<=8  )&&(year<=2011)) { minAgeMonth=769; } else
			if ((month<=11 )&&(year<=2011)) { minAgeMonth=770; } else
			if ((month<=2  )&&(year<=2012)) { minAgeMonth=771; } else
			if ((month<=5  )&&(year<=2012)) { minAgeMonth=772; } else
			if ((month<=8  )&&(year<=2012)) { minAgeMonth=773; } else
			if ((month<=11 )&&(year<=2012)) { minAgeMonth=774; } else
			if ((month<=2  )&&(year<=2013)) { minAgeMonth=775; } else
			if ((month<=5  )&&(year<=2013)) { minAgeMonth=776; } else
			if ((month<=8  )&&(year<=2013)) { minAgeMonth=777; } else
			if ((month<=11 )&&(year<=2013)) { minAgeMonth=778; } else
			if ((month<=2  )&&(year<=2014)) { minAgeMonth=779; } else
			{ minAgeMonth=780; } 			
		}
	return minAgeMonth;
}	

function minRetirementAgeInMonths(day,month,year,isFemale) {
	// determine minimum age for pension depending on birthday and gender
	// auslaufen fruepension und bvg-anhebung enthalten
	var res1 = minRetirementAgeFruepension(day,month,year,isFemale);
	var res2 = getRegelpensionsalterInMonaten(isFemale,day,month,year) ;
	return Math.min(res1,res2);
}

function minRetirementAgeInMonthsInklKorridor(day,month,year,isFemale) {
	// determine minimum age for pension depending on birthday and gender
	// auslaufen fruepension und bvg-anhebung enthalten
	var res1 = minRetirementAgeFruepension(day,month,year,isFemale);
	var res2 = getRegelpensionsalterInMonaten(isFemale,day,month,year) ;
	var res3 = Math.min(res1,res2);
	return Math.min(res3, 12*62);
}


/* calcualte pension date */
function detPensionDay(datum, age) {
	// calculates the first day of pension, according to age at pension and birthday
	var pension = new Datum(datum.day, datum.month, datum.year);
	
	if (pension.day!=1) { 
		pension.day = 1;
		pension.month += 1;
		if (pension.month>11) {
			pension.month -= 12;
			pension.year++;
		}
	}
	pension.year += Math.floor(age/12);
	pension.month += (age%12);

	if (pension.month>11) {
		pension.month -= 12;
		pension.year++;
	}
	return pension;
}

/* calculate number of working years at retirement */ 
function detWorkingYearsAtRetirement(numWorkingMonthToday, pensionDay, today) {
	var yearsToGo = pensionDay.year - today.year;
	var monthsToGo = pensionDay.month - today.month;
	monthsToGo += yearsToGo * 12;
	return (numWorkingMonthToday + monthsToGo);
}

function getAntrittsalterHacklerI(isFemale){
	if (isFemale) return 55*12;
	else return 60*12;
}

function getWartezeitHacklerI(isFemale) {
	if (isFemale) return 480;
	else return 540;
}

function getAntrittsalterHacklerII(isFemale){
	if (isFemale) return 56.5*12;
	else return 61.5*12;
}

function getWartezeitHacklerII(isFemale) {
	// ist eh wie Wartezeit Hackler 1
	return getWartezeitHacklerI(isFemale);
}

function getWartezeitFruehpension(birth, isFemale) {
	// Wartezeit Fruehpension ist eigentlich noch komplexer, fuer Fall a) und Fall b) gibt es Uebergangsregeln.
	// hier nur eine Uebergangsregel enthalten
	return minMonthEarlyRetirement(birth, isFemale);
}

function getWartezeitRegelpension() {
	return 15*12;
}

function getNiceText(months) {
	var text = Math.floor(months / 12) + " Jahren";
	if (months%12 != 0) {
		if (months%12 == 1) text += " und einem Monat"; else text+= " und "+ (months%12)+ " Monaten";
	}	
	return text;
}

function isPensionsanspruch(ageAtRetirementInMonths, dateOfRetirement, monthsOfContribution, dateOfBirth, isFemale) {
	//alert("Input: ageAtRetirementInMonths="+ageAtRetirementInMonths+", dateOfRetirement="+dateOfRetirement.day+"."+(dateOfRetirement.month+1)+"."+dateOfRetirement.year+", monthsOfContribution="+monthsOfContribution+", dateOfBirth="+dateOfBirth.day+"."+dateOfBirth.month+"."+dateOfBirth.year+", isFemale="+isFemale);
	var result = new Result(0, "");
	// 0 = alles OK, 1= Alter nicht ausreichend, 2= Wartezeit nicht erfuellt

	
	// Antrittsalter < Hackler1 und Hackler1 moeglich ?
	if (ageAtRetirementInMonths >= getAntrittsalterHacklerI(isFemale)) {
		// alt genug fuer Hackler I
		if (ageAtRetirementInMonths >=  getAntrittsalterHacklerII(isFemale)) {
			// alt genug fuer Hackler II
			if ((ageAtRetirementInMonths >= 62*12)||(ageAtRetirementInMonths >=  minRetirementAgeFruepension(dateOfBirth.day, dateOfBirth.month, dateOfBirth.year, isFemale))) {
				// alt genug fuer KP oder Fruehpension 
				if (ageAtRetirementInMonths >= getRegelpensionsalterInMonaten(isFemale, dateOfBirth.day, dateOfBirth.month, dateOfBirth.year)) {
					// alt genug fuer Regelpension
					if (monthsOfContribution >= getWartezeitRegelpension()) {
						// Wartezeit Regelpension erfuellt, Anspruchsberechtigt Regelpension
						result.type = 0;
					} else {
						// Wartezeit Regelpension nicht erfuellt, Wartezeit Fruehpension und Hackler kann auch nicht erfuellt sein
						var fehlendeMonate = 15*12 - monthsOfContribution;
						result.msg = "Zum Pensionsantritt fehlen " + fehlendeMonate + " Beitragsmonate";
						result.type = 2;
						
					}
				} else {
					// nicht alt genug fuer Regelpension, also nur KP, Fruehpension, Hackler II oder Hackler I moeglich
					if (monthsOfContribution >= getWartezeitFruehpension(dateOfBirth, isFemale)) {
						// Wartezeit Fruehpension erfuellt, anspruchsberechtigt
						result.type = 0;
					} else {
						// Wartezeit Fruehpension nicht erfuellt, Hackler sicher erst recht nicht
						var fehlendeMonate = getWartezeitFruehpension(dateOfBirth, isFemale) - monthsOfContribution;
						result.msg = "Zur Früh- oder Korridorpension fehlen "+ fehlendeMonate + " Beitragsmonate";
						result.type = 2;
					  // hier wäre es gut zu sagen ob vor dem Regelpensionsalter noch genuegend vorliegen, oder ob erst mit Regelpensionsalter Pension moeglich ist
					}
				}
			} else {
				// nicht alt genug fuer Fruehpension, also nur Hackler II oder Hackler I moeglich
				if ((monthsOfContribution >= getWartezeitHacklerI(isFemale))&&(isHackler1Stichtag(dateOfBirth, isFemale))) {
					// ist Hackler I, anspruchsberechtigt
					result.type = 0;
				} else {
					// ist nicht Hackler I berechtigt, kann eventuell noch Hackler II anspruchsberechtigt sein
					if ((monthsOfContribution >= getWartezeitHacklerII(isFemale))&&(isHackler2Stichtag(dateOfBirth, isFemale))) {
						// ist Hackler II, anspruchsberechtigt
						result.type = 0;
					} else {	
						// auch Hackler II kein Anspruch, sieht schlecht aus:
						
						if ((isHackler1Stichtag(dateOfBirth, isFemale) )||(isHackler2Stichtag(dateOfBirth, isFemale))) {
							// vom Jahrgang her ginge Hacklerpension ja 
							var ageFruehpensionInMonths = minRetirementAgeFruepension(dateOfBirth.day, dateOfBirth.month, dateOfBirth.year, isFemale);
							var fehlendeMonateHackler = getWartezeitHacklerII(isFemale) - monthsOfContribution;
							//result.msg = "Für Hacklerpension fehlen "+fehlendeMonateHackler+" Beitragsmonate, Frühpension erst im Alter von " + getNiceText(ageFruehpensionInMonths);
							if (isFruehpensionPossible(dateOfBirth, isFemale)) {
								result.msg = "Frühpension erst im Alter von " + getNiceText(ageFruehpensionInMonths) + " ";
								result.type = 1;
							} else {
								result.msg = "Pensionsantritt erst zum Regelpensionsalter von " + getNiceText(ageFruehpensionInMonths) + " ";
								result.type = 1;
							}							
							
							
						} else {
							// aufgrund Geburtstag keine Moeglichkeit auf Hacklerpension 1 oder 2	
							var ageFruehpensionInMonths = minRetirementAgeFruepension(dateOfBirth.day, dateOfBirth.month, dateOfBirth.year, isFemale);
							//result.msg = "Hacklerpension für Jahrgang nicht möglich, Frühpension erst im Alter von " + getNiceText(ageFruehpensionInMonths);
							if (isFruehpensionPossible(dateOfBirth, isFemale)) {
								result.msg = "Frühpension erst im Alter von " + getNiceText(ageFruehpensionInMonths) + " ";
								result.type = 1;
							} else {
								result.msg = "Pensionsantritt erst zum Regelpensionsalter von " + getNiceText(ageFruehpensionInMonths) + " ";
								result.type = 1;
							}
							
						}
					}
				}
			}		
		} else {
			// nicht alt genug fuer Hackler II, nur Hackler I moeglich
			if ((monthsOfContribution >= getWartezeitHacklerI(isFemale))&&(isHackler1Stichtag(dateOfBirth, isFemale))) {
				// ist Hackler I, anspruchsberechtigt
				result.type = 0;
			} else {
				// ist nicht Hackler I berechtigt, also gar nicht berechtigt
				if (isHackler1Stichtag(dateOfBirth, isFemale) ) {
					// vom Jahrgang her ginge Hacklerpension ja 
					var ageFruehpensionInMonths = minRetirementAgeFruepension(dateOfBirth.day, dateOfBirth.month, dateOfBirth.year, isFemale);
					var fehlendeMonateHackler = getWartezeitHacklerI(isFemale) - monthsOfContribution;
					//result.msg = "Für Hacklerpension fehlen "+fehlendeMonateHackler+" Beitragsmonate, Frühpension erst im Alter von " + getNiceText(ageFruehpensionInMonths);
					if (isFruehpensionPossible(dateOfBirth, isFemale)) {
						result.msg = "Frühpension erst im Alter von " + getNiceText(ageFruehpensionInMonths) +" ";
						result.type = 1;
					} else {
						result.msg = "Pensionsantritt erst zum Regelpensionsalter von " + getNiceText(ageFruehpensionInMonths) +" ";
						result.type = 1;
					}
					
				} else {
					// aufgrund Geburtstag keine Moeglichkeit auf Hacklerpension 1
					var ageFruehpensionInMonths = minRetirementAgeFruepension(dateOfBirth.day, dateOfBirth.month, dateOfBirth.year, isFemale);
					if (isFruehpensionPossible(dateOfBirth, isFemale)) {
						result.msg = "Frühpension erst im Alter von " + getNiceText(ageFruehpensionInMonths) +" ";
						result.type = 1;
					} else {
						result.msg = "Pensionsantritt erst zum Regelpensionsalter von " + getNiceText(ageFruehpensionInMonths) +" ";
						result.type = 1;
					}
					
				}
			}
		}	
	} else {
		// nicht einmal alt genug fuer Hackler 1
		var ageFruehpensionInMonths = minRetirementAgeFruepension(dateOfBirth.day, dateOfBirth.month, dateOfBirth.year, isFemale);
		//result.msg = "Frühpension erst mit " + getNiceText(ageFruehpensionInMonths);
		if (isFruehpensionPossible(dateOfBirth, isFemale)) {
			result.msg = "Frühpension erst im mit " + getNiceText(ageFruehpensionInMonths) +" ";
			result.type = 1;
		} else {
			result.msg = "Pensionsantritt erst zum Regelpensionsalter mit " + getNiceText(ageFruehpensionInMonths) +" ";
			result.type = 1;
		}
		result.type = 1;
	}	
	//alert("Ergebnis: Type=" + result.type + ", msg="+ result.msg );
	return result;
}

function Result(type, msg) {
	this.type = type;
	this.msg = msg;
}

