q = new Array; lx = new Array; ly = new Array; dx = new Array; dy = new Array; Dx = new Array; Dy = new Array; Nx = new Array; Ny = new Array; Dxx = new Array; Nxx = new Array; Dxy = new Array; Nxy = new Array; Cx = new Array; Mx = new Array; /* platné od 1.1.2008 */ //muzi q[0] = new Array(0,003261,0,000247,0,000111,0,000251,0,000156,0,000138,0,000055,0,000074,0,000103,0,000147,0,000216,0,000207,0,000157,0,000173,0,000209,0,000238,0,000399,0,000548,0,000740,0,000850,0,000887,0,000807,0,000793,0,000801,0,000850,0,000897,0,000909,0,000912,0,000903,0,000904,0,000847,0,000936,0,001027,0,001050,0,001114,0,001202,0,001216,0,001407,0,001652,0,001786,0,002022,0,002262,0,002471,0,002586,0,002859,0,003056,0,003447,0,004038,0,004836,0,005428,0,006122,0,006611,0,007075,0,007940,0,008971,0,009897,0,011072,0,012176,0,012992,0,014400,0,015701,0,016943,0,019156,0,020722,0,022221,0,024047,0,025587,0,026759,0,028583,0,030810,0,033768,0,036564,0,039828,0,043009,0,046467,0,051385,0,056511,0,062380,0,068546,0,074888,0,082864,0,091966,0,101879,0,112488,0,124424,0,137647,0,152269,0,168406,0,186176,0,205694,0,227070,0,250409,0,275798,0,303306,0,332977,0,364816,0,398789,0,434806,0,472714,0,512292,0,553237,0,595165,0,637609,1,000000); //zeny q[1] = new Array(0,002369,0,000260,0,000196,0,000102,0,000055,0,000063,0,000083,0,000077,0,000089,0,000083,0,000067,0,000079,0,000084,0,000098,0,000162,0,000198,0,000239,0,000228,0,000206,0,000223,0,000239,0,000240,0,000244,0,000272,0,000273,0,000297,0,000295,0,000282,0,000296,0,000314,0,000345,0,000386,0,000450,0,000466,0,000469,0,000446,0,000525,0,000597,0,000719,0,000864,0,000995,0,001070,0,001199,0,001234,0,001286,0,001439,0,001578,0,001784,0,002183,0,002564,0,002916,0,003106,0,003196,0,003388,0,003698,0,004164,0,004715,0,005226,0,005948,0,006522,0,006935,0,007339,0,007842,0,008632,0,009684,0,010697,0,011666,0,012591,0,013469,0,014658,0,015862,0,018152,0,021164,0,024702,0,027784,0,031214,0,033880,0,037717,0,043967,0,051050,0,058295,0,066261,0,074848,0,085113,0,097452,0,110796,0,126811,0,144589,0,164642,0,187238,0,212600,0,240935,0,272423,0,307200,0,345337,0,386816,0,431504,0,479121,0,529220,0,581162,0,634109,0,687033,0,738750,1,000000); var hlaska = new Array("Měsíční","Čtvrtletní","Půlroční","Roční"); var hlaska2 = new Array("měsíčně","čtvrtletně","půlročně","ročně"); var freqv = new Array(12,4,2,1); function Interest(cf, inter){ interest = 0; for (ind = 1; ind <= 12; ind++){ interest = interest + cf[ind] * (13 - ind) / 12 * inter; } return interest; } function zaokrouhlit(n) { if ( isNaN (n)) return '---' else return Math.round (n) } function fPrispevekStatu(u) /* upravene 19-1-2005 */ { if (u<100) return 0; if (u<200) return Math.floor (50 + 0.40 * (u-100)); if (u<300) return Math.floor (90 + 0.30 * (u-200)); if (u<400) return Math.floor (120 + 0.20 * (u-300)); if (u<500) return Math.floor (140 + 0.10 * (u-400)); return 150; } /* pridane 5-11-04 */ /* konstanty */ var SET_MIN_VEK = 18; var SET_MIN_DOBA = 5; var SET_ODCHOD_VEK = 60; var SET_OPRAVNENIE_VEK = 50; var SET_MIN_CIASTKA = 100; var SET_MAX_GARANT_DOBA = 15; /* percentove stropy */ var prvaSplatka = {"maxValuePercent":30,"maxValueSum":false,"maxValueObject":"celkem","hasActualValue":0} var prispevekZam = {"maxValuePercent":false,"maxValueSum":false,"maxValueObject":"hruba","hasActualValue":false} var vstupniVek = {"maxValuePercent":false,"maxValueSum":false,"maxValueObject":false,"hasActualValue":false} var ageX = {"maxValuePercent":false,"maxValueSum":false,"maxValueObject":false,"hasActualValue":false} var sexX = {"maxValuePercent":false,"maxValueSum":false,"maxValueObject":false,"hasActualValue":false} var hruba = {"maxValuePercent":false,"maxValueSum":false,"maxValueObject":false,"hasActualValue":false} var splatkaUcastnika = {"maxValuePercent":false,"maxValueSum":false,"maxValueObject":false,"hasActualValue":false} var utrataKarta = {"maxValuePercent":false,"maxValueSum":false,"maxValueObject":false,"hasActualValue":false} /* doplnene 14-04-2008 */ var profit = {"maxValuePercent":false,"maxValueSum":false,"maxValueObject":false,"hasActualValue":false} var ageY = {"maxValuePercent":false,"maxValueSum":false,"maxValueObject":false,"hasActualValue":false} var sexY = {"maxValuePercent":false,"maxValueSum":false,"maxValueObject":false,"hasActualValue":false} var PCpozust = {"maxValuePercent":false,"maxValueSum":false,"maxValueObject":false,"hasActualValue":false} var GP = {"maxValuePercent":false,"maxValueSum":false,"maxValueObject":false,"hasActualValue":false} var m = {"maxValuePercent":false,"maxValueSum":false,"maxValueObject":false,"hasActualValue":false} var PERCENTA = {"vstupniVek":vstupniVek,"ageX":ageX,"sexX":sexX,"hruba":hruba,"splatkaUcastnika":splatkaUcastnika,"utrataKarta":utrataKarta,"prvaSplatka":prvaSplatka,"prispevekZam":prispevekZam,"profit":profit,"ageY":ageY,"sexY":sexY,"PCpozust":PCpozust,"GP":GP,"m":m} var PERCENTA_ALLOWED_FIELDS = "prvaSplatka,prispevekZam,"; var SET_PERCENT_INIT = PERCENTA['prvaSplatka']['maxValuePercent'] + "%"; var TEST; /* globalne premenne */ var GLOB_CELKEM; /* zaloha celkovej sumy */ var GLOB_MAX_PERCENT; /* max suma z percent - pre checking = !!! DEPRECATED !!! */ var TEMPS = new Array(); var TEMP; /* chybove hlasky !update 07/2005 - prerobene do ERROR objektu! */ var ERROR = { "userValues" : "Prosím vyhodnoťte vyplněním vstupních údajů hodnoty v první tabulce.\nPokud souhlasíte s předvolenými údaji, potvrďte tlačítko \"Přepočti\".", "hruba" : "Zadejte prosim průměrnou mzdu.", "NOT_NUM" : "Musíte zadat číselnou hodnotu.\nTIP: Na vyjádření číslic můžete použít mezery, čárky a tečky.", "vstupniVek1" : "Informace: Vstupní věk musí být vyšší než 18 let.", "minDobaPojist" : "Informace: Doba pojištění musí být nejméně 5 let.", "vstupniVek2" : "Informace: Vstupní věk musí být vyšší rovno 18 let.", "duchod" : "Informace: Odchod do důchodu musí být vyšší než 60 let.", "ciastka" : "Minimální výše společného příspěvku účastníka a zaměstnavatele nesmí být nižší než 100 Kč.", "opravneni" : "Věk oprávněné osoby pro žádost o výplatu penze nesmí být nižší než 50 let.", "prvaSplatka_Suma" : "Maximální hodnota činí "+PERCENTA['prvaSplatka']['maxValuePercent']+"% z výši individuálního účtu.\nVkládám nejvyšší možnou hodnotu:", "garantDoba" : "Garantovaná doba nesmí být delší než 15 let.", "NUM_NEGAT" : "Musíte zadat kladné číslo.\nTIP: Na vyjádření číslic můžete použít mezery, čárky a tečky.", "prvaSplatka_Percent" : "Zadaná suma je větší než povolených " +PERCENTA['prvaSplatka']['maxValuePercent']+ "%.\nVkládám nejvyšší možnou hodnotu:", "NUM_CELE" : "Zadejte prosím cele číslo.", "ONLY_SUM_VALUE" : "Vyznačené pole dovoluje jenom hodnotu v Kč", "COLOR_BAD" : "#ffd363", "COLOR_OK" : "#ffffff" } function numValidator(num) { /* skontroluje cislo na zapis (bodky, ciarky, medzery); nie percenta!; vrati float */ var p = false; var o = (typeof(num) == "object") ? true : false; if (o) { numObj = num; num = num.value; if (typeof(num) == "undefined") { alert("ERR1"); return(false); } } if (num == "") num = 0; num = String(num); if (num.search(/\s/) != -1) { num = num.replace(/\s/g, ""); } if (num.search(/"%"/) != -1) { num = num.split("%"); if (num[0] == "") num[0] = "0"; num = num[0] + "%"; if (o) numObj.value = num; } if (num.indexOf("%") != -1) { num = num.split("%"); num = num[0]; p = true; } if (num < 0) { alert(ERROR['NUM_NEGAT']); return(false); } if (num.search(/^[0-9]+$/) == -1) { if (num.search(/^[0-9]+[[\,\.]?[0-9]+]?$/g) == -1 && num != "true") { alert(ERROR['NOT_NUM']); return(false); } else { if (num.indexOf(",") != -1) { num = num.replace(/\,/g, "."); } num = parseFloat(num); } num = parseFloat(num); } else { if (num.indexOf(",") != -1) { num = num.replace(/\,/g, "."); } num = parseFloat(num); } if (o) { numObj.value = num; if (p) numObj.value += "%"; return numObj; } return num; } function takeInt(cislo) { /* potreba zadania celych cisel */ if (typeof(cislo) == "object") { getNum = cislo.value; var getNum = String(getNum); if (getNum.search(/[\,\.]/g) != -1) { alert(ERROR['NUM_CELE']); cislo.focus(); return(false); } } else { var getNum = String(getNum); if (getNum.search(/[\,\.]/g) != -1) { alert(ERROR['NUM_CELE']); cislo.focus(); return(false); } } } function validateNum(hasValue) { /* osetri zapis cisla pre vypocet a skontroluje limity hodnot ! 07/2005 - skontroluje pole na percento ! */ var gotValue; if (typeof(hasValue) == "object") { // ziskaj objekt a hodnotu ; kontroluj podla typu pola TEMP = numValidator(hasValue); /* vrati mi cislo, alebo false */ TEMP = miniCalc(hasValue); if (TEMP) { var gotValue = numValidator(TEMP); PERCENTA[hasValue.name]["hasActualValue"] = gotValue; // alert("gotValue " + hasValue.name + " :" + gotValue); } else { /* pouzivatel si musi upravit hodnoty; nepocitame */ return(false); } //podmienky kalkulacie ; pozn: percentualne hodnoty sa kontroluju cez miniCalc switch(hasValue.name) { case "vstupniVek": takeInt(hasValue); if (gotValue < SET_MIN_VEK) { alert(ERROR['vstupniVek1']); hasValue.value = SET_MIN_VEK; hasValue.focus(); return(false); break; } var odchod_value = parseFloat(PERCENTA["ageX"]["hasActualValue"]); if (odchod_value - gotValue < SET_MIN_DOBA) { alert(ERROR['minDobaPojist']); document.forms.kalkul.ageX.value = gotValue + SET_MIN_DOBA; hasValue.focus(); return(false); } else { return(true); } break; case "ageX": takeInt(hasValue); var vstup_value = parseFloat(PERCENTA["vstupniVek"]["hasActualValue"]); if (gotValue < SET_ODCHOD_VEK) { alert(ERROR['duchod']); if(gotValue - vstup_value <= SET_MIN_DOBA) { alert(ERROR['minDobaPojist']); hasValue.value = (SET_ODCHOD_VEK - vstup_value > SET_MIN_DOBA) ? SET_ODCHOD_VEK : vstup_value + SET_MIN_DOBA; } else { hasValue.value = SET_ODCHOD_VEK; } hasValue.focus(); return(false); } else if (gotValue - vstup_value < SET_MIN_DOBA) { alert(ERROR['vstupniVek1']); hasValue.value = odchod_value + SET_MIN_DOBA; hasValue.focus(); return(false); } else { return(true); } break; case "splatkaUcastnika": var su = parseFloat(PERCENTA["splatkaUcastnika"]["hasActualValue"]); var pz = parseFloat(PERCENTA["prispevekZam"]["hasActualValue"]); if (su+pz < SET_MIN_CIASTKA) { alert(ERROR['ciastka']); hasValue.value = SET_MIN_CIASTKA; hasValue.focus(); return(false); } else { return(true); } break; /* doplnene 14-04-2008 */ case "utrataKarta": var uk = parseFloat(PERCENTA["utrataKarta"]["hasActualValue"]); var pz = parseFloat(PERCENTA["prispevekZam"]["hasActualValue"]); if (uk+pz < SET_MIN_CIASTKA) { alert(ERROR['ciastka']); hasValue.value = SET_MIN_CIASTKA; hasValue.focus(); return(false); } else { return(true); } break; case "prispevekZam": var su = parseFloat(PERCENTA["splatkaUcastnika"]["hasActualValue"]); var pz = parseFloat(PERCENTA["prispevekZam"]["hasActualValue"]); if (su+pz < SET_MIN_CIASTKA) { alert(ERROR['ciastka']); hasValue.value = SET_MIN_CIASTKA; hasValue.focus(); return(false); } else { return(true); } break; case "ageY": takeInt(hasValue); if (gotValue < SET_OPRAVNENIE_VEK) { alert(ERROR['opravneni']); hasValue.value = SET_OPRAVNENIE_VEK; hasValue.focus(); return(false); } else { return(true); } break; case "profit": if (gotValue < 0) { alert(ERROR['NUM_NEGAT']); hasValue.value = 3; hasValue.focus(); return(false); } else { return(true); } break; case "hruba": if (gotValue <= 0) { alert(ERROR['hruba']); hasValue.value = 0; hasValue.focus(); return(false); } else { return(true); } break; case "GP": takeInt(hasValue); if (gotValue > SET_MAX_GARANT_DOBA) { alert(ERROR['garantDoba']); hasValue.value = 15; hasValue.focus(); return(false); } else { return(true); } if (gotValue < 0) { alert(ERROR['garantDoba']); hasValue.value = 15; hasValue.focus(); return(false); } else { return(true); } break; default: return(true); break; } } else { // kontrola cisla - toto sa nepouziva, mal by prist objekt... if (hasValue == "") hasValue = 0; var gotValue = numValidator(hasValue); if (gotValue < 0) { alert(ERROR['NUM_NEGAT']); hasValue.value = 0; return(false); } else { /* noop */ return(gotValue); } } } function re_pojist(hodnota) { if (typeof(hodnota) == "object") { /* kontrola pre tlacitko pocitania */ var TEST = validateNum(hodnota); if (!TEST) return; } var TEST = validateNum(document.forms.kalkul.vstupniVek); if (!TEST) return; var TEST = validateNum(document.forms.kalkul.ageX); if (!TEST) return; var TEST = validateNum(document.forms.kalkul.hruba); if (!TEST) return; var TEST = validateNum(document.forms.kalkul.splatkaUcastnika); if (!TEST) return; var TEST = validateNum(document.forms.kalkul.utrataKarta); /* doplnene 14-04-2008 */ if (!TEST) return; var TEST = validateNum(document.forms.kalkul.prispevekZam); if (!TEST) return; var TEST = validateNum(document.forms.kalkul.PCpozust); if (!TEST) return; var TEST = validateNum(document.forms.kalkul.ageY); if (!TEST) return; var TEST = validateNum(document.forms.kalkul.profit); if (!TEST) return; var TEST = validateNum(document.forms.kalkul.GP); if (!TEST) return; /* zoberie si hodnoty z poli a vypocita prvu tabulku */ /* tu treba prepocitavat percenta */ vstupniVek = parseFloat(PERCENTA["vstupniVek"]["hasActualValue"]); sexX = document.forms.kalkul.sexX.selectedIndex; ageX = parseFloat(PERCENTA["ageX"]["hasActualValue"]); splatkaUcastnika = parseFloat(PERCENTA["splatkaUcastnika"]["hasActualValue"]); utrataKarta = parseFloat(PERCENTA["utrataKarta"]["hasActualValue"]); /* doplnene 14-04-2008 */ bonusKarta = utrataKarta * 0.01; /* doplnene 14-04-2008 - C */ prispevekZam = parseFloat(PERCENTA["prispevekZam"]["hasActualValue"]); prispevekStatu = fPrispevekStatu(splatkaUcastnika) - 0; prispevekStatuSKartou = fPrispevekStatu(splatkaUcastnika + bonusKarta) - 0; /* doplnene 14-04-2008 E1 */ prispevekStatuKarta = prispevekStatuSKartou - prispevekStatu; /* doplnene 14-04-2008 - D */ profit = numValidator(PERCENTA["profit"]["hasActualValue"]); if (!profit) return; profit = parseFloat(profit) / 100; document.forms.kalkul.prispevekStatu.value = prispevekStatu; doba = ageX - vstupniVek; document.forms.kalkul.doba.value = doba; celkemUcastnik = 12 * doba * splatkaUcastnika; celkemKartaBonus = 12 * doba * bonusKarta; /* doplnene 14-04-2008 - E */ celkemkZam = 12 * doba * prispevekZam; celkemStat = 12 * doba * prispevekStatu; document.forms.kalkul.celkemUcastnik.value = zaokrouhlit(celkemUcastnik); document.forms.kalkul.celkemkZam.value = zaokrouhlit(celkemkZam); document.forms.kalkul.celkemStat.value = zaokrouhlit(celkemStat); ziskUcastnik = 0; ziskZam = 0; ziskStat = 0 sumaZiskUcastnik = 0; sumaZiskKarta = 0; /* doplnene 14-04-2008 */ sumaZiskZam = 0; sumaZiskStat = 0; sumaZiskStatKarta = 0; /* doplnene 14-04-2008 */ splatkaUcastnikaAku = 0; bonusKartaAku = 0; /* doplnene 14-04-2008 */ prispevekZamAku = 0; prispevekStatuAku = 0; prispevekStatuAkuKarta = 0; /* doplnene 14-04-2008 */ splatkaUcastnikaPole = new Array('nic',splatkaUcastnika,splatkaUcastnika,splatkaUcastnika,splatkaUcastnika,splatkaUcastnika,splatkaUcastnika,splatkaUcastnika,splatkaUcastnika,splatkaUcastnika,splatkaUcastnika,splatkaUcastnika,splatkaUcastnika); utrataKartaPole = new Array('nic',bonusKarta,bonusKarta,bonusKarta,bonusKarta,bonusKarta,bonusKarta,bonusKarta,bonusKarta,bonusKarta,bonusKarta,bonusKarta,bonusKarta); /* doplnene 14-04-2008 */ prispevekZamPole = new Array('nic',prispevekZam,prispevekZam,prispevekZam,prispevekZam,prispevekZam,prispevekZam,prispevekZam,prispevekZam,prispevekZam,prispevekZam,prispevekZam,prispevekZam); quartalPrisp = prispevekStatu*3; quartalPrispKarta = prispevekStatuKarta*3; /* doplnene 14-04-2008 */ prispevekStatuPole1 = new Array('nic',0,0,0,quartalPrisp,0,0,quartalPrisp,0,0,quartalPrisp,0,0); prispevekStatuPole2 = new Array('nic',quartalPrisp,0,0,quartalPrisp,0,0,quartalPrisp,0,0,quartalPrisp,0,0); prispevekStatuPoleKarta1 = new Array('nic',0,0,0,quartalPrispKarta,0,0,quartalPrispKarta,0,0,quartalPrispKarta,0,0); /* doplnene 14-04-2008 */ prispevekStatuPoleKarta2 = new Array('nic',quartalPrispKarta,0,0,quartalPrispKarta,0,0,quartalPrispKarta,0,0,quartalPrispKarta,0,0); /* doplnene 14-04-2008 */ for (d = 1; d <= doba; d++) { ziskUcastnik = Interest(splatkaUcastnikaPole,profit)+ (splatkaUcastnikaAku+sumaZiskUcastnik)*profit + sumaZiskUcastnik; sumaZiskUcastnik = ziskUcastnik; splatkaUcastnikaAku += 12*splatkaUcastnika; ziskKarta = Interest(utrataKartaPole,profit)+ (bonusKartaAku+sumaZiskKarta)*profit + sumaZiskKarta; /* doplnene 14-04-2008 */ sumaZiskKarta = ziskKarta; /* doplnene 14-04-2008 - F */ bonusKartaAku += 12*bonusKarta; /* doplnene 14-04-2008 */ ziskZam = Interest(prispevekZamPole,profit)+ (prispevekZamAku+sumaZiskZam)*profit +sumaZiskZam; sumaZiskZam =ziskZam; prispevekZamAku += 12*prispevekZam; if (d != 1) { ziskStat = Interest(prispevekStatuPole2,profit)+(prispevekStatuAku+sumaZiskStat)*profit+sumaZiskStat; prispevekStatuAku+=12*prispevekStatu; ziskStatKarta = Interest(prispevekStatuPoleKarta2,profit)+(prispevekStatuAkuKarta+sumaZiskStatKarta)*profit+sumaZiskStatKarta; /* doplnene 14-04-2008 */ prispevekStatuAkuKarta+=12*prispevekStatuKarta; /* doplnene 14-04-2008 */ } else { ziskStat = Interest(prispevekStatuPole1,profit); prispevekStatuAku = 9*prispevekStatu; ziskStatKarta = Interest(prispevekStatuPoleKarta1,profit); /* doplnene 14-04-2008 */ prispevekStatuAkuKarta = 9*prispevekStatuKarta; /* doplnene 14-04-2008 */ } sumaZiskStat = ziskStat; sumaZiskStatKarta = ziskStatKarta; /* doplnene 14-04-2008 - G */ } //document.write(quartProStavtxt); document.forms.kalkul.ziskUcastnik.value = zaokrouhlit(ziskUcastnik); document.forms.kalkul.ziskZam.value = zaokrouhlit(ziskZam); document.forms.kalkul.ziskStat.value = zaokrouhlit(ziskStat); celkemKarta = sumaZiskStatKarta + sumaZiskKarta + prispevekStatuKarta + celkemKartaBonus; /* doplnene 14-04-2008 - H */ celkem = celkemUcastnik + celkemkZam + celkemStat + ziskUcastnik + ziskZam + ziskStat + celkemKarta; GLOB_CELKEM = celkem; document.forms.kalkul.celkem.value = zaokrouhlit(celkem); //document.forms.kalkul.celkemKarta.value = celkem; /* doplnene 14-04-2008 */ document.forms.kalkul.celkemKarta.value = zaokrouhlit(celkemKarta); /* doplnene 14-04-2008 */ // výpočet druhé tabulky m = document.forms.kalkul.m[document.forms.kalkul.m.selectedIndex].value; /* fv vyplaty */ PCpozust = numValidator(PERCENTA["PCpozust"]["hasActualValue"]); PCpozust = parseFloat(PCpozust) / 100; GP = PERCENTA["GP"]["hasActualValue"] - 0; document.forms.kalkul.GP2.value = GP; /* zapise garant. pocet do penzii */ document.forms.kalkul.GP3.value = GP; document.forms.kalkul.GP4.value = GP; document.forms.kalkul.GP7.value = GP; ageY = PERCENTA["ageY"]["hasActualValue"] - 0; /* opravnena osoba */ sexY = document.forms.kalkul.sexY.selectedIndex; GLOB_MAX_PERCENT = celkem * (PERCENTA['prvaSplatka']['maxValuePercent'] / 100); //alert(GLOB_MAX_PERCENT); celkem = celkem - (PERCENTA['prvaSplatka']['hasActualValue'] - 0); v = 1/1.005; //NOVA = 0,5% ; STARA = konstanta pro tum = 3% // výpočet polí lx a dx qx = q[sexX][0]; lx[0] = 100000; dx[0] = Math.round( lx[0] * qx ); for ( i = 1; i <= 103; i++ ) { qx = q[sexX][i]; lx[i] = lx[i-1] - dx[i-1]; dx[i] = Math.round( lx[i] * qx); } // výpočet polí ly a dy qy = q[sexY][0]; ly[0] = 100000; dy[0] = Math.round( ly[0] * qy ); for ( i = 1; i <= 103; i++ ) { qy = q[sexY][i]; ly[i] = ly[i-1] - dy[i-1]; dy[i] = Math.round( ly[i] * qy); } // výpočet polí Dx a Nx Dx[103] = 1; Nx[103] = 1; for ( i = 102; i >=0 ; i-- ) { Dx[i] = lx[i] * Math.pow(v, i); Nx[i] = Nx[i+1] + Dx[i] } // výpočet polí Dy a Ny Dy[103] = 1; Ny[103] = 1; for ( i = 102; i >=0 ; i-- ) { Dy[i] = ly[i] * Math.pow(v, i); Ny[i] = Ny[i+1] + Dy[i] } //Výpočet polí Dxx, Nxx, Dxy a Nxy Dxx[103] = lx[103] * lx[103] * Math.pow(v, 103) Nxx[103] = Dxx[103] Dxy[103] = 0; Nxy[103] = 0; for ( i = 102; i >=0 ; i-- ) { Dxx[i] = lx[i] * lx[i] * Math.pow(v, i); Nxx[i] = Nxx[i+1] + Dxx[i]; pomocna = lx[ageX+i] * ly[ageY+i] * Math.pow( v, (ageX + ageY + 2*i)/2 ); Dxy[i] = isNaN(pomocna) ? 0 : pomocna Nxy[i] = Nxy[i+1] + Dxy[i]; //if ( i==102 ){ alert( Dxy[102] ) } } // výpočet polí Cx a Mx Cx[103] = 1; Mx[103] = 1; for ( i = 102; i >=0 ; i-- ) { Cx[i] = dx[i] * Math.pow(v, i+1); Mx[i] = Mx[i+1] + Cx[i] } k1 = Math.pow(v, 1/m) / ( 1 - Math.pow(v, 1/m) ) * (1 - Math.pow(v, GP)) / m; k2 = Nx[ageX + GP + 1] / Dx [ageX]; k3 = Ny[ageY + GP + 1] / Dy [ageY]; k4 = Nxy[GP + 1] / Dxy[0]; k5 = (m - 1) / (2 * m); k6 = Dx[ageX + GP] / Dx[ageX]; k7 = Dy[ageY + GP] / Dy[ageY]; k8 = Dxy[GP] / Dxy[0]; k9 = Nx[ageX + 1] / Dx[ageX]; k10= Ny[ageY + 1] / Dy[ageY]; k11= Nxy[1] / Dxy[0]; k12= ( Nx[ageX + 1] - Nx[ageX + GP + 1] ) / Dx[ageX]; /* nove kom. cislo - november 04 k13= Dx[ageX] / Mx; */ k13= Mx[ageX]/Dx[ageX]*((1-Math.pow(v,GP))/(m*(Math.pow(1/v,1/m)-1))) fact = (m - 1) / 2 / m; p1 = k9 + k5; p2 = k1 + k2 + k5 * k6; p3 = k9 + k10 - k11 + k5; p4 = k1 + k2 + k3 - k4 + k5 * ( k6 + k7 - k8 ); p5 = k9 + PCpozust * k10 -PCpozust * k11 + k5; p6 = k1 + k2 + PCpozust * k3 - PCpozust * k4 + k5 * ( k6 + PCpozust * k7 - PCpozust * k8 ); /* p7 = k9 + PCpozust * fact + k13 * k1; */ p7 = k9 + k5 + k13; document.forms.kalkul.penze1.value = zaokrouhlit ( celkem / p1 / m ); document.forms.kalkul.penze2.value = zaokrouhlit ( celkem / p2 / m ); document.forms.kalkul.penze3.value = zaokrouhlit ( celkem / p3 / m ); document.forms.kalkul.penze4.value = zaokrouhlit ( celkem / p4 / m ); document.forms.kalkul.penze5.value = zaokrouhlit ( celkem / p5 / m ); document.forms.kalkul.penze6.value = zaokrouhlit ( celkem / p6 / m ); document.forms.kalkul.penze7.value = zaokrouhlit ( celkem / p7 / m ); for ( i = 1; i<=7; i++ ) { document.forms.kalkul['fr' + i].value = hlaska2[document.forms.kalkul.m.selectedIndex] } } /* percentualna kalkulacka */ function miniCalc(pValue) { /* zapis parametrov: spracovavany element (this), hodnota z elementu (jeho name), maximalka */ var runKalk = false; var hasPercent = false; /* pValue je stale objekt */ TEMPS[0] = pValue.value; if (typeof(pValue) == "object") { /* kalkulacka robi iba s objektom */ TEMPS[1] = pValue.name + ","; if (PERCENTA_ALLOWED_FIELDS.indexOf(TEMPS[1]) == -1) { /* pole nemoze mat %... */ if (TEMPS[0].indexOf("%") != -1) { /* ... a ma ho */ alert(ERROR["ONLY_SUM_VALUE"]); pValue.style.backgroundColor = ERROR['COLOR_BAD']; return(false); } else { /* OK, pole nemoze mat % a ani ho nema, vratim hodnotu */ pValue.style.backgroundColor = ERROR['COLOR_OK']; return(TEMPS[0]); } } else { /* pole moze mat %... */ TEMPS[2] = pValue.value; // parseFloat(pValue.value); if (TEMPS[0].indexOf("%") != -1) { /* ... a ma ho - urob prepocet a zapis do hasActualValue */ TEMPS[2] = TEMPS[0].split("%"); TEMPS[2] = parseFloat(TEMPS[2]); // kontrola na limity if (PERCENTA[pValue.name]["maxValuePercent"]) { if (TEMPS[2] > PERCENTA[pValue.name]["maxValuePercent"]) { alert(ERROR["prvaSplatka_Percent"]); TEMPS[2] = PERCENTA[pValue.name]["maxValuePercent"]; pValue.value = PERCENTA[pValue.name]["maxValuePercent"] + "%"; } } // alert("urob prepocet a zapis do hasActualValue"); if (PERCENTA[pValue.name]['maxValueObject']) { /* ok, ma danu vychodziu hodnotu v inom poli */ TEMPS[3] = PERCENTA[pValue.name]['maxValueObject']; TEMPS[3] = eval("document.forms.kalkul."+TEMPS[3]); TEMPS[3] = parseFloat(TEMPS[3].value); if(TEMPS[3] <= 0) { /* ak nam chyba vychodzia hodnota, nemozeme pokracovat */ /* specificke ERROR hlasky - treba podla potreby doplnit */ if (PERCENTA[pValue.name]['maxValueObject'] == "celkem") alert(ERROR['userValues']); else if(PERCENTA[pValue.name]['maxValueObject'] == "hruba") alert(ERROR['hruba']); return(false); } /* pokracujeme vypocet prebratim predvolenej hodnoty */ TEMPS[4] = eval("document.forms.kalkul." + PERCENTA[pValue.name]['maxValueObject']); TEMPS[4] = parseFloat(TEMPS[4].value); /* moja preddef. hodnota */ // alert("mam PERCENTA[pValue.name]['maxValueObject'] :" + TEMPS[4]); /* prepocet na sumu z percenta a zapis do ALT/TITLE */ TEMPS[4] = TEMPS[4] / 100; TEMPS[4] = parseFloat(TEMPS[4] * TEMPS[2]); TEMPS[4] = Math.round(TEMPS[4]); /* zapis do ALT/TITLE elementu */ if(PERCENTA[pValue.name]['maxValueObject'] == "hruba") { pValue.alt = "= " +Math.floor(TEMPS[4])+" Kč z dané hrubé mzdy"; pValue.title = "= " +Math.floor(TEMPS[4])+" Kč z dané hrubé mzdy"; } else if (PERCENTA[pValue.name]['maxValueObject'] == "celkem") { pValue.alt = "= " +Math.floor(TEMPS[4])+" Kč z výsledné sumy individuálniho účtu"; pValue.title = "= " +Math.floor(TEMPS[4])+" Kč z výsledné sumy individuálniho účtu"; } // alert("je to percento zo sumy :" + TEMPS[2]+ " z " + TEMPS[4] ); pValue.style.backgroundColor = ERROR['COLOR_OK']; PERCENTA[pValue.name]['hasActualValue'] = TEMPS[4]; return(TEMPS[4]); /* pozn. */ } else { /* ok, nema danu vychodziu hodnotu; skontrolujeme zadanu max. hodnotu a potom percento */ return(true); if (PERCENTA[pValue.name]['maxValueSum']) {} if (PERCENTA[pValue.name]['maxValuePercent']) {} } /* dead end */ return(false); } else { /* OK, pole moze mat %, avsak aktualne ho nema */ if (PERCENTA[pValue.name]['maxValueObject']) { /* ok, ma danu vychodziu hodnotu v inom poli */ TEMPS[3] = PERCENTA[pValue.name]['maxValueObject']; TEMPS[3] = eval("document.forms.kalkul."+TEMPS[3]); TEMPS[3] = parseFloat(TEMPS[3].value); // kontrola na limity if (PERCENTA[pValue.name]["maxValuePercent"]) { TEMPS[6] = (TEMPS[3] / 100) * PERCENTA[pValue.name]["maxValuePercent"]; //TEMPS[6] = Math.floor(TEMPS[6]); TEMPS[7] = numValidator(pValue.value); if (TEMPS[7] > TEMPS[6]) { alert(ERROR["prvaSplatka_Suma"]); pValue.value = Math.floor(TEMPS[6]); TEMPS[0] = parseFloat(TEMPS[6]); TEMPS[2] = TEMPS[0]; alert(TEMPS[0]); } } if(TEMPS[3] <= 0) { /* ak nam chyba vychodzia hodnota, nemozeme pokracovat */ /* specificke ERROR hlasky - treba podla potreby doplnit */ if (PERCENTA[pValue.name]['maxValueObject'] == "celkem") alert(ERROR['userValues']); else if(PERCENTA[pValue.name]['maxValueObject'] == "hruba") alert(ERROR['hruba']); return(false); } /* pokracujeme vypocet prebratim predvolenej hodnoty */ TEMPS[4] = eval("document.forms.kalkul." + PERCENTA[pValue.name]['maxValueObject']); TEMPS[4] = parseFloat(TEMPS[4].value); /* moja preddef. hodnota */ /* prepocet na percento zo sumy a zapis do ALT/TITLE */ TEMPS[4] = TEMPS[4] / 100; TEMPS[4] = parseFloat(TEMPS[0] / TEMPS[4]); TEMPS[7] = String(TEMPS[4]); if (TEMPS[7].indexOf(".") != -1) { TEMPS[7] = TEMPS[7].split("."); if (TEMPS[7][1].length > 2) TEMPS[7][1] = TEMPS[7][1].substring(0,2); TEMPS[7] = TEMPS[7][0] + "." + TEMPS[7][1]; TEMPS[4] = parseFloat(TEMPS[7]); } if(PERCENTA[pValue.name]['maxValueObject'] == "hruba") { pValue.alt = "= " +TEMPS[4]+" % z dané hrubé mzdy"; pValue.title = "= " +TEMPS[4]+" % z dané hrubé mzdy"; } else if (PERCENTA[pValue.name]['maxValueObject'] == "celkem") { pValue.alt = "= " +TEMPS[4]+" % z výsledné sumy individuálniho účtu"; pValue.title = "= " +TEMPS[4]+" % z výsledné sumy individuálniho účtu"; } // alert("vraciam a zapisujem :" + TEMPS[2]); pValue.style.backgroundColor = ERROR['COLOR_OK']; PERCENTA[pValue.name]['hasActualValue'] = TEMPS[2]; return(TEMPS[2]); /* pozn. */ } else { /* ok, nema danu vychodziu hodnotu; skontrolujeme zadanu max. hodnotu a potom percento */ return(true); if (PERCENTA[pValue.name]['maxValueSum']) {} if (PERCENTA[pValue.name]['maxValuePercent']) {} } /* dead end */ return(false); } /* noop */ } } else { /* nedosiel nam objekt */ alert("ERR3"); return(false); } /* koniec */ } /* pomocne bubliny v0,1 * 0,1 - iba getElementById */ /* definicia kmena nazvu id-cok; potom v html + poradove cislo * napr. "helpik1" (k nemu "bub1" (!)) ...az po x */ var helpers = "helpik"; var bubbles = "bub"; /* koniec volieb */ var noop = 0; var bubble = ""; var helper = ""; var ox=0; var oy=0; var IE = document.all?true:false; if (!IE) document.captureEvents(Event.MOUSEMOVE); function mouseMove(e) { if (IE) { ox = event.clientX + document.body.scrollLeft; oy = event.clientY + document.body.scrollTop; } else { ox = e.pageX; oy = e.pageY; } if (ox < 10){ox = 10} if (oy < 10){oy = 10} return true } document.onmousemove=mouseMove; function poss(cX,cY) { /* set position */ var setup = document.getElementById(bubble); setup.style.position="absolute"; setup.style.top = (oy + 15 + cY)+"px"; /* vert. korekcia */ setup.style.left = (ox + 15 + cX)+"px"; /* horiz. korekcia */ selected(bubble); } function help(view,bub,corX,corY) { if (view) { if (noop) return false; helper = helpers + bub; bubble = bubbles + bub; noop = 1; poss(corX,corY); } else { noop = 0; document.getElementById(bubble).style.visibility = "hidden"; document.getElementById(bubble).style.display = "none"; } } function selected(bubble) { /* urob visible */ document.getElementById(bubble).style.visibility = "visible"; document.getElementById(bubble).style.display = "block"; } /* end */