// JavaScript Document

// number formatting function
// copyright Stephen Chapman 24th March 2006, 22nd August 2008
// permission to use this function is granted provided
// that this copyright notice is retained intact

function formatNumber(num,dec,thou,pnt,curr1,curr2,n1,n2) {
var x = Math.round(num * Math.pow(10,dec));
if (x >= 0) n1=n2='';
var y = (''+Math.abs(x)).split('');
var z = y.length - dec; 
if (z<0) z--; 
for(var i = z; i < 0; i++) y.unshift('0'); 
if (z<0) z = 1; y.splice(z, 0, pnt); 
if(y[0] == pnt) y.unshift('0'); 
while (z > 3) {z-=3; y.splice(z,0,thou);}
var r = curr1+n1+y.join('')+n2+curr2;
return r;
}
  
  
  var dp = new Array(250,350,450,550,650);
  var limita = new Array(1000,3000);
  var f = 2000;
  
  salMin = 600;
  
  var cas = 0.105;
  var cass = 0.055;
  var cfs = 0.005;
  var impozit = 0.16;
  
  //contributii angajator
  
  var a_cas = 0.208;
  var a_cass = 0.052;
  var a_cfs = 0.005;
  var a_ccmi = 0.0085;
  var a_cfambp = 0.004;
  var a_citm = 0.0075;
  var a_cfgpcs = 0.0025;
  
  var alfa = cas + cass + cfs;
  var beta = 1 - alfa - impozit + impozit * alfa;
  
  var limitaSalNet = new Array();
  for (i=0;i<=4;i++) {
    limitaSalNet[i] = beta * limita[0] + impozit * dp[i];
  }
  limitaSalNet[5] = limita[1] * beta;
  
    function calculeaza() {
        s      = document.calc.tipSal.value;
        nr_pers = document.calc.selPers.value;
        nrPers = parseInt(nr_pers);
        if (nrPers>=4) {
          nrPers = 4;
        }
        val_sal = document.calc.valSal.value;
        if (!isNaN(val_sal)) {
        val = parseFloat(val_sal);
        if ((s!="alege") && (val_sal!="") && (nr_pers!="alege")) {
          switch (s) {
            case "sn":
              //salNet = val;
              switch (true) {
                case (val<=salMin):
                  alert("Valoarea Salariului Net trebuie sa fie mai mare decat " + salMin +" lei!");
                  break; 
                case ((val>limitaSalNet[0]) && (val<=limitaSalNet[1]) && (nrPers == 0)) || ((val>limitaSalNet[1]) && (val<=limitaSalNet[2]) && (nrPers <= 1)) || ((val>limitaSalNet[2]) && (val<=limitaSalNet[3]) && (nrPers <= 2)) || ((val>limitaSalNet[3]) && (val<=limitaSalNet[4]) && (nrPers <= 3)) || ((val>limitaSalNet[4]) && (val<=limitaSalNet[5])):
                  //sb este mai mare de 1.000
                  salBrut = (val - impozit*dp[nrPers] - impozit*dp[nrPers]*limita[0]/f)/(beta - impozit*dp[nrPers]/f);
                  break;
                case (val>2129.4):
                  //sb este mai mare de 3000 ==> deducerea este zero
                  salBrut = val/beta;
                  break;
                default:
                  salBrut = (val - impozit*dp[nrPers])/beta;
              }
              CAS = cas*salBrut; 
              CASS = cass*salBrut; 
              CFS = cfs*salBrut; 
              if (salBrut <= 1000) {
                DP = dp[nrPers];
                }
                else {
                  if (salBrut<3000) {
                    DP = dp[nrPers]*[1-(salBrut-limita[0])/f];
                  }
                  else {
                    DP = 0;
                  }
                }
              VBC = salBrut -(CAS+CASS+CFS+DP); 
              IV = impozit*VBC;
              TCS = CAS + CASS + CFS + IV;
              SN = salBrut - TCS;
              
              A_cas = a_cas * salBrut;
              A_cass = a_cass * salBrut;
              A_cfs = a_cfs * salBrut;
              A_ccmi = a_ccmi * salBrut;
              A_cfambp = a_cfambp * salBrut;
              A_citm = a_citm * salBrut;
              A_cfgpcs = a_cfgpcs * salBrut;
              TCA = A_cas + A_cass + A_cfs + A_ccmi + A_cfambp + A_citm + A_cfgpcs;
              TC = TCA + TCS;
              SC = SN + TC;
              
              document.getElementById("cas").innerHTML = formatNumber(CAS,2,".",",","","","","")+ " lei";
              document.getElementById("cass").innerHTML = formatNumber(CASS,2,".",",","","","","")+ " lei";
              document.getElementById("cfs").innerHTML = formatNumber(CFS,2,".",",","","","","")+ " lei";
              document.getElementById("dp").innerHTML = formatNumber(DP,2,".",",","","","","")+ " lei";
              document.getElementById("vbc").innerHTML = formatNumber(VBC,2,".",",","","","","")+ " lei";
              document.getElementById("iv").innerHTML = formatNumber(IV,2,".",",","","","","")+ " lei";
              document.getElementById("tcs").innerHTML = formatNumber(TCS,2,".",",","","","","")+ " lei";
              document.getElementById("sal_net").innerHTML = formatNumber(val,2,".",",","","","","")+ " lei";
              document.getElementById("sal_brut").innerHTML = formatNumber(salBrut,2,".",",","","","","")+ " lei";
              
              /* 
              document.getElementById("cas").innerHTML = CAS.toFixed(2).toString()+ " lei";
              document.getElementById("cass").innerHTML = CASS.toFixed(2).toString()+ " lei";
              document.getElementById("cfs").innerHTML = CFS.toFixed(2).toString()+ " lei";
              document.getElementById("dp").innerHTML = DP.toFixed(2).toString()+ " lei";
              document.getElementById("vbc").innerHTML = VBC.toFixed(2).toString()+ " lei";
              document.getElementById("iv").innerHTML = IV.toFixed(2).toString()+ " lei";
              document.getElementById("tcs").innerHTML = TCS.toFixed(2).toString()+ " lei";
              document.getElementById("sal_net").innerHTML = val.toFixed(2).toString()+ " lei";
              document.getElementById("sal_brut").innerHTML = salBrut.toFixed(2).toString()+ " lei";
              */
              
              //angajator
              document.getElementById("a_cas").innerHTML = formatNumber(A_cas,2,".",",","","","","")+ " lei";
              document.getElementById("a_cass").innerHTML = formatNumber(A_cass,2,".",",","","","","")+ " lei";
              document.getElementById("a_cfs").innerHTML = formatNumber(A_cfs,2,".",",","","","","")+ " lei";
              document.getElementById("a_ccmi").innerHTML = formatNumber(A_ccmi,2,".",",","","","","")+ " lei";
              document.getElementById("a_cfambp").innerHTML = formatNumber(A_cfambp,2,".",",","","","","")+ " lei";
              document.getElementById("a_citm").innerHTML = formatNumber(A_citm,2,".",",","","","","")+ " lei";
              document.getElementById("a_cfgpcs").innerHTML = formatNumber(A_cfgpcs,2,".",",","","","","")+ " lei";
              document.getElementById("a_tca").innerHTML = formatNumber(TCA,2,".",",","","","","")+ " lei";
              document.getElementById("a_tc").innerHTML = formatNumber(TC,2,".",",","","","","")+ " lei";
              document.getElementById("a_sc").innerHTML = formatNumber(SC,2,".",",","","","","")+ " lei";
              
              /*
              document.getElementById("a_cas").innerHTML = A_cas.toFixed(2).toString()+ " lei";
              document.getElementById("a_cass").innerHTML = A_cass.toFixed(2).toString()+ " lei";
              document.getElementById("a_cfs").innerHTML = A_cfs.toFixed(2).toString()+ " lei";
              document.getElementById("a_ccmi").innerHTML = A_ccmi.toFixed(2).toString()+ " lei";
              document.getElementById("a_cfambp").innerHTML = A_cfambp.toFixed(2).toString()+ " lei";
              document.getElementById("a_citm").innerHTML = A_citm.toFixed(2).toString()+ " lei";
              document.getElementById("a_cfgpcs").innerHTML = A_cfgpcs.toFixed(2).toString()+ " lei";
              document.getElementById("a_tca").innerHTML = TCA.toFixed(2).toString()+ " lei";
              document.getElementById("a_tc").innerHTML = TC.toFixed(2).toString()+ " lei";
              document.getElementById("a_sc").innerHTML = SC.toFixed(2).toString()+ " lei";
              */
              break;
            case "sb":
              salBrut = val;
              switch (true) {
                case (val<=salMin):
                  alert("Valoarea Salariului Brut trebuie sa fie mai mare decat " + salMin +" lei!");
                  break; 
                case (val<=limita[0]):
                  salNet = beta*val + impozit*dp[nrPers];
                  break;
                case ((val>limita[0]) && (val<=limita[1])):
                  salNet = beta*val + impozit*dp[nrPers]*[1 - (val - limita[0])/2000];
                  break;
                default:
                  salNet = beta*val;
              }
              CAS = cas*val; 
              CASS = cass*val; 
              CFS = cfs*val; 
              if (val<= 1000) {
                DP = dp[nrPers];
                }
                else {
                  if (val<3000) {
                    DP = dp[nrPers]*[1-(val-limita[0])/f];
                  }
                  else {
                    DP = 0;
                  }
                }
                
              VBC = val -(CAS+CASS+CFS+DP); 
              IV = impozit*VBC;
              TCS = CAS + CASS + CFS + IV;
              SN = val - TCS;
              
              A_cas = a_cas * val;
              A_cass = a_cass * val;
              A_cfs = a_cfs * val;
              A_ccmi = a_ccmi * val;
              A_cfambp = a_cfambp * val;
              A_citm = a_citm * val;
              A_cfgpcs = a_cfgpcs * val;
              TCA = A_cas + A_cass + A_cfs + A_ccmi + A_cfambp + A_citm + A_cfgpcs;
              TC = TCA + TCS;
              SC = SN + TC;
              
              document.getElementById("cas").innerHTML = formatNumber(CAS,2,".",",","","","","")+ " lei";
              document.getElementById("cass").innerHTML = formatNumber(CASS,2,".",",","","","","")+ " lei";
              document.getElementById("cfs").innerHTML = formatNumber(CFS,2,".",",","","","","")+ " lei";
              document.getElementById("dp").innerHTML = formatNumber(DP,2,".",",","","","","")+ " lei";
              document.getElementById("vbc").innerHTML = formatNumber(VBC,2,".",",","","","","")+ " lei";
              document.getElementById("iv").innerHTML = formatNumber(IV,2,".",",","","","","")+ " lei";
              document.getElementById("tcs").innerHTML = formatNumber(TCS,2,".",",","","","","")+ " lei";
              document.getElementById("sal_net").innerHTML = formatNumber(salNet,2,".",",","","","","")+ " lei";
              document.getElementById("sal_brut").innerHTML = formatNumber(val,2,".",",","","","","")+ " lei";
              
              /* 
              document.getElementById("cas").innerHTML = CAS.toFixed(2).toString()+ " lei";
              document.getElementById("cass").innerHTML = CASS.toFixed(2).toString()+ " lei";
              document.getElementById("cfs").innerHTML = CFS.toFixed(2).toString()+ " lei";
              document.getElementById("dp").innerHTML = DP.toFixed(2).toString()+ " lei";
              document.getElementById("vbc").innerHTML = VBC.toFixed(2).toString()+ " lei";
              document.getElementById("iv").innerHTML = IV.toFixed(2).toString()+ " lei";
              document.getElementById("tcs").innerHTML = TCS.toFixed(2).toString()+ " lei";
              document.getElementById("sal_net").innerHTML = salNet.toFixed(2).toString()+ " lei";
              document.getElementById("sal_brut").innerHTML = val.toFixed(2).toString()+ " lei";
              */
              //angajator
              
              document.getElementById("a_cas").innerHTML = formatNumber(A_cas,2,".",",","","","","")+ " lei";
              document.getElementById("a_cass").innerHTML = formatNumber(A_cass,2,".",",","","","","")+ " lei";
              document.getElementById("a_cfs").innerHTML = formatNumber(A_cfs,2,".",",","","","","")+ " lei";
              document.getElementById("a_ccmi").innerHTML = formatNumber(A_ccmi,2,".",",","","","","")+ " lei";
              document.getElementById("a_cfambp").innerHTML = formatNumber(A_cfambp,2,".",",","","","","")+ " lei";
              document.getElementById("a_citm").innerHTML = formatNumber(A_citm,2,".",",","","","","")+ " lei";
              document.getElementById("a_cfgpcs").innerHTML = formatNumber(A_cfgpcs,2,".",",","","","","")+ " lei";
              document.getElementById("a_tca").innerHTML = formatNumber(TCA,2,".",",","","","","")+ " lei";
              document.getElementById("a_tc").innerHTML = formatNumber(TC,2,".",",","","","","")+ " lei";
              document.getElementById("a_sc").innerHTML = formatNumber(SC,2,".",",","","","","")+ " lei";
              
              /*
              document.getElementById("a_cas").innerHTML = A_cas.toFixed(2).toString()+ " lei";
              document.getElementById("a_cass").innerHTML = A_cass.toFixed(2).toString()+ " lei";
              document.getElementById("a_cfs").innerHTML = A_cfs.toFixed(2).toString()+ " lei";
              document.getElementById("a_ccmi").innerHTML = A_ccmi.toFixed(2).toString()+ " lei";
              document.getElementById("a_cfambp").innerHTML = A_cfambp.toFixed(2).toString()+ " lei";
              document.getElementById("a_citm").innerHTML = A_citm.toFixed(2).toString()+ " lei";
              document.getElementById("a_cfgpcs").innerHTML = A_cfgpcs.toFixed(2).toString()+ " lei";
              document.getElementById("a_tca").innerHTML = TCA.toFixed(2).toString()+ " lei";
              document.getElementById("a_tc").innerHTML = TC.toFixed(2).toString()+ " lei";
              document.getElementById("a_sc").innerHTML = SC.toFixed(2).toString()+ " lei";
              */
              
              break;
          } 
        }
        else {
          mesaj = "";
          if (s=="alege") {
            mesaj = "Nu ati ales tipul de salariu pentru care se face calculul.";
          }
          
          if (val_sal=="") {
            mesaj = mesaj + "\r\n\r\nNu ati completat valoarea valoarea salariului.";
          }
          
          if (nr_pers=="alege") {
            mesaj = mesaj + "\r\n\r\nNu ati ales nr. de persoane pe care le aveti in intretinere.";
          }
          if (mesaj!="") {
            alert(mesaj);
          }
        }
       }
       else {
        alert("EROARE!!! Valoarea introdusa pentru salariu nu este un numar! " 
        + "Folositi punctul ca separator pentru zecimale.");
       } 
      }
   
   function Show(id) {
    elem = document.getElementById(id);
    elem.style.display = "block";      
   }
   
   function Hide(id) {
    elem = document.getElementById(id);
    elem.style.display = "none";      
   }
      
   function ShowHide(id) {
    elem = document.getElementById(id);
    if (elem.style.display == "none") {
      elem.style.display = "block";      
    }
    else {
      elem.style.display = "none";
      //reseteaza valorile din tabel
      x = cas*100;
      document.getElementById("cas").innerHTML = x.toString() + "% x SB";
      x = cass*100;
      document.getElementById("cass").innerHTML = x.toString() + "% x SB";
      x = cfs*100;
      document.getElementById("cfs").innerHTML = x.toString() + "% x SB";
      document.getElementById("dp").innerHTML = "";
      document.getElementById("vbc").innerHTML = "";
      x = impozit*100;
      document.getElementById("iv").innerHTML = x.toString() + "% x VBC";
      document.getElementById("tcs").innerHTML = "";
      document.getElementById("sal_net").innerHTML = "";
      document.getElementById("sal_brut").innerHTML = "";
      
      x = a_cas*100;
      document.getElementById("a_cas").innerHTML = x.toString() + "% x SB";
      x = a_cass*100;
      document.getElementById("a_cass").innerHTML = x.toString() + "% x SB";
      x = a_cfs*100;
      document.getElementById("a_cfs").innerHTML = x.toString() + "% x SB";
      x = a_ccmi*100;
      document.getElementById("a_ccmi").innerHTML = x.toFixed(2).toString() + "% x SB";
      x = a_cfambp*100;
      document.getElementById("a_cfambp").innerHTML = x.toString() + "% x SB";
      x = a_citm*100;
      document.getElementById("a_citm").innerHTML = x.toString() + "% x SB";
      x = a_cfgpcs*100;
      document.getElementById("a_cfgpcs").innerHTML = x.toString() + "% x SB";
      document.getElementById("a_tca").innerHTML = "";
      document.getElementById("a_tc").innerHTML = "";
      document.getElementById("a_sc").innerHTML = "";
      
      document.getElementById("tip").selectedIndex = 0;
      document.getElementById("valoare").value = "";
      document.getElementById("sel").selectedIndex = 0;      
    }
   }
