function LibJS_ParseCislo(LibJS_Vstup)
{
    LibJS_Cislo='';
    LibJS_Vstup=LibJS_Vstup.toString();
    for(LibJS_Index=0; LibJS_Index<LibJS_Vstup.length; LibJS_Index++) {
        LibJS_Znak=LibJS_Vstup.charAt(LibJS_Index);
        if (LibJS_Znak==' ')
            LibJS_Znak='';  // mezery ignorovat
        else if (LibJS_Znak==',')  // desetinny carky zmenit na tecky
            LibJS_Znak='.';
        LibJS_Cislo+=LibJS_Znak;
    }
//      if (!isNaN(LibJS_Cislo))
    LibJS_Cislo=LibJS_Cislo*1;
    return LibJS_Cislo;
}
function LibJS_CisloVystup(LibJS_Cislo)
{
    LibJS_Cislo=LibJS_Cislo.toString();
    LibJS_Pozice=LibJS_Cislo.indexOf('.');
    LibJS_Cislo=LibJS_Cislo.replace('.',',');
    if (LibJS_Pozice==-1)  // desetinna tecka nenalezena
        LibJS_Pozice=LibJS_Cislo.length;
    LibJS_Vystup=LibJS_Cislo.substring(LibJS_Pozice, LibJS_Cislo.length);
    while(LibJS_Pozice>=4) {
        LibJS_Pozice-=3;
        LibJS_Vystup=' '+LibJS_Cislo.substring(LibJS_Pozice, LibJS_Pozice+3)+LibJS_Vystup;
    }
    LibJS_Vystup=LibJS_Cislo.substring(0, LibJS_Pozice)+LibJS_Vystup;
    return LibJS_Vystup;
}








function getQueryVariable(variable) { 
  var query = window.location.search.substring(1); 
  var vars = query.split("&"); 
  for (var i=0;i<vars.length;i++) { 
    var pair = vars[i].split("="); 
    if (pair[0] == variable) { 
      return pair[1]; 
    } 
  } 
  return 0;
} 


  function Init()
{
   var mzda = getQueryVariable('mzda');
  if (mzda)
  {
    with (document.getElementById('vypocetmzdy0')) {
      fmzda0.value=LibJS_CisloVystup(mzda);
    }
    VypocetMzdy0();
  }
}

	function Zdan0(castka) {
		tdan=(castka*0.15);
		return tdan;
	} 

  function VypocetMzdy0() {
  	document.getElementById('dodatek0').style.display='none';
  	document.getElementById('dodatekrow2').style.display='none';
    /*	Konstanty  */
  	
  	//vsechny hodnoty jsou rocni
  	//sleva na poplatnika:
  	poplatnik0=24840;
  	//slevy na invalidy:
  	//(zdravy,castecna invalidita,plna invalidita,ztp/p)
  	invalida0=Array(0,2520,5040);
  	//ZTP/P(ne,ano)
  	ztp0=Array(0,16140);
  	//sleva na manzela/manzelku s rocnim prijmem nizsim nez 68000
  	manzelka0=24840;
  	//sleva na manzela/manzelku drzitele prukazu ZTP/P s rocnim prijmem nizsim nez 68000
  	manzelkaztp0=manzelka0*2;
  	//sleva na studenta / pripravu na budouci povolani
  	student0=4020;
  	//sleva na vyzivovane dite zijici v domacnosti s poplatnikem
  	dite0=967;
  	//sleva na vyzivovane dite s prukazem ZTP/P zijici v domacnosti s poplatnikem
  	diteztp0=dite0*2;
  	
    
    //sleva za kazdy bezprispevkovy odber krve v uplynulem roce - bere se jako dar na vedu a vyzkum
  	//zapocitava se do omezeni max 10% prijmu na dary
  	odberkrve0=2000;
  	//minimalni vyse daru pokud neni splnena podminka ze vyse daru je vyssi nez 0.02 z hrube mzdy
  	mindar0=1000;
  	//minimalni procentualni vyse daru 
  	minprocdar0=0.02;
  	//maximalni procentualni vyse daru
  	maxprocdar0=0.1;
  	//minimalni vyse prispevku na penzijni pripojisteni aby mohlo dojit k odpoctu
  	minpenze0=6000;
  	//maximalni vyse odpoctu na penzijni pripojisteni
  	maxpenze0=18000;
  	//maximalni vyse odpoctu na zivotni pojisteni
  	maxpojistne0=12000;
  	//clenske prispevky, max 1,5 procenta zdanitelnych prijmu, max 3000 Kc rocne
  	maxodbory0=Array(0.015,3000);
  	//zkousky
  	maxzkousky0=Array(10000,13000,15000);
  
  	//koeficienty pro vypocet zdravotniho a socialniho pojisteni
  	zdravotni0=0.045;
  	socialni0=0.065;
  	zdravotnifirma0=0.09;
  	socialnifirma0=0.25;
  	//minimalni zaklad dane
  	minzaklad0=0;
  	//o jakou cast z ceny sluzebniho vozu pouzivaneho pro sluzebni ucely se zvysuje danovy zaklad
  	autoprocento0=0.01; 
  	
  	sleva0=mzda0=rocnisleva0=rocnimzda0=0;
  	
  	with (document.getElementById('vypocetmzdy0')) {
			mzda0=LibJS_ParseCislo(fmzda0.value);

			//pocitame s dovolenou
			

			auto10=0;//LibJS_ParseCislo(fauto0.value)*autoprocento0;

			rocnimzda0=mzda0*12;
			      
      /*
				Mesicni slevy
			*/
			//vypocet slevy na dani
						
			//sleva na studenta
			slevadane0=fstudent0.checked ? student0/12 : 0;
			odpocetzdrav0=fstudent0.checked ? 0 : 0;
			//sleva na invaliditu
			slevadane0+=invalida0[finvalida0.options[finvalida0.selectedIndex].value]/12;
			//sleva na ztp/p
			slevadane0+=ztp0[fztp0.options[fztp0.selectedIndex].value]/12;
			//sleva na poplatnika
			//tmp0=38040-(LibJS_ParseCislo(fduchod0.value)*12);
			//tmp0>0 ? slevadane0+=poplatnik0/12 : slevadane0+=0;
			slevadane0+=poplatnik0/12;
			      
      /*
				Rocni odpocty
			*/
			//odpocet zaplacenych uroku z uveru ze stavebniho sporeni nebo z hypotecniho uveru
			//LibJS_ParseCislo(furoky0.value)>300000 ? rocniodpocty0=300000 : rocniodpocty0=LibJS_ParseCislo(furoky0.value);
			//odpocet za penzijni pripojisteni
			penzijko0=0;//LibJS_ParseCislo(fpenzijko0.value)-minpenze0;
			if (penzijko0<0) {
				penzijko0=0;
			} else {
				if (penzijko0>(maxpenze0-minpenze0)) penzijko0=maxpenze0-minpenze0;			
			}		
			rocniodpocty0=0;//
			rocniodpocty0+=penzijko0;
			//odpocet na zivotni pojistne
			pojistne0=0;//LibJS_ParseCislo(fpojistne0.value);
			if (pojistne0>maxpojistne0) pojistne0=maxpojistne0;
			rocniodpocty0+=pojistne0;
			//odpocet na studium
			zkousky0=0;//LibJS_ParseCislo(fzkousky0.value);
			zkouskysel0=0;//LibJS_ParseCislo(fzkouskysel0.value);
			if (zkousky0>maxzkousky0[zkouskysel0]) zkousky0=maxzkousky0[zkouskysel0];
			rocniodpocty0+=zkousky0;
      //odpocet ostatnich odecitatelnych polozek
			rocniodpocty0+=0;//LibJS_ParseCislo(fostatni0.value);
			//sleva na manzelku 
			rocnisleva0=0;//fmanzelka0.checked ? manzelka0 : 0;
			//sleva na manzelku ztp
			rocnisleva0+=0;//fmanzelkaztp0.checked ? manzelkaztp0 : 0;
		}
    
    //vypocet platby zdravotniho pojisteni
		zdravpoj0=Math.ceil(zdravotni0*(mzda0+auto10));
		zdravpojfirma0=Math.ceil(zdravotnifirma0*(mzda0+auto10));
		//if (zdravpoj0 > 76818) zdravpoj0 = 76818;
		//if (zdravpojfirma0 > 153635) zdravpojfirma0 = 153635;
    if (mzda0<8000) { zdravpoj0=Math.ceil((0.135*8000)-zdravpojfirma0); alert("Zaměstnanec nedosáhl měsíčního příjmu v minimální výši 8000 Kč, proto je povinen doplatit rozdíl pojistného v plné výši 13,5% (1080 Kč). Ustanovení se nevztahuje na zákonné výjimky (§3 odst. 8 Zákona č. 592/1992 Sb., o pojistném na všeobecné zdravotní pojištění).\n Zaměstnavateli se sazba odvodu (9% z hrubé mzdy) nemění."); }
		
    //vypocet platby socialniho pojisteni
		socpoj0=Math.ceil(socialni0*(mzda0+auto10));
		socpojfirma0=Math.ceil(socialnifirma0*(mzda0+auto10));
		//if (socpoj0 > 110959) socpoj0 = 110959;
    //if (socpojfirma0 > 426762) socpojfirma0 = 426762;
		
    //vypocet mzdovych nakladu
		mzdovenaklady0=mzda0+zdravpojfirma0+socpojfirma0;
		
    //vypocet zakladu dane
		//mesicni
		prezaklad0=mzdovenaklady0 + auto10;
		if (prezaklad0<100) {
			zakladdane0=Math.ceil(prezaklad0);
		} else {
			zakladdane0=Math.ceil(prezaklad0/100)*100;
		}
		if (zakladdane0<minzaklad0) zakladdane0=minzaklad0;
    
    //vypocet mesicni zalohy dane
		dan0=Zdan0(zakladdane0);
		if (slevadane0>dan0) slevadane10=dan0; else slevadane10=slevadane0;
    
    with (document.getElementById('vypocetmzdy0')) {
		  //odpocet na dary na vedu, vyzkum apod.
			dary0=0;//LibJS_ParseCislo(fdary0.value)+odberkrve0*LibJS_ParseCislo(fodberykrve0.value);
			if ((dary0<(minprocdar0*prezaklad0*12))&&(dary0<mindar0)) dary0=0;
			if (dary0>(maxprocdar0*prezaklad0*12)) dary0=prezaklad0*12*maxprocdar0;
			rocniodpocty0+=dary0; 
      //odpocet prispevku na odbory
			odbory0=0;//LibJS_ParseCislo(fodbory0.value);
			//klontrola procent na prijem
      if (odbory0>(maxodbory0[0]*prezaklad0*12)) odbory0 = maxodbory0[0]*prezaklad0*12;
      if (odbory0>maxodbory0[1]) odbory0=maxodbory0[1];
			rocniodpocty0+=odbory0;  
  		//sleva na deti
			if (mzda0>=4000) { 
        slevadanedeti0=fdeti0.options[fdeti0.selectedIndex].value*dite0;
			  //odpocet na deti ztp
			  slevadanedeti0+=fdetiztp0.options[fdetiztp0.selectedIndex].value*diteztp0;
      } else slevadanedeti0=0;
			detirocne=slevadanedeti0*12;
			//if (slevadanedeti0>4350) slevadanedeti0=4350;
			if (detirocne>52200) detirocne=52200;
    }
		dan0=dan0-slevadane10-slevadanedeti0;
    
    mesbonus0=0;
		if (dan0<0 && dan0>=-50) mesdan0=0;
		   else mesdan0=dan0;
		if (dan0<-50) { mesbonus0=0-dan0; mesdan0=0; }     
    if (mesbonus0>4350) mesbonus0=4350;    
    // vypocet rocni dane
		//rocni
		//budeme pocitat rocni HMP - omezeni stropu pro soc a zdrav
		HMP=0; prekroceno1=0; prekroceno=false; sumahmp=0;
    if (mzda0 > 142254)
    {
      for (i=1; i<13; i++)
  		{
        //temphmp = (mzda0+auto10+zdravpojfirma0-socpojfirma0);
        temphmp = mzda0+auto10;
        if (prekroceno)
        {
          HMP += temphmp;
        } else {
          if ((sumahmp+temphmp) > 1707048)
          {
            prekroceno = true;
            mesicprekroceno = i;
            //mzda a dan pro mesic prekroceno
                //zaklad pro soc a zdrav
                prekrocenomzda1 = 1707048- sumahmp;
                prekrocenodan1 = Zdan0(prekrocenomzda1)-slevadane10-slevadanedeti0;
                //vypocet platby zdravotniho pojisteni
            		prekrocenazdravpoj1=Math.ceil(zdravotni0*(prekrocenomzda1));
            		prekrocenazdravpojfirma1=Math.ceil(zdravotnifirma0*prekrocenomzda1);
            		if (prekrocenazdravpoj1 > 76818) prekrocenazdravpoj1 = 76818;
            		if (prekrocenazdravpojfirma1 > 153635) prekrocenazdravpojfirma1 = 153635;
                
                //vypocet platby socialniho pojisteni
            		prekrocenasocpoj1=Math.ceil(socialni0*prekrocenomzda1);
            		prekrocenasocpojfirma1=Math.ceil(socialnifirma0*prekrocenomzda1);
            		if (prekrocenasocpoj1 > 110959) 	prekrocenasocpoj1 = 110959;
                if (prekrocenasocpojfirma1 > 426762) 	prekrocenasocpojfirma1 = 426762;
            		
                //vypocet mzdovych nakladu
            		mn0=temphmp+prekrocenazdravpojfirma1+prekrocenasocpojfirma1;
            		               
                //vypocet mesicni zalohy dane
            		prekrocenomzda1 = temphmp - prekrocenazdravpoj1 - prekrocenasocpoj1-auto10;
                prekrocenodan1=Zdan0(mn0)-slevadane10-slevadanedeti0;
                       
            //mzda a dan pro nasledujici mesice
            prekrocenomzda2 = temphmp;
            prekrocenodan2 = Zdan0(prekrocenomzda2)-slevadane10-slevadanedeti0;
            prekrocenomzda2 = prekrocenomzda2 -auto10;
            HMP += mn0;  
          } else {
            sumahmp += temphmp;
            HMP += temphmp + zdravpojfirma0 + socpojfirma0;
          }
        }
      }
    } else {
      HMP = (mzda0+auto10+zdravpojfirma0+socpojfirma0)*12;
    }
    
    rocnizakladdane0=Math.floor((HMP-rocniodpocty0)/100)*100;
    //rocnizakladdane0=HMP-rocniodpocty0;
		if (rocnizakladdane0<(minzaklad0*12)) rocnizakladdane0=12*minzaklad0;
		rocnidan0=Zdan0(rocnizakladdane0);
		rokdan0=rocnidan0-slevadane10*12-rocnisleva0;
		
		rocnibonus0=0;
    
    if ((rokdan0)<=0) { rokdan0=0; rocnibonus0=detirocne; }
		if ((rokdan0)>0) { 
			rokdan0_pom=rokdan0-detirocne;
			if (rokdan0_pom<0) {
				rokdan0=0;
				rocnibonus0=Math.abs(rokdan0_pom);
			} else rokdan0=rokdan0_pom;
		}
				
		//vypocet rocniho preplatku dane
		//rocnipreplatek0=(mesdan0*12+slevadane10*12+slevadanedeti0*12)-rocnidan0-rocnisleva0;
		
		rocnipreplatek0=(mesdan0*12)-rokdan0+rocnibonus0;
		//if (rocnipreplatek<0) rocnipreplatek=0;
        
  	/*
  		vystup
  	*/
  	with (document.getElementById('vypocetmzdy0')) {
  		//
  		//mesicni vyuctovani
      fzdravotni0.value=LibJS_CisloVystup(zdravpoj0);
  		fzdravotnizam0.value=LibJS_CisloVystup(zdravpojfirma0);
  		fsocialni0.value=LibJS_CisloVystup(socpoj0);
  		fsocialnizam0.value=LibJS_CisloVystup(socpojfirma0);
  		fzakladdane0.value=LibJS_CisloVystup(zakladdane0);
  		fslevadane0.value=LibJS_CisloVystup(slevadane10);
  		fslevadanedeti0.value=LibJS_CisloVystup(slevadanedeti0);
  		fzalohadane0.value=LibJS_CisloVystup(mesdan0);
  		fdanbonus0.value=LibJS_CisloVystup(mesbonus0);
  		fcistamzda0.value=LibJS_CisloVystup(mzda0-zdravpoj0-socpoj0-mesdan0);
  		fcista0.value=LibJS_CisloVystup(mzda0-zdravpoj0-socpoj0-mesdan0+mesbonus0);
  		fmzdovenaklady0.value=LibJS_CisloVystup(mzdovenaklady0);
  		//
  		//prekroceni
      if (prekroceno)
      {
        document.getElementById('dodatek0').style.display='';
        document.getElementById('dodatek01').innerHTML='V '+mesicprekroceno+'. měsíci jste překročili max. strop pro odvod sociálního a zdravotního pojištění a vaše čistá mzda činí (<a href="http://www.finance.cz/dane-a-mzda/informace/vypocty/prekroceni-maximalniho-vymerovaciho-zakladu/">příklad</a>): ';
        fdodatek11.value=LibJS_CisloVystup(prekrocenomzda1-prekrocenodan1+mesbonus0);
        if (mesicprekroceno < 12)
        {
          document.getElementById('dodatekrow2').style.display='';
          document.getElementById('dodatek02').innerHTML='Od '+(mesicprekroceno+1)+'. měsíce již neodvádíte sociální a zdravotní pojištění a vaše čistá mzda bude činit (<a href="http://www.finance.cz/dane-a-mzda/informace/vypocty/prekroceni-maximalniho-vymerovaciho-zakladu/">příklad</a>): ';  
          fdodatek21.value=LibJS_CisloVystup(prekrocenomzda2-prekrocenodan2+mesbonus0);
        }
      }
      //
  		//rocni vyuctovani			
  		fmzda20.value=LibJS_CisloVystup(mzda0*12);
  		frocniodpocty0.value=LibJS_CisloVystup(rocniodpocty0);
  		fslevadane20.value=LibJS_CisloVystup(rocnisleva0+(slevadane10*12));
  		fslevadanedeti20.value=LibJS_CisloVystup(slevadanedeti0*12);
  		//dopocitame zaplacene zalohy dane pokud sme prekrocili strop
  		if (prekroceno)
  		{
        zaloharokdan0 = (mesicprekroceno-1)*mesdan0 + prekrocenodan1 + (12 - mesicprekroceno)*prekrocenodan2;
      } else {
        zaloharokdan0=mesdan0*12;
      }
      fzalohadane20.value=LibJS_CisloVystup(zaloharokdan0);
  		//dopocitame stropy pro socialni a zdravotni
      if ((zdravpoj0*12) > 76818) rocnizdravpoj0 = 76818; else rocnizdravpoj0 = zdravpoj0*12;
  		if ((zdravpojfirma0*12) > 153635) rocnizdravpojfirma0 = 153635; else rocnizdravpojfirma0 = zdravpojfirma0*12;
      if ((socpoj0*12) > 110959) rocnisocpoj0 = 110959; else rocnisocpoj0 = socpoj0*12;
  		if ((socpojfirma0*12) > 426762) rocnisocpojfirma0 = 426762; else rocnisocpojfirma0 = socpojfirma0*12;
      fzdravotni20.value=LibJS_CisloVystup(rocnizdravpoj0);
  		fzdravotni30.value=LibJS_CisloVystup(rocnizdravpojfirma0);
  		fsocialni20.value=LibJS_CisloVystup(rocnisocpoj0);
  		fsocialni30.value=LibJS_CisloVystup(rocnisocpojfirma0);
  		fzakladdane20.value=LibJS_CisloVystup(rocnizakladdane0);
  		frocnidan0.value=LibJS_CisloVystup(rokdan0);
  		frocnibonus0.value=LibJS_CisloVystup(rocnibonus0);
  		fpreplatek0.value=LibJS_CisloVystup(rocnipreplatek0);	
  	}  
  }
	
	function ShowVersion0(ver) {
		if (ver) {
			document.getElementById('podrobne0').style.display='none';
			document.getElementById('podrobne20').style.display='none';
		} else {
			document.getElementById('podrobne0').style.display='';
			document.getElementById('podrobne20').style.display='';
		}
	}

