function setParam (rok) { switch (rok) {case 0:

//Ponizej znajduja sie bloki parametrow dla poszczegolnych lat
//Aby dodać nowy rok do listy, prosze skopiowac ostatni blok parametrow, zmienic nr roku i odpowiednie parametry.

break; case 2011:
//Skladki ZUS pracownika
proc_emer = n("9.76"); 
proc_ren = n("1.5"); 
ograniczenie_podstawy_składek = n("100770"); 
proc_chor = n("2.45");
//Koszty pracodawcy
proc_emer_pcd = n("9.76"); 
proc_ren_pcd = n("4.5"); 
proc_fp = n("2.45"); 
proc_fgsp = n("0.1");
//NFZ i podatki 
proc_zdr = n("9"); 
proc_zdr_odpodatku = n("7.75"); 
kup_standard = n("111.25"); 
kup_poza_zam = n("139.06");
proc_podatku1 = n("18"); 
proc_podatku2 = n("32"); 
prog_podatkowy = n("85528"); 
kwota_wolna = n("46.34");


break; case 2010:
//Skladki ZUS pracownika
proc_emer = n("9.76"); proc_ren = n("1.5"); ograniczenie_podstawy_składek = n("94380"); proc_chor = n("2.45");
//Koszty pracodawcy
proc_emer_pcd = n("9.76"); proc_ren_pcd = n("4.5"); proc_fp = n("2.45"); proc_fgsp = n("0.1");
//NFZ i podatki 
proc_zdr = n("9"); proc_zdr_odpodatku = n("7.75"); kup_standard = n("111.25"); kup_poza_zam = n("139.06");
proc_podatku1 = n("18"); proc_podatku2 = n("32"); prog_podatkowy = n("85528"); kwota_wolna = n("46.34");


break; case 2009:
//Skladki ZUS pracownika
proc_emer = n("9.76"); proc_ren = n("1.5"); ograniczenie_podstawy_składek = n("95790"); 
proc_chor = n("2.45");
//Koszty pracodawcy
proc_emer_pcd = n("9.76"); proc_ren_pcd = n("4.5"); proc_fp = n("2.45"); proc_fgsp = n("0.1");
//NFZ i podatki 
proc_zdr = n("9"); proc_zdr_odpodatku = n("7.75"); kup_standard = n("111.25"); kup_poza_zam = n("139.06");
proc_podatku1 = n("18"); proc_podatku2 = n("32"); prog_podatkowy = n("85528"); kwota_wolna = n("46.34");



break;
default: is = false;
}}


function element (id) {
	return document.getElementById (id);
}

function setValue (inp, val) {
	inp.value = (isNaN(val) || val==0)? '0': val.toFixed(2).replace('.',',');
}

function wstawDoWiersza (tr) {
	tds = tr.getElementsByTagName('td');
	for (var i=1; i<arguments.length; i++) {
		if (typeof arguments[i] == 'number')
			tds[i-1].innerHTML = (isNaN(arguments[i]) || arguments[i]==0)? '0': arguments[i].toFixed(2).replace('.',',')
	}
}


var suma_brutto = 0;
var proc_wypadk = 0;
var zmienne = 0;
var inp_brutto, inp_netto, color1, norm_color;

function oblicz_p (evt_target) {

	suma_brutto=0;
	var brutto=0;
	var emer=0;
	var emer_pcd=0;
	var ren=0;
	var ren_pcd=0;
	var zdrowotna=0;
	var chor=0;
	var wypadk=0;
	var zaliczka=0;
	var zus_razem=0;
	var netto=0;
	var dochod=0;
	var suma_emer=0;
	var suma_emer_pcd=0;
	var suma_ren=0;
	var suma_ren_pcd=0;
	var suma_zdr=0;
	var suma_chor=0;
	var suma_wypadk=0;
	var suma_zal=0;
	var suma_zus_razem=0;
	var suma_netto=0;
	var suma_dochodu=0;
	var suma_fpfgsp=0;
	var suma_brutto_pcd=0;
	var psk;

	var pp = proc_podatku1;
	var kup_ryczalt = (element('poza').checked)? kup_poza_zam : kup_standard;
	var kup;
	var ulga = (element('kwota_wolna').checked)? kwota_wolna : 0;
	var wspolne_m = element('wspolne_m').checked;
	var doch_m = NaNto0(n(element('doch_m').value));
	if (wspolne_m && !doch_m)
		ulga += kwota_wolna;
	var proc_wypadk = n(element('wypadkowe').value);
	//if (proc_wypadk == 0) proc_wypadk = NaN;
	
	var stale_b = element('stale_b').checked;
	var stale_n = element('stale_n').checked;

	inp_brutto.disabled = inp_netto.disabled = (zmienne > 0);
	
	var dane_jest_brutto = (zmienne == 1 || stale_b && evt_target != inp_netto || evt_target == inp_brutto);
	brutto = n(inp_brutto.value);
	netto = n(inp_netto.value);
	
	$('#sb_t').css('color', (stale_b)? color1 : norm_color);
	$('#sn_t').css('color', (stale_n)? color1 : norm_color);
	$('#zm_t').css('color', (zmienne>0)? color1 : norm_color);
	
		
	$('#wyniki tr').each(function(i){

		if (i>=12) return false;
		var inp = this.getElementsByTagName('input');
		
		var odczyt_z_tabeli = 0;
		if (evt_target != inp_brutto && evt_target != inp_netto) {
			odczyt_z_tabeli = zmienne;
			if (zmienne == 1)
				brutto = n(inp[0].value);
			if (zmienne == 2)
				netto = n(inp[1].value);
		}

		//obliczenie
		if (dane_jest_brutto)
			netto = obl_netto (brutto);
		else {
			if (zmienne == 2)
				brutto = n(inp[0].value);
			brutto = obl_brutto (netto);
		}
		
		//zapis
		if (odczyt_z_tabeli != 1)
			setValue (inp[0], brutto);
		if (odczyt_z_tabeli != 2)
			setValue (inp[1], netto);
		
		if (i==0) 
			//&& (zmienne = 0)
		{
			if (evt_target != inp_netto)
				setValue (inp_netto, netto);
			if (evt_target != inp_brutto)
				setValue (inp_brutto, brutto);
			dane_jest_brutto = (zmienne == 1 || stale_b);
		}

		
		emer_pcd = round4(proc_emer_pcd * psk)/100;
		ren_pcd = round4(proc_ren_pcd * psk)/100;
		wypadk = round4(proc_wypadk * brutto)/100;
		fp = round4(proc_fp * brutto)/100;
		fgsp = round4(proc_fgsp * brutto)/100;
		brutto_pcd = brutto + emer_pcd +ren_pcd + fp+fgsp + NaNto0(wypadk);
		
		
		wstawDoWiersza (this,'','', emer, ren, chor, zus_razem, zdrowotna, zaliczka, '', 
			emer_pcd, ren_pcd, wypadk, fp+fgsp, brutto_pcd);  

		//inp[0].disabled = !zmienne_bn;
		//inp[1].disabled = !zmienne_nb;
		
		suma_brutto += NaNto0 (brutto);
		suma_emer += NaNto0 (emer);
		suma_emer_pcd += NaNto0 (emer_pcd);
		suma_ren += NaNto0 (ren);
		suma_ren_pcd += NaNto0 (ren_pcd);
		suma_chor += NaNto0 (chor);
		suma_wypadk += NaNto0 (wypadk);
		suma_zus_razem += NaNto0 (zus_razem);
		suma_dochodu += NaNto0 (dochod_xx);
		suma_zdr += NaNto0 (zdrowotna);
		suma_zal += NaNto0 (zaliczka);
		suma_netto += NaNto0 (netto);
		suma_fpfgsp += NaNto0 (fp+fgsp);
		suma_brutto_pcd += NaNto0 (brutto_pcd);
		
		if (round4(suma_dochodu) > prog_podatkowy && !(wspolne_m && doch_m<=prog_podatkowy))
			pp = proc_podatku2;

		});
	
	
	wstawDoWiersza (element('sumy'),'', suma_brutto, suma_emer, suma_ren, suma_chor, suma_zus_razem, suma_zdr, suma_zal, 
		suma_netto, suma_emer_pcd, suma_ren_pcd, suma_wypadk, suma_fpfgsp, suma_brutto_pcd );  











	function obl_netto (b) {

		if (!(suma_brutto + b > ograniczenie_podstawy_składek))
			psk = b;
		else if (suma_brutto > ograniczenie_podstawy_składek)
			psk = 0;
		else
			psk = ograniczenie_podstawy_składek - suma_brutto;
		
		emer = round4(proc_emer * psk)/100;
		ren = round4(proc_ren * psk)/100;
		chor = round4(proc_chor * b)/100;
		zus_razem = emer+ren+chor;

		podstawa = b - zus_razem;
		kup = kup_ryczalt;
		dochod_xx = podstawa - kup;
		if (dochod_xx < 0) dochod_xx = 0;
		dochod = round4(dochod_xx);

		podatek = round4(dochod * pp)/100 - ulga;
		if (podatek < 0) podatek = 0;
		zdrowotna = round4(podstawa * proc_zdr)/100;
		if (zdrowotna > podatek) zdrowotna = podatek; 

		zaliczka = podatek - round4(podstawa * proc_zdr_odpodatku)/100;
		if (zaliczka < 0) zaliczka = 0;
		zaliczka = round4(zaliczka);

		return podstawa - (zdrowotna + zaliczka);
			
	}

	




	function obl_brutto (n) {
		
		if (Math.abs(obl_netto(brutto) - n) < 0.004)
			return brutto;
		if (isNaN(n)) {
			obl_netto(NaN)
			return NaN;
		}
		var a = ulga + kup*pp/100;
		
 		//obliczenie przychodu
		var P = (n - a) *100 / (100 - pp - proc_zdr + proc_zdr_odpodatku); //dla zakresu 3
		if (P*(pp - proc_zdr) < a*100) { //ponizej zakresu 3
			P = (n - a) *100/ (100 - pp); //dla zakresu 1
			if (P*(pp - proc_zdr_odpodatku) >= a*100) //zakres 1 przekroczony
				P = (n - 2*a) *100/ (100 + proc_zdr_odpodatku -2*pp); //dla zakresu 2
			else //1 lub 0
				if (P < n) //zakres 0
					P = n;
		}
		
		var b = P *100/ (100 - proc_emer - proc_ren - proc_chor);
		if (suma_brutto + b > ograniczenie_podstawy_składek)
			if (suma_brutto > ograniczenie_podstawy_składek) 
				b = P *100/ (100 - proc_chor);
			else
				b = (P + (ograniczenie_podstawy_składek - suma_brutto) *(proc_emer + proc_ren)/100) *100/ (100 - proc_chor);
		
		var dif = 5;
		var k = 0;
		var q = 0;
		var min = 1000;
		var n_bk;
		b = Math.round(100*b)/100;

		while (k > -1.5) 
		{
			n_bk = obl_netto (b + k);
			dif = Math.abs (n_bk -n);
			if (dif < min + 0.005) 
				if ( dif < min - 0.005
					|| dif < 0.005 && k < 0 
					//|| n_bk -n > 0.005 && q < 0 && k > 0 
					) {
					min = dif;
					q = k;
				}
			if (k >= 0)
				k = -k-0.01;
			else
				k = (min > 0.005)? -k: k-0.01;
		}
		
		obl_netto (b + q);
		return b + q;
	}


		
}







function NaNto0 (x) {
	return (isNaN(x))? 0: x;
}

//funkcja do pobierania danych numerycznych
function n (val) {
	if (arguments.length == 1) {
		if (typeof val == 'number')
			return val;
		else {
			var s = val.replace(',','.');
			if (isFinite(s)) {
				//var r = parseFloat(s);
				var r = Number(s);
				return (r<0)? NaN: r; 
			} else
				err='Niepoprawny format liczby: \''+val+'\'';
		}
	}
	else{
		err='Niepoprawne zastosowanie przecinka: '+val+',';
		err+='\nZastosuj kropke.';
		err += '\nPoprawne formaty: 1.2  \'1.2\'  \'1,2\'  "1.2"  "1,2"';
	}
	if (typeof alerts != 'undefined') if (alerts)
		alert(err);
	return NaN;
}

function round4(x){
	return Math.round(x+0.00001)
}



function przelicz_p() {
	rok = n(element('rok').value);
	setParam(rok);
	oblicz_p(element('rok'));
}



function inp_onkey (inp, i) {
	element('zmienne').checked = true;
	zmienne = i;
	oblicz_p(inp);
}

function inp_onclick (inp, i) {
	if (inp.value=='0')
		inp.value='';
	inp_onkey (inp, i);
}

function keyfilter (evt, lim) {
        var c = (evt.which) ? evt.which : evt.keyCode;
		if (c==8 || c==9) 
			return true;
		if (c==45) 
			return false;
		if (c>47 && c<58)
			return (Number(evt.target.value.replace(',','.')) < lim);
		return true;
}

function zdarzenia_p() {

	$('#parametry_p input').click(function(){
		if (this.name == 'wynagrodzenie')
			zmienne = Number( this.id == 'zmienne' );
		if (this.value=='0')
			this.value='';
		oblicz_p(this)
	});

	$('#brutto, #netto, #doch_m, #wyniki input').keypress(function(evt){
		return keyfilter (evt, 100000)
    });
	
	$('#wypadkowe').keypress(function(evt){
		return keyfilter (evt, 10)
    });

}

