function ClearForm(form){
form.einkommen.value = "0";
form.AnzUPfl.value = "0";
form.AnzUPfl1.value = "0";
form.AnzUPfl2.value = "0";
form.AnzUPfl3.value = "0";
form.Gl1Ford.value = "0";
form.Gl2Ford.value = "0";
form.Gl3Ford.value = "0";
form.Gl1Pf.value = "0";
form.Gl2Pf.value = "0";
form.Gl3Pf.value = "0";
form.verbleib.value = "";


}

function MakeArray(n) { 
   this.length = n; 
   for (var i = 1; i <= n; i++) { 
     this[i] = 0 } 
     return this 
} 

function CheckNum(str)
{

  var checkOK = " 	0123456789-,.";
  var checkStr = str;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    if (ch == ",")
    {
      allNum += ".";
      decPoints++;
    }
    else if (ch != "." && ch != " " && ch != "	")
      allNum += ch;
  }
  if (!allValid)
    return (false);

  if (decPoints > 1)
    return (false);


	return (true);
}

function GetNum(str)
{

  var checkOK = " 	0123456789-,.";
  var checkStr = str;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    if (ch == ",")
    {
      allNum += ".";
      decPoints++;
    }
    else if (ch != "." && ch != " " && ch != "	")
      allNum += ch;
  }
  if (!allValid)
    return (false);

  if (decPoints > 1)
    return (false);

  var chkVal = allNum;
  return (parseFloat(allNum));
}

function CheckEingaben(form) {

if (form.einkommen.value.length==0 || !CheckNum(form.einkommen.value) || GetNum(form.einkommen.value)<=0){
	alert("\nBitte Einkommen eingeben"); 
	form.einkommen.focus();
	return (false);
}	
if (form.AnzUPfl.value.length!=0)
	if (!CheckNum(form.AnzUPfl.value) || GetNum(form.AnzUPfl.value)!=Math.round(GetNum(form.AnzUPfl.value)) || GetNum(form.AnzUPfl.value) < 0 || GetNum(form.AnzUPfl.value) > 5) {
		alert("\nEs k nnen nur 0 - 5 Unterhaltspflichten ber cksichtigt werden!"); 
		form.AnzUPfl.focus();
		return (false);
	}
	else ;	
else form.AnzUPfl.value = 0;

if (form.AnzUPfl1.value.length!=0)
	if (!CheckNum(form.AnzUPfl1.value) || GetNum(form.AnzUPfl1.value)!=Math.round(GetNum(form.AnzUPfl1.value)) || GetNum(form.AnzUPfl1.value) < 0 || GetNum(form.AnzUPfl1.value) > GetNum(form.AnzUPfl.value)) {
		alert("\n berpr fe Sie bitte Ihre Eingaben.\nEs liegen Unstimmigkeiten vor!"); 
		form.AnzUPfl1.focus();
		return (false);
	}
	else ;	
else form.AnzUPfl1.value = 0;

	
if (form.AnzUPfl2.value.length!=0)
	if (!CheckNum(form.AnzUPfl2.value) || GetNum(form.AnzUPfl2.value)!=Math.round(GetNum(form.AnzUPfl2.value)) || GetNum(form.AnzUPfl2.value) < 0 || GetNum(form.AnzUPfl2.value) > GetNum(form.AnzUPfl.value)) {
		alert("\n berpr fe Sie bitte Ihre Eingaben.\nEs liegen Unstimmigkeiten vor!"); 
		form.AnzUPfl2.focus();
		return (false);
	}	
	else ;
else form.AnzUPfl2.value = 0;
	
if (form.AnzUPfl3.value.length!=0)
	if (!CheckNum(form.AnzUPfl3.value) || GetNum(form.AnzUPfl3.value)!=Math.round(GetNum(form.AnzUPfl3.value)) || GetNum(form.AnzUPfl3.value) < 0 || GetNum(form.AnzUPfl3.value) > GetNum(form.AnzUPfl.value)) {
		alert("\n berpr fe Sie bitte Ihre Eingaben.\nEs liegen Unstimmigkeiten vor!"); 
		form.AnzUPfl3.focus();
		return (false);
	}	
	else ;
else form.AnzUPfl3.value = 0;

if (form.Gl1.checked)
	if (form.AnzUPfl1.value < 1) {
		alert("\nGeben Sie bitte an, f r wieviel Unterhaltspflichten Exekution gef hrt wird."); 
		form.AnzUPfl1.focus();
		return (false);
	}	
	else ;
else form.AnzUPfl1.value = 0;

if (form.Gl2.checked)
	if (form.AnzUPfl2.value < 1) {
		alert("\nGeben Sie bitte an, f r wieviel Unterhaltspflichten Exekution gef hrt wird."); 
		form.AnzUPfl2.focus();
		return (false);
	}	
	else ;
else form.AnzUPfl2.value = 0;

if (form.Gl3.checked)
	if (form.AnzUPfl3.value < 1) {
		alert("\nGeben Sie bitte an, f r wieviel Unterhaltspflichten Exekution gef hrt wird."); 
		form.AnzUPfl3.focus();
		return (false);
	}	
	else ;
else form.AnzUPfl3.value = 0;

if (form.Gl3lfd.value.length != 0)
	if (!CheckNum(form.Gl3lfd.value) || GetNum(form.Gl3lfd.value) < 0) {
		alert("\nNur g ltige Zahlen eingeben!"); 
		form.Gl3lfd.focus();
		return (false);
	}	
	else ;
else form.Gl3lfd.value = 0;

if (form.Gl1Ford.value.length != 0)
	if (!CheckNum(form.Gl1Ford.value) || GetNum(form.Gl1Ford.value) < 0) {
		alert("\nNur g ltige Zahlen eingeben!"); 
		form.Gl1Ford.focus();
		return (false);
	}	
	else ;
else form.Gl1Ford.value = 0;

if (form.Gl2Ford.value.length != 0)
	if (!CheckNum(form.Gl2Ford.value) || GetNum(form.Gl2Ford.value) < 0) {
		alert("\nNur g ltige Zahlen eingeben!"); 
		form.Gl2Ford.focus();
		return (false);
	}	
	else ;
else form.Gl2Ford.value = 0;

if (form.Gl3Ford.value.length != 0)
	if (!CheckNum(form.Gl3Ford.value) || GetNum(form.Gl3Ford.value) < 0) {
		alert("\nNur g ltige Zahlen eingeben!"); 
		form.Gl3Ford.focus();
		return (false);
	}	
	else ;
else form.Gl3Ford.value = 0;

return(true);
}

function convert(num) {
	var neustr = "";
	var str = String(Math.round(num *100) / 100); //95
	if ((k=str.indexOf("."))>-1) 
		if (k>3) 
			neustr = str.substr(0,k-3) + "." + str.substr(k-3,3) + "," + str.substr(k+1,((str.length-k)>=3) ? 2 : 1)
		else
			neustr = str.substr(0,k) + "," + str.substr(k+1,((str.length-k)>=3) ? 2 : 1)
	else
		if ((k=str.length)>3)		
			neustr = str.substr(0,k-3) + "." + str.substr(k-3,k-1)
		else
			neustr = str;

	return (neustr)
}

function DoIt(form) {
var Grundbetrag = 814;
var Obergrenze = 3240;
var Steigerung = 30;
var UGrund = 162;
var USteig = 10;
var GrundAMS = 950;

var Eink = 0;
var Eink1 = 0;
var Upfl = 0;
var Verbl = 0;
var gespf = 0;

var Grund = 0;

var Exmin = 0;
var Uexmin = 0;
var Topf = 0;
var UTopf = 0;

var lfd = 0;
var fak = 0;
var i = 0;
var flag = false;

if (!CheckEingaben(form)) 
	return false;

Eink = GetNum(form.einkommen.value);
Upfl = GetNum(form.AnzUPfl.value);
UpflAli = Upfl;

Gl = new MakeArray(6);
Gllfd = new MakeArray(6); 
Glford = new MakeArray(6); 
Glpf = new MakeArray(6); 
GlUpfl = new MakeArray(6);

Gl[1] = form.Gl1.checked;
Gl[2] = form.Gl2.checked;
Gl[3] = form.Gl3.checked;
Gllfd[1] = GetNum(form.Gl1lfd.value);
Gllfd[2] = GetNum(form.Gl2lfd.value);
Gllfd[3] = GetNum(form.Gl3lfd.value);
Glford[1] = GetNum(form.Gl1Ford.value);
Glford[2] = GetNum(form.Gl2Ford.value);
Glford[3] = GetNum(form.Gl3Ford.value);
GlUpfl[1] = GetNum(form.AnzUPfl1.value);
GlUpfl[2] = GetNum(form.AnzUPfl2.value);
GlUpfl[3] = GetNum(form.AnzUPfl3.value);


flag = false;
for (i=1; i <=3; i++)
	if (!Gl[i] && Gllfd[i] > 0) {
		flag = true;
		Gllfd[i] = 0;
	}

if (flag)
	alert("\nLaufende Unterhaltspflichten k nnen nur bei Unterhaltsgl ubiger ber cksichtigt werden!");

flag = false;
for (i=1; i <=3; i++)
	if (Gl[i])
//		if ((Upfl - GlUpfl[i]) < UpflAli) 
			UpflAli = UpflAli - GlUpfl[i];

if (UpflAli < 0) {
	alert("\n berpr fe Sie bitte Ihre Eingaben.\nEs liegen Unstimmigkeiten vor!"); 
	return false;
	}

if (form.Anz14o12.checked) Grund=Grundbetrag;
else Grund = GrundAMS;

Eink1 = Eink;
if (Eink > Obergrenze) Eink = Obergrenze;
Eink -= Eink % 20;

Exmin = Grund + UGrund * UpflAli;
if (Exmin < Eink) Exmin = Exmin + (Eink-Exmin)*(Steigerung + USteig * UpflAli)/100;
Uexmin = (Exmin*3)/4;

Exmin = Grund + UGrund * Upfl;
if (Exmin < Eink) Exmin = Exmin + (Eink-Exmin)*(Steigerung + USteig * Upfl)/100;
Eink = Eink1;


Topf = Eink - Exmin;
if (Eink < Exmin) UTopf = Eink - Uexmin;
else UTopf = Exmin - Uexmin;

lfd = 0;
for (i = 1; i <= 3; i++) {
	lfd = lfd + Gllfd[i];
	lfd = (lfd*2)/2
}

if (UTopf > 0 && lfd > 0) {
	fak = UTopf / lfd;
	if (fak > 1) fak = 1;
 	for (i = 1; i <= 3; i++) {
		UTopf = UTopf - Gllfd[i]*fak;
		Glpf[i] = Gllfd[i]*fak;
	}
}

for (i = 1; i <= 3; i++) {
	if (Gl[i])
		if (Glford[i] > 0)
			if (Glford[i] > UTopf) {
				Glpf[i] = Glpf[i] + UTopf;
				Glford[i] = Glford[i] - UTopf;
				UTopf = 0;
			} else {
				Glpf[i] = Glpf[i] + Glford[i];
				UTopf = UTopf - Glford[i];
				Glford[i] = 0;
			}
}

for (i = 1; i <= 3; i++) {
	if (Gl[i] && Glpf[i]<Gllfd[i])
		if (Topf > 0)
			if (Gllfd[i]-Glpf[i]>Topf) {
				Glpf[i] = Glpf[i] + Topf;
				Topf = 0;
			} else {
				Topf = Topf - (Gllfd[i]-Glpf[i]);
				Glpf[i] = Glpf[i] + (Gllfd[i]-Glpf[i]);
			}
	if (Glford[i] > 0)
		if (Topf > 0)
			if (Glford[i] > Topf) {
				Glpf[i] = Glpf[i] + Topf;
				Topf = 0;
			} else {
				Glpf[i] = Glpf[i] + Glford[i];
				Topf = Topf - Glford[i];
			}
}								

form.Gl1Pf.value = convert(Math.round(Glpf[1]*10)/10);
form.Gl2Pf.value = convert(Math.round(Glpf[2]*10)/10);
form.Gl3Pf.value = convert(Math.round(Glpf[3]*10)/10);

gespf = 0;
for (var i = 1; i <= 3; i++) {
	gespf += Math.round(Glpf[i]*10)/10;
}
form.gesamtpf.value = convert(gespf);
form.verbleib.value = convert(Eink - gespf);
return true;
}


