// Browserweiche
IE = document.all&&!window.opera;
DOM = document.getElementById&&!IE;

// aktuelle Scroll-Position merken
function scroll_pos() {
  var y = 0;
  if (window.pageYOffset) {
    y = window.pageYOffset;
  } 
  else if (document.documentElement && document.documentElement.scrollTop) { // IE6
    y = document.documentElement.scrollTop;
  }
  else if (document.body && document.body.scrollTop) { //IE5 
	y = document.body.scrollTop;
  }
  window.scrollTo(0,y);	
}

// Felder aktiv setzen
function set_active(id) {
	document.getElementById(id).disabled = false;
}

// Felder inaktiv setzen
function set_inactive(id) {
	document.getElementById(id).disabled = true;
}

// Elemente ausblenden
 function hide(id) {
   	if (document.getElementById(id)) {
		document.getElementById(id).style.visibility = "hidden";
		document.getElementById(id).style.display = "none";
	}
 }

// Elemente einblenden
 function show(id) {
   	if (document.getElementById(id)) {
		document.getElementById(id).style.visibility = "visible";
		document.getElementById(id).style.display = "block";
	}
 }

// Position eines Elements ändern
function change_position(event,id) {
	// Mausposition ermitteln
    mouse_x = (IE) ? window.event.clientX : event.pageX;
    mouse_y = (IE) ? window.event.clientY + document.documentElement.scrollTop : event.pageY; // bei IE muss der gescrollte Abstand addiert werden
    // Höhe des Elements ermitteln
    hoehe = document.getElementById(id).offsetHeight;  
	// Element in der Position verschieben     
	document.getElementById(id).style.left = (mouse_x + 5) + "px";
    document.getElementById(id).style.top = (mouse_y - hoehe) + "px";
}

// Wenn das Datum vollständig eingegeben wurde, wird das Feld mit der Kindzahl aktiv
function greyed_out_date () {
 
 	var day = parseInt(document.getElementById('day').options[document.getElementById('day').selectedIndex].value);
	var month = parseInt(document.getElementById('month').options[document.getElementById('month').selectedIndex].value);
	var year = parseInt(document.getElementById('year').options[document.getElementById('year').selectedIndex].value);
	
	if (!isNaN(day) && !isNaN(month) && !isNaN(year)) {
	 set_active('more_child_sel');	
	}
    else {
	 set_inactive('more_child_sel');
	}
}

// bei bestimmten Beschäftigungsarten das Feld mit dem Gehalt inaktiv setzen
function greyed_out_pay() {
	var mode_empl_sel = document.getElementById('mode_empl_sel').options[document.getElementById('mode_empl_sel').selectedIndex].value;
	var health_ins_sel = document.getElementById('health_ins_sel').options[document.getElementById('health_ins_sel').selectedIndex].value;

	if (mode_empl_sel != "arbeitnehmerin") {
		set_inactive('net_pay_number');
		hide('net_pay_info');
	}
	else if (mode_empl_sel == "arbeitnehmerin" && health_ins_sel == "ges_fam") {
	   set_inactive('net_pay_number');
	   hide('net_pay_info');	
	}
	else {
		set_active('net_pay_number');
		document.getElementById('net_pay_info').style.visibility = "visible";
		document.getElementById('net_pay_info').style.display = "inline";
	}
}

// bei bestimmten Beschäftigungsarten das Feld mit der Krankenversicherung inaktiv setzen
function greyed_out_health() {
	var mode_empl_sel = document.getElementById('mode_empl_sel').options[document.getElementById('mode_empl_sel').selectedIndex].value;
	var health_ins_sel = document.getElementById('health_ins_sel').options[document.getElementById('health_ins_sel').selectedIndex].value;

	if (mode_empl_sel == "hausfrau" || mode_empl_sel == "beamtin") {
		set_inactive('health_ins_sel');
	}
	else {
		set_active('health_ins_sel');
	}
}

// bei Frauen, die selbstständig und gesetzlich versichert sind, erscheint ein zusätzliches Feld (Anspruch auf Krankengeld)
function show_kr_geld() {
	var mode_empl_sel = document.getElementById('mode_empl_sel').options[document.getElementById('mode_empl_sel').selectedIndex].value;
	var health_ins_sel = document.getElementById('health_ins_sel').options[document.getElementById('health_ins_sel').selectedIndex].value;
	
	if (mode_empl_sel == "selbststaendige" && health_ins_sel == "gesetz") {
		show('anspr_kr');
	}
	else {
		hide('anspr_kr');
	}
}

// Eingaben auf Fehler prüfen
// Funktion gibt einen Array aus zwei Werten zurück
function check_entries () {  
 
    var day = parseInt(document.getElementById('day').options[document.getElementById('day').selectedIndex].value);
	var month = parseInt(document.getElementById('month').options[document.getElementById('month').selectedIndex].value);
	var year = parseInt(document.getElementById('year').options[document.getElementById('year').selectedIndex].value);
	var mode_empl_sel = document.getElementById('mode_empl_sel').options[document.getElementById('mode_empl_sel').selectedIndex].value;
	var health_ins_sel = document.getElementById('health_ins_sel').options[document.getElementById('health_ins_sel').selectedIndex].value;
	var net_pay_number = document.getElementById('net_pay_number').value;

	check_array = new Array();
	
	// Nettogehalt auf Fehler prüfen
	  var pruef = 1;
      for (i = 0; i < net_pay_number.length; ++i) {
        if (net_pay_number.charAt(i) < "0" || net_pay_number.charAt(i) > "9") {
            pruef = -1;
        }
      }
 
    // Am Anfang sind die Prüfvariablen auf true
    var check_frist = true;
    var check_money = true;
	
	// Schaltjahr-Berechnung
    a = year % 4; // wenn Rest Null, dann Schaltjahr
    b = year % 100; // wenn Rest Null, dann kein Schaltjahr
    c = year % 400; // wenn Rest Null, dann trotzdem Schaltjahr
    
    // Überprüfung des Datums
    if (isNaN(day) || isNaN(month) || isNaN(year)) {
		check_frist = false;
    }

	
	if (day > 29 && month == 1) { 
		alert("Datum existiert nicht");
		check_frist = false;
		check_money = false;
	}
	else if (day > 28 && month == 1 && (a != 0 || a == 0 && b == 0 || a == 0 && b == 0 && c != 0)) {
		alert("Datum existiert nicht");
		check_frist = false;
		check_money = false;
	}
	else if (day > 30 && (month == 1 || month == 3 || month == 5 || month == 8 || month == 10)) {
		alert("Datum existiert nicht");
		check_frist = false;
		check_money = false;
    }
    // Überprüfung weiterer Felder
    else if (mode_empl_sel == "") {
		alert("Bitte Beschäftigungsart angeben");
		check_frist = false;
		check_money = false;
	}
	else if (mode_empl_sel == "arbeitnehmerin" || mode_empl_sel == "gering" || mode_empl_sel == "selbststaendige") {
		if (health_ins_sel == "") {
		 alert("Bitte Krankenversicherungsart angeben");	
		 check_frist = false;
		 check_money = false;
		}
		if ((net_pay_number == "" || pruef == -1) && mode_empl_sel == "arbeitnehmerin" && health_ins_sel != "ges_fam" && check_money) {
		 alert("Bitte Nettolohn in vollen Euro angeben");
		 check_frist = false;
		 check_money = false;	
		}
	}
    
    // Ausgabe-Array vorbereiten
    check_array[0] = check_frist;
    check_array[1] = check_money;
	return check_array; 	
}

function calculate() {
	// Fehler-Abfrage generieren
	check_array = check_entries();
	
	// Mutterschutzfrist berechnen
	if (check_array[0]) {
	 
	 // Ergebnisse zunächst ausblenden	
	  hide('result');
	  hide('mut_frist');
	  hide('mut_geld');
	
		// Variablendeklaration
		var day = parseInt(document.getElementById('day').options[document.getElementById('day').selectedIndex].value);
	    var month = parseInt(document.getElementById('month').options[document.getElementById('month').selectedIndex].value);
	    var year = parseInt(document.getElementById('year').options[document.getElementById('year').selectedIndex].value);
	    var entb_ter = new Date(year,month,day,0,0,0);
	    var more_child_sel = document.getElementById('more_child_sel').options[document.getElementById('more_child_sel').selectedIndex].value;
	    
		// Berechnung
	    var mut_sch_anf_unform = entb_ter.getTime() - (1000*60*60*24*7*6);
	    var mut_sch_anf = new Date(mut_sch_anf_unform);
	    var mut_sch_end_unform = entb_ter.getTime() + (1000*60*60*24*7*8);
	    var mut_sch_end = new Date(mut_sch_end_unform);
	    
	    if (more_child_sel == "yes") {
			mut_sch_end_unform = mut_sch_end.getTime() + (1000*60*60*24*7*4);
		    mut_sch_end = new Date(mut_sch_end_unform);
		} 
	    
	    // Ausgabe
	    var extra_null_tag_anf = "";
	    var extra_null_tag_end = "";
	    var extra_null_mon_anf = "";
	    var extra_null_mon_end = "";
	    
	    if (mut_sch_anf.getDate() < 10) {
			extra_null_tag_anf = "0";
		}
		if (mut_sch_end.getDate() < 10) {
			extra_null_tag_end = "0";
		}
		
		if (mut_sch_anf.getMonth() < 9) {
			extra_null_mon_anf = "0";
		}
		if (mut_sch_end.getMonth() < 9) {
			extra_null_mon_end = "0";
		}
		
	    document.getElementById('mut_frist_span').innerHTML = extra_null_tag_anf+mut_sch_anf.getDate()+"."+extra_null_mon_anf+(mut_sch_anf.getMonth()+1)+"."+mut_sch_anf.getFullYear()+" - "+extra_null_tag_end+mut_sch_end.getDate()+"."+extra_null_mon_end+(mut_sch_end.getMonth()+1)+"."+mut_sch_end.getFullYear();
	    show('result');
		show('mut_frist');
	}
	
	// Mutterschaftsgeld berechnen
	if (check_array[1]) {
	 
	 // Ergebnisse zunächst ausblenden	
	  hide('result');
      hide('mut_frist');
	  hide('mut_geld');
	
		// Variablendeklaration		
	    var mode_empl_sel = document.getElementById('mode_empl_sel').options[document.getElementById('mode_empl_sel').selectedIndex].value;
	    var health_ins_sel = document.getElementById('health_ins_sel').options[document.getElementById('health_ins_sel').selectedIndex].value;
	    var anspr_kr_check = document.getElementById('anspr_kr_check').checked;
	    var net_pay_number = parseInt(document.getElementById('net_pay_number').value);
	    
	    // Berechnung und Ausgabe der verschiedenen Kombinationen (nicht bei allen Kombinationen sind Rechnnungen notwendig)
	    
	    // Benutzer ist Arbeitnehmerin
	    if (mode_empl_sel == "arbeitnehmerin") {
			
			//gesetzlich versichert
			if (health_ins_sel == "gesetz") {
			 // bezahlt wird der tägliche Nettolohn (13€ von der Krankenkasse, Rest als Arbeitgeberzuschuss)
			 net_pay_day = Math.round(net_pay_number * 3 / 90 * 100) / 100;	
			 if (net_pay_day > 13) {
				kr_ka_ant = 13;
				ar_ge_ant = Math.round((net_pay_day - kr_ka_ant) * 100) / 100;
			 }
			 else {
				kr_ka_ant = net_pay_day;
				ar_ge_ant = 0;
			 }
			
			  net_pay_day2 = String(net_pay_day).replace(/\./,",");
			  ar_ge_ant2 = String(ar_ge_ant).replace(/\./,",");
			  // bei Zahlen mit nur einer Nachkommastelle soll noch eine Null zugefügt werden
	          if (net_pay_day2.charAt(net_pay_day2.length - 2) == "," ){ net_pay_day2 = net_pay_day2 + "0"; }
			  if (ar_ge_ant2.charAt(ar_ge_ant2.length - 2) == "," ){ ar_ge_ant2 = ar_ge_ant2 + "0"; }
	          
			  // Ausgabe
			  document.getElementById('mut_geld_span').innerHTML = "Als gesetzlich versicherte Arbeitnehmerin erhalten Sie <b>pro Kalendertag "+net_pay_day2+" &euro; </b>Mutterschaftsgeld. Dies entspricht ungef&auml;hr Ihrem täglichen Nettolohn in den letzten drei Monaten vor dem Beginn der Mutterschutzfrist.";
			    if (net_pay_day > 13) {
				  document.getElementById('mut_geld_span2').innerHTML = "Davon werden Ihnen <b>"+kr_ka_ant+" &euro; pro Kalendertag von Ihrer Krankenkasse, der Rest ("+ar_ge_ant2+" &euro; pro Kalendertag) als Arbeitgeberzuschuss </b>von Ihrem Arbeitgeber bezahlt.";
			    }
		        else {
			      document.getElementById('mut_geld_span2').innerHTML = "Das Mutterschaftsgeld wird Ihnen von Ihrer Krankenkasse ausgezahlt.";
		        }
			}
			
			// familienversichert
		    if (health_ins_sel == "ges_fam") {
		       document.getElementById('mut_geld_span').innerHTML = "Als Arbeitnehmerin, die gesetzlich familienversichert ist, haben Sie einen Anspruch auf <b>&nbsp;bis zu 210 &euro; Mutterschaftsgeld</b>, das Ihnen einmalig vom Bundesversicherungsamt ausbezahlt wird.";
			   document.getElementById('mut_geld_span2').innerHTML = "";	
			}
			
			// privat versichert
			if (health_ins_sel == "privat") {
			  net_pay_day = Math.round(net_pay_number * 3 / 90 * 100) / 100;
			  if (net_pay_day > 13) {
			   ar_ge_ant = Math.round((net_pay_day - 13) * 100) / 100;
			  }
			  else {
			   ar_ge_ant = 0;
			  }
			  
			  ar_ge_ant2 = String(ar_ge_ant).replace(/\./,",");
			  // bei Zahlen mit nur einer Nachkommastelle soll noch eine Null zugefügt werden
	          if (ar_ge_ant2.charAt(ar_ge_ant2.length - 2) == "," ){ ar_ge_ant2 = ar_ge_ant2 + "0"; }

			  // Ausgabe
			  document.getElementById('mut_geld_span').innerHTML = "Als privat versicherte Arbeitnehmerin haben Sie einen Anspruch auf &nbsp;<b>bis zu 210 &euro; Mutterschaftsgeld</b>, das Ihnen einmalig vom Bundesversicherungsamt ausbezahlt wird. ";
			  if (ar_ge_ant > 0) {
			   document.getElementById('mut_geld_span2').innerHTML = "Zusätzlich erhalten Sie einen <b>Arbeitgeberzuschuss von "+ar_ge_ant2+" &euro; pro Kalendertag </b> von Ihrem Arbeitgeber. ";
			  }
			  else {
			   document.getElementById('mut_geld_span2').innerHTML = "";
			  }
			  	
			}
		}
		
		// Benutzer ist geringfügig Beschäftigte
		if (mode_empl_sel == "gering") {
		 
			//gesetzlich versichert
			if (health_ins_sel == "gesetz") {
			    document.getElementById('mut_geld_span').innerHTML = "Als geringf&uuml;gig Besch&auml;ftigte, die gesetzlich versichert ist, erhalten Sie <b>pro Kalendertag von Ihrer Krankenkasse bis zu 13 &euro; </b>Mutterschaftsgeld, wenn Ihnen w&auml;hrend der Schutzfrist kein Arbeitsentgelt bezahlt wird.";
			    document.getElementById('mut_geld_span2').innerHTML = "";
			}
			
			// familienversichert
		    if (health_ins_sel == "ges_fam") {
		       	document.getElementById('mut_geld_span').innerHTML = "Als geringf&uuml;gig Besch&auml;ftigte, die gesetzlich familienversichert ist, haben Sie einen Anspruch auf <b>&nbsp;bis zu 210&euro; Mutterschaftsgeld</b>, das Ihnen einmalig vom Bundesversicherungsamt ausbezahlt wird.";
			    document.getElementById('mut_geld_span2').innerHTML = "";
			}
			
			// privat versichert
			if (health_ins_sel == "privat") {
			   	document.getElementById('mut_geld_span').innerHTML = "Als geringf&uuml;gig Besch&auml;ftigte, die privat versichert ist, haben Sie einen Anspruch auf <b>maximal 210 &euro; Mutterschaftsgeld</b>, das Ihnen einmalig vom Bundesversicherungsamt ausbezahlt wird.";
			    document.getElementById('mut_geld_span2').innerHTML = "";
			}
		}
		
		// Benutzer ist Selbstständige
		if (mode_empl_sel == "selbststaendige") {
		 
		    //gesetzlich versichert
			if (health_ins_sel == "gesetz") {
			  if (anspr_kr_check) {
			    document.getElementById('mut_geld_span').innerHTML = "Als Selbstst&auml;ndige, die <b>mit</b> Anspruch auf Krankengeld gesetzlich versichert ist, erhalten Sie <b>Mutterschaftsgeld in H&ouml;he des Krankengeldes</b>.";	
			    document.getElementById('mut_geld_span2').innerHTML = "";
			  }
			  else {
			    document.getElementById('mut_geld_span').innerHTML = "Als Selbstst&auml;ndige, die <b>ohne</b> Anspruch auf Krankengeld gesetzlich versichert ist, haben Sie keinen Anspruch auf Mutterschaftsgeld.";	
			    document.getElementById('mut_geld_span2').innerHTML = "";
			  }
			 
			}
		
			// familienversichert
		    if (health_ins_sel == "ges_fam") {
			  document.getElementById('mut_geld_span').innerHTML = "Als Selbstst&auml;ndige, die gesetzlich familienversichert ist, haben Sie keinen Anspruch auf Mutterschaftsgeld.";	
			  document.getElementById('mut_geld_span2').innerHTML = "";
			}
			
			// privat versichert
			if (health_ins_sel == "privat") {
			  document.getElementById('mut_geld_span').innerHTML = "Als Selbstst&auml;ndige, die privat versichert ist, haben Sie keinen Anspruch auf Mutterschaftsgeld. Bitte erkundigen Sie sich bei Ihrer Versicherung, welche Leistungen Sie aufgrund Ihres Versicherungsvertrages erhalten. ";	
			  document.getElementById('mut_geld_span2').innerHTML = "";
			}		    
		
		}
		
		// Benutzer ist Hausfrau
		if (mode_empl_sel == "hausfrau") {
		   document.getElementById('mut_geld_span').innerHTML = "Als Hausfrau haben Sie keinen Anspruch auf Mutterschaftsgeld. ";	
		   document.getElementById('mut_geld_span2').innerHTML = "";
		}	
		
		// Benutzer ist Beamtin
		if (mode_empl_sel == "beamtin") {
		   document.getElementById('mut_geld_span').innerHTML = "Als Beamtin haben Sie keinen Anspruch auf Mutterschaftsgeld, da für Sie besondere beamtenrechtliche Regelungen und nicht das Mutterschutzgesetz gelten.";	
		   document.getElementById('mut_geld_span2').innerHTML = "";
		}	
  
     // Mutterschaftsgeld-Gesamtsumme ausblenden (wird nur in bestimmten Fällen eingeblendet)
     document.getElementById('mut_geld_span3').innerHTML = "";
	 
	 // Ergebnis darstellen
	 show('result');
	 show('mut_geld');
	 if (check_array[0]) { show('mut_frist'); }
	}

// Gesamthöhe des Mutterschaftsgeldes ausgeben; abhängig von der Kombination der Eingaben
 if (check_array[0] && check_array[1]) {
  
  mut_sch_dauer = parseInt((mut_sch_end.getTime() - mut_sch_anf.getTime()) / (1000*60*60*24));
  
   if (mode_empl_sel == "arbeitnehmerin" && health_ins_sel == "gesetz") {     
     mut_ge_ges = String(Math.round(mut_sch_dauer * net_pay_day * 100) / 100).replace(/\./,",");
     // bei Zahlen mit nur einer Nachkommastelle soll noch eine Null zugefügt werden
	 if (mut_ge_ges.charAt(mut_ge_ges.length - 2) == "," ){ mut_ge_ges = mut_ge_ges + "0"; }
     document.getElementById('mut_geld_span3').innerHTML = "<br>Insgesamt bekommen Sie ein <b>Mutterschaftsgeld in H&ouml;he von "+mut_ge_ges+" &euro; f&uuml;r "+mut_sch_dauer+" Tage Mutterschutz.</b>";	
   }
   else if (mode_empl_sel == "arbeitnehmerin" && health_ins_sel == "privat" && ar_ge_ant > 0) {
     mut_ge_ges = String(Math.round((mut_sch_dauer * ar_ge_ant + 210) * 100) / 100).replace(/\./,",");
     // bei Zahlen mit nur einer Nachkommastelle soll noch eine Null zugefügt werden
	 if (mut_ge_ges.charAt(mut_ge_ges.length - 2) == "," ){ mut_ge_ges = mut_ge_ges + "0"; }
     document.getElementById('mut_geld_span3').innerHTML = "<br>Insgesamt bekommen Sie ein <b>Mutterschaftsgeld in H&ouml;he von "+mut_ge_ges+" &euro; f&uuml;r "+mut_sch_dauer+" Tage Mutterschutz.</b>";
   } 
   else if (mode_empl_sel == "gering" && health_ins_sel == "gesetz") {
    mut_ge_ges = String(Math.round((mut_sch_dauer * 13 + 210) * 100) / 100).replace(/\./,",");	
    document.getElementById('mut_geld_span3').innerHTML = "<br>Insgesamt bekommen Sie ein <b>Mutterschaftsgeld in H&ouml;he von bis zu "+mut_ge_ges+" &euro; f&uuml;r "+mut_sch_dauer+" Tage Mutterschutz.</b>";
   }
   else {
     document.getElementById('mut_geld_span3').innerHTML = "";	
   }	
 }
 
}






