/**
* JavaScript Document *.js
* 
* Internet Agentur
* Torsten Weiler
* Heerenhusstr. 11b
* 26465 Langeoog
* 
* phone: +49 (0)4972 990933
* fax: +49 (0)4972 990934
* mail: mail-at-torsten-weiler.de
* Internet: http://www.torsten-weiler.de
*
*© 2007 Internet Agentur Torsten Weiler, Langeoog
*/
//var d = document.personalkosten;
var f = null;
var d = document;
var f = d.getElementById("PK");
var Tage = 365;
var Sa = 52;
var So = 52;
var ArbtTa = Tage-Sa-So;
var AStdnProTag = 8;
function Komma2Punkt(wert) {
  wert = wert.replace(/,/,'.');
  return wert;
}
function mkHumanReadable(val, string){
	return dez(dezRound(val,2),0,2) + string;
}
function getFrac(num) {
 num = "" + num; 
 return parseFloat("0." + num.substring(num.length-((num.indexOf(".")>=0) ? num.length-num.indexOf(".")-1 : 0),num.length)); 
}

function stringInt(num,base,size) {
 var i;
 var q;
 var sign;
 var result = "";
 var baseTable = "0123456789ABCDEF"; 
 num = parseInt(num); 
 sign = (num<0) ? "-" : ""; 
 base = parseInt(base); 
 size = (size) ? size : 0; 
 if(!base || base<=1 || base>baseTable.length) {
  base = 10; 
 } 
 while(true) {
  q = num/base; 
  result = baseTable.charAt(parseInt(getFrac(q)*base)) + result;
  num = parseInt(q); 
  if(num==0) {
   break; 
  } 
 } 
 q = ""; 
 size-=result.length; 
 for(i=0;i<size;i++) {
  q += "0"; 
 } 
 return sign + q + result; 
}

function dezRound(num,pos) {
	if (pos < 0) {
		pos = Math.pow(10, Math.abs(pos));
		return Math.round(num / pos) * pos;
	} else if (pos > 0) {
		pos = Math.pow(10, pos);
		return Math.round(num * pos) / pos;
	} else {
		return Math.round(num);
	}
}

function dezInt(num,size,prefix) { 
  prefix = (prefix) ? prefix : "0"; 
  var minus = (num<0) ? "-" : "", result=(prefix=="0") ? minus : ""; 
  num=Math.abs(parseInt(num,10)); 
  size-=(""+num).length; 
  for(var i=1;i<=size;i++) { 
    result += "" + prefix; 
  } result += ((prefix!="0")? minus : "") + num; 
  return result; 
}

function dezFrac(num,size,postfix) { 
  postfix=(postfix)?postfix:"0"; 
  var i, result=getFrac(Math.abs(num)); 
  result=(result)?""+result:""; 
  if(result) { 
    result=result.substring(2,result.length); 
  } 
  size-=result.length; 
  for(i=1;i<=size;i++) { 
    result+=postfix; 
  } return result; 
}

function dez(num,presize,postsize,prefix,postfix,fracSign) { 
  fracSign=(fracSign)?fracSign:"."; 
  var result=dezInt(num,presize,prefix)+fracSign+dezFrac(num,postsize,postfix); 
  result=(result.substring(result.length-1,result.length)==fracSign)?result.substring(0,result.length-1):result; 
  return result; 
}

function rnd(max) { 
  if(Math.random) { 
    return Math.ceil(Math.max(1,max)*Math.random()); 
  } else { 
    return max;
  } 
}

function proCalc(num, pro) {
	var ergebnis=num*pro/100;
	return ergebnis;
}

function rechnen() {
var strWaehrung = '&nbsp;&euro;';
var strProzent = '&nbsp;%';
var strStd = '&nbsp;Std.';
var d = document;
var f = d.getElementById("PK");
var bttoStdL = parseFloat(Komma2Punkt(f.bttoStdL.value));
var bttoStdLPr = parseFloat(Komma2Punkt(f.bttoStdLPr.value));
// AG-Anteil Sozialversicherung inkl. BG
var SozVPr = parseFloat(Komma2Punkt(f.SozVPr.value));
var SozV = parseFloat(proCalc(bttoStdL,SozVPr));
// Bezahlte Feiertage
var bezFeiPr = Komma2Punkt(f.bezFeiPr.value);
var bezFei = parseFloat(proCalc(bttoStdL,bezFeiPr));
// Bezahlte Urlaubstage
var bezUrlPr = Komma2Punkt(f.bezUrlPr.value);
var bezUrl = parseFloat(proCalc(bttoStdL,bezUrlPr));
// Lohnfotzahlung im Krankheitsfall
var LfzKrhtPr = Komma2Punkt(f.LfzKrhtPr.value);
var LfzKrht = parseFloat(proCalc(bttoStdL,LfzKrhtPr));
// Vermögensbildung
var VermBildPr = Komma2Punkt(f.VermBildPr.value);
var VermBild = parseFloat(proCalc(bttoStdL, VermBildPr));
// Betriebliche Altersversorgung
var BetrAVPr = Komma2Punkt(f.BetrAVPr.value);
var BetrAV = parseFloat(proCalc(bttoStdL, BetrAVPr));
// Sonderzahlungen (z.B. Gehalt, Gratifikationen)
var SonderZlgPr = Komma2Punkt(f.SonderZlgPr.value);
var SonderZlg = parseFloat(proCalc(bttoStdL, SonderZlgPr));
// Sonstige Personalzusatzkosten (z.B. Abfindungen, Ausbildung)
var PersZusKostPr = Komma2Punkt(f.PersZusKostPr.value);
var PersZusKost = parseFloat(proCalc(bttoStdL, PersZusKostPr));
// Summe Personalnebenkosten
var SumPersNebKostPr = SozVPr + parseFloat(bezFeiPr) + parseFloat(bezUrlPr) + parseFloat(LfzKrhtPr) + parseFloat(VermBildPr) + parseFloat(BetrAVPr) + parseFloat(SonderZlgPr) + parseFloat(PersZusKostPr);
var SumPersNebKost = SozV + bezFei + bezUrl + LfzKrht + VermBild + BetrAV + SonderZlg + PersZusKost;
// Personalkosten gesamt pro Stunde
var SumPersKostPr = SumPersNebKostPr + bttoStdLPr;
var SumPersKost = SumPersNebKost + bttoStdL;
var SumPersKostStd = SumPersKost * 8 * 20;
var Feiertage = parseFloat(Komma2Punkt(f.Feiertage.value));
var Urlaubstage = parseFloat(Komma2Punkt(f.Urlaubstage.value));
var Krankentage = parseFloat(Komma2Punkt(f.Krankentage.value));
var Ausfalltage = Feiertage + Urlaubstage + Krankentage;

//var berechnung7 = proCalc(bttoStdL * verwaltungskostenpro);

var FeierStd = Feiertage * AStdnProTag;
var UrlaubsStd = Urlaubstage * AStdnProTag;
var KrankenStd = Krankentage * AStdnProTag;
var AusfallStd = Ausfalltage * AStdnProTag;


var bezAusfallZeit = AusfallStd * SumPersKost;

//var summepersonalkostenstd = summelohnnebenkosten + berechnung7 + bruttostundenlohn;


var jahresarbeitsleistungtage = ArbtTa - Ausfalltage;
var jahresarbeitsleistungstunden = jahresarbeitsleistungtage * AStdnProTag;

var jahresarbeitsleistung = jahresarbeitsleistungstunden * SumPersKost;

//var gesamtsumme =  jahresarbeitsleistung + bezahlteausfallzeiten;
d.getElementById('SozV').innerHTML = mkHumanReadable(SozV, strWaehrung);
d.getElementById('bezFei').innerHTML = mkHumanReadable(bezFei, strWaehrung);  
d.getElementById('bezUrl').innerHTML = mkHumanReadable(bezUrl, strWaehrung);
d.getElementById('LfzKrht').innerHTML = mkHumanReadable(LfzKrht, strWaehrung);
d.getElementById('VermBild').innerHTML =  mkHumanReadable(VermBild, strWaehrung);
d.getElementById('SonderZlg').innerHTML = mkHumanReadable(SonderZlg, strWaehrung);
d.getElementById('BetrAV').innerHTML = mkHumanReadable(BetrAV, strWaehrung);
d.getElementById('SumPersNebKostPr').innerHTML = mkHumanReadable(SumPersNebKostPr, strProzent);
d.getElementById('SumPersNebKost').innerHTML = mkHumanReadable(SumPersNebKost, strWaehrung);
d.getElementById('SumPersKostPr').innerHTML = mkHumanReadable(SumPersKostPr, strProzent);
d.getElementById('SumPersKost').innerHTML = mkHumanReadable(SumPersKost, strWaehrung);
d.getElementById('PersZusKost').innerHTML = mkHumanReadable(PersZusKost, strWaehrung);
d.getElementById('SumPersKostStd').innerHTML = mkHumanReadable(SumPersKostStd, strWaehrung);
d.getElementById('Ausfalltage').innerHTML = Ausfalltage;
d.getElementById('AusfallStd').innerHTML = AusfallStd;
d.getElementById('bezAusfallZeit').innerHTML = mkHumanReadable(bezAusfallZeit, strWaehrung);
//d.getElementById('nebenkosten1').innerHTML = mkHumanReadable((summelohnnebenkosten + berechnung7), strWaehrung);
//d.getElementById('gesamt1').innerHTML = mkHumanReadable(summepersonalkostenstd, strWaehrung);




d.getElementById('FeierStd').innerHTML = FeierStd + strStd;
d.getElementById('UrlaubsStd').innerHTML = UrlaubsStd + strStd;
d.getElementById('KrankenStd').innerHTML = KrankenStd + strStd;
d.getElementById('AusfallStd').innerHTML = AusfallStd + strStd;
//d.getElementById('ausfallzeitengesamttage').innerHTML = ausfallzeitengesamttage;
//d.getElementById('ausfallzeitengesamtstunden').innerHTML = ausfallzeitengesamtstunden + strStd;
//d.getElementById('payadditional').innerHTML = dez(dezRound(payadditional,2),0,2);

/** zusammenfassung **/
//d.getElementById('jahresarbeitsleistungtage').innerHTML = jahresarbeitsleistungtage;
//d.getElementById('jahresarbeitsleistungstunden').innerHTML = jahresarbeitsleistungstunden;
//d.getElementById('jahresarbeitsleistung').innerHTML = mkHumanReadable(jahresarbeitsleistung, strWaehrung);
//d.getElementById('bezahlteausfallzeitentage').innerHTML =  ausfallzeitengesamttage
//d.getElementById('bezahlteausfallzeitenstunden').innerHTML =  ausfallzeitengesamtstunden;
//d.getElementById('bezahlteausfallzeiten').innerHTML = mkHumanReadable(bezahlteausfallzeiten, strWaehrung); 
//d.getElementById('gesamtsumme').innerHTML = mkHumanReadable(gesamtsumme, strWaehrung);



//d.getElementById('mitarbeiterstunde').innerHTML = mkHumanReadable(summepersonalkostenstd, strWaehrung);
//d.getElementById('zusaetzlichausfallzeiten').innerHTML = dez(dezRound((gesamtsumme / 1600),2),0,2) + strWaehrung;

//d.getElementById('stundenlohnvon').innerHTML = mkHumanReadable(bruttostundenlohn, strWaehrung);
//d.getElementById('unternehmerbelastungvon').innerHTML = mkHumanReadable((gesamtsumme / 1600), strWaehrung);



}
//d.onload = rechnen();

