function validate()
	{
	var i;
	for (i=1;i<=5;i++) {
		v.make_int('txtKap'+i, true);
		v.make_int('txtDS'+i, true);
		v.make_int('txtI'+i, true);
		v.make_int('txtTr'+i, true);
		v.make_int('txtAD'+i, true);
		v.make_int('txtCI'+i, true);
	}

	
	var age=new Array(6);
	var sex=new Array(6);
	var proc=new Array(6);
	var drsuma=new Array(6);
	var invalid=new Array(6);
	var trauma=new Array(6);
	var mirtis=new Array(6);
	var ligos=new Array(6);
	var ligossar=new Array(6);
	var is=new Array(6);
	
	apdr_sk = 0	;
	isPD = v.is_checked('chkPD')
	for (i=1;i<=5;i++) {
		is[i]=(i==1 || v.is_checked('pd'+i)) ? true:false;
		if (is[i]) apdr_sk++;
		age[i]= is[i] ? 1*v.option('txtAmzius'+i):0;
		sex[i]= is[i] ? 1*v.option('cboLytis'+i):0;
		proc[i]= is[i] ? 1*v.value('txtKap'+i):0;
		drsuma[i]= is[i] ? 1*v.value('txtDS'+i).numerize():0;
		invalid[i]= isPD && is[i] ? 1*v.value('txtI'+i).numerize():0;
		trauma[i]= isPD && is[i] ? 1*v.value('txtTr'+i).numerize():0;
		mirtis[i]= isPD && is[i] ? 1*v.value('txtAD'+i).numerize():0;
		ligos[i]= isPD && is[i] ? 1*v.value('txtCI'+i).numerize():0;
		ligossar[i]=(v.radio('opt'+i)==1) ? true:false;
	}
	
	ok = true;
	output('');
	if ((proc[1]+proc[2]+proc[3]+proc[4]+proc[5]) !=100)
		{
		alert('Kapitalo procentų suma turi būti 100%!');
		ok = false;
		}
	for (i=1;i<=5;i++) if (proc[i]>0) proc[i]=proc[i]/100;
		
	maxas = age[1];
	for (i=2;i<=5;i++) maxas=Math.max(maxas,age[i]);
	termas = 1*v.option('cboTerminas');
	if (termas > 100-maxas) {
		termas=100-maxas;
		term = v.get_obj('cboTerminas');
		term.selectedIndex=termas-1;
		alert('Vieno iš draudžiamojo amžius per didelis pasirinktam terminui! Terminas pakoreguotas');
	}
	termas = 1*v.option('cboTerminas');
	
	var was1 = false;
	var was2 = false;
	var was3 = false;
    var was4 = false;
	
	for (i=1;i<=5;i++) {
		if (ligos[i]>0 && termas+age[i]>65) {
	        alert("Kritinių ligų apsauga galioja iki 65 m. amžiaus!");
			//ok=false;
			break;
	    }
	    
	    if(age[i] < 16 && (drsuma[i] > 20000 || invalid[i] > 20000 || trauma[i] > 20000 || mirtis[i] > 20000 || ligos[i] > 300000))
	    {
            was1 = true;
                    
            if(drsuma[i] > 20000)
            {
                drsuma[i] = 20000;
                v.set_value('txtDS' + i, '20 000');
            }
        
            if(invalid[i] > 20000)
            {
                invalid[i] = 20000;
                v.set_value('txtI' + i, '20 000');
            }
        
            if(trauma[i] > 20000)
            {
                trauma[i] = 20000;
                v.set_value('txtTr' + i, '20 000');
            }
        
            if(mirtis[i] > 20000)
            {
                mirtis[i] = 20000;
                v.set_value('txtAD' + i, '20 000');
            }
            
            if(ligos[i] > 300000)
            {
                ligos[i] = 300000;
                v.set_value('txtCI' + i, '300 000');
            }
        }
        
        if(invalid[i] > 300000)
        {
            was2 = true;
            invalid[i] = 300000;
            v.set_value('txtI' + i, '300 000');
        }

        if(trauma[i] > 50000)
        {
            was3 = true;
            trauma[i] = 50000;
            v.set_value('txtTr' + i, '50 000');
        }
        
        if(ligos[i] > 300000)
        {
            was4 = true;
            ligos[i] = 300000;
            v.set_value('txtCI' + i, '300 000');
        }
	}
	
	if(was1) alert('Jei draudžiamojo asmens amžius yra mažesnis, nei 16 metų, gyvybės draudimo sumos bei papildomų draudimo apsaugų sumos negali būti didesnės, nei 20 000 Lt. Sumos pakoreguotos.');
	if(was2) alert('Maksimali papildomos draudimo apsaugos nuo neįgalumo suma yra 300 000 Lt. Suma pakoreguota.');
	if(was3) alert('Maksimali papildomos draudimo apsaugos nuo traumos suma yra 50 000 Lt. Suma pakoreguota.');
    if(was4) alert('Maksimali papildomos draudimo apsaugos nuo kritinių ligų suma yra 300 000 Lt. Suma pakoreguota.');
    

	Paluk = 1*v.value('PalukanosText');
    terminas =12 * v.option('cboTerminas');;
    imoka = 1*v.value('ImokaText').numerize();
	mode = 1*v.radio('fraMokBudas');
	var mokbudas=1*v.option('mokbudas');
	
	var index=0;
	if (v.is_checked('ind1')) index=1*v.value('ind1');
	else if (v.is_checked('ind2')) index=1*v.value('ind2');
	
	
	switch(apdr_sk)
	{
      case 1:
      case 2:
           minImoka = 100;
           break;
       case 3:
           minImoka = 150;
           break;
       case 4:
           minImoka = 200;
           break;
       case 5:
           minImoka = 250;
           break;
    }
    
	if (imoka < minImoka)
	{
    	imoka=minImoka;
    	v.set_value('ImokaText',imoka);
    	ImokaText_AfterUpdate();
    	alert ('Įmoka negali būti mažesnė už '+minImoka+' Lt! Suma pakoreguota');
	}

	 minPerMetus= (apdr_sk == 1) ? 960:600;
      if (imoka * mode / apdr_sk < minPerMetus) {
        imoka=Math.ceil(minPerMetus * apdr_sk / mode );
		v.set_value('ImokaText',imoka);
		ImokaText_AfterUpdate();
		alert("Pasirinkta įmoka mažesnė už nustatytą mažiausią! Įmokos dydis pataisytas!");
      }


	var was=false;
	var noZero=false;
	for (i=1;i<=5;i++) {
		/*if (is[i] && age[i]>=18 && drsuma[i]<imoka) {
			drsuma[i]=imoka;
			v.set_value('txtDS'+i,imoka);
			was=true;
		}*/
        
	    if(is[i] && drsuma[i] == 0 && (invalid[i] > 0 || (trauma[i] > 0 && age[i] >= 16) || mirtis[i] > 0 || ligos[i] > 0))
	    {
	        was = true; 
	    }
	    
		if (drsuma[i]>0) noZero=true;
	}
	//if (was) alert ('Gyvybės draudimo suma negali būti mažesnė už įmokos sumą! Suma pakoreguota');
	if (was) 
    {
        alert('Jei pasirinktos papildomos draudimo apsaugos, gyvybės draudimo suma negali būti lygi nuliui!');
        ok = false;
    }
	/*if (!noZero) {
		alert ('Bent vienas asmuo turi draustis gyvybę!');
		ok=false;
	}*/
	if (!ok) return false;
	
	fondas=new Array();
	skaiciuoti (terminas, imoka, mode, mokbudas, Paluk, apdr_sk, age, sex, proc, isPD, drsuma, invalid, trauma, mirtis, ligos, ligossar,index, true);
	var metImoka=imoka * mode;
	if ( (metImoka<1320 && fondas[1]<metImoka/4) || (metImoka>2160 && fondas[1]<metImoka/6) || (metImoka>=1320 && metImoka<=2160 && fondas[1]<metImoka/4.8)) {
		alert("Draudimo įmoka yra per maža pasirinktoms draudimo sąlygoms!");
		return false;
	}
	
	skaiciuoti (terminas, imoka, mode, mokbudas, Paluk, apdr_sk, age, sex, proc, isPD, drsuma, invalid, trauma, mirtis, ligos, ligossar,index, false)
	return false;
    }

// ***********************************************************
//
// SKAICIAVIMAI
//
// ***********************************************************


function skaiciuoti (terminas, imoka, mokb, mokbudas, Paluk, apdr_sk, age, sex, proc, isPD, drsuma, invalid, trauma, mirtis, ligos, ligossar,index,justTest)
	{
	var sumoketa = 0;
var ss="";
	var sukaupta=0;
	var sukauptaTmp=0;
	
	var imokos_mok = 0;
	men_atskaitymas = 0;

	ismoka = new Array();
	surr_val = new Array();

	if (imoka * mokb >= 3600)
		{
		pirmu_metu = 0.44;
		antru_metu = 0.14;
		treciu_metu = 0.09;
		kitu_metu = 0.05;
		}
	else
		{
		pirmu_metu = 0.45;
		antru_metu = 0.15;
		treciu_metu = 0.1;
		kitu_metu = 0.05;
		}

	men_mok = mokbudas>0 ? 6:8;//tiesioginiu debetu 6 Lt, kitu 8 Lt 
	if (apdr_sk > 2) {men_mok = men_mok + 2 * (apdr_sk - 2);}
	
	men_atsk =0;// 0.0045 / 12;

	mokesciai=0;
	//atsakiciuojam invalidumo sumos mokesti
	for (i=1;i<=5;i++) mokesciai = mokesciai + (invalid[i] * 0.00168 / 12);
	//atsakiciuojam traumos sumos mokesti
	for (i=1;i<=5;i++) mokesciai = mokesciai + (trauma[i] * 0.0066 / 12);
	//atsakiciuojam mirties sumos mokesti
	for (i=1;i<=5;i++) mokesciai = mokesciai + (mirtis[i] * 0.0012 / 12);
		
	Pal = Math.pow((1 + Paluk / 100),(1 / 12)) - 1;
	galioja_men=terminas;
	if (justTest) {
		Pal=0;
		galioja_men=12;
	}
	
	var imokaInd=imoka;//indeksuota imoka
	for (j = 1; j <= galioja_men; j++)
		{
		/*if ((j-1) % (12/mokb) ==0 ) sumoketa = imoka;
		else sumoketa = 0;*/
		
		if (j>1 && (j % 12)==1) imokaInd=imokaInd+(index*imokaInd);//jei indeksavimas
		if ((j-1) % (12/mokb) ==0 ) sumoketa = imokaInd;
		else sumoketa = 0;
				
		if (j<13)	imokos_mok = sumoketa * pirmu_metu;
		else if (j > 12 && j < 25 )	imokos_mok = sumoketa * antru_metu;
		else if (j > 24 && j < 37)	imokos_mok = sumoketa * treciu_metu;
		else if (j > 36) imokos_mok = sumoketa * kitu_metu;

		if (j > 1)	sukauptaTmp = sukaupta + sumoketa - imokos_mok;
		else sukauptaTmp = sumoketa - imokos_mok;
		
		men_atskaitymas = sukauptaTmp * men_atsk;
          
		qxMokestis=0;
		for (i=1;i<=5;i++) {
			if (drsuma[i] > sukauptaTmp * proc[i]) {
				qxMokestis = qxMokestis + (drsuma[i] - sukauptaTmp*proc[i]) * qxInvest(age[i]+Math.floor((j-1)/12), sex[i])/12;
			}
		}

		lxMokestis=0;
		for (i=1;i<=5;i++) {
			lxMokestis = lxMokestis + ligos[i] * koefCI(sex[i],ligossar[i]) * lxInvest(age[i]+Math.floor((j-1)/12), sex[i])/12;
		}

		sukaupta = sukauptaTmp * (1 + Pal) - men_mok - men_atskaitymas - mokesciai - qxMokestis- lxMokestis;
		if (j % 12 == 0) fondas[j/12]=sukaupta;
	
		}
		
		if (justTest) {return;}//buvo tik patikrinimas
	var graz = 0.00;
	trka ='';
	var isp=0;//isperkamosios sumos procentas
	var ispK=0;
	//var k33=0.33;
	var terminas=galioja_men / 12;
	var imokaInd=imoka;//indeksuota imoka
	var Viso=0;
	var koef;
	var suLengvata = 0;
	
	for (j = 1; j<=terminas; j++)
		{
		Metai = j;
		//Viso = imoka * j * mokb;
		
		if (j>1) imokaInd=imokaInd+(index*imokaInd);//jei indeksavimas
		Viso = Viso+imokaInd*mokb;
		
		//suLengvata =(1 - 0.33) * Viso;
		koef=0.85;
		
		suLengvata=suLengvata+ (imokaInd * mokb) * koef;
		
		Atidejimas = fondas[j];
       
		//randame isperkamosios sumos procenta
		if (j==terminas) {isp=1; ispK= terminas<10 ? 0.24 : 0.15;}//jei paskutiniai metai
		else if (j == 1) {isp=0.5; ispK=0.24;}
		else if (j == 2) {isp=0.75; ispK=0.24;}
		else if (j == 3 || j == 4) {isp=0.9; ispK=0.24;}
		else if (j > 4 && j < 10) {isp=0.95; ispK=0.24;}
		else {isp=0.99; ispK=0.15;}//jei >=10
		graz = isp * fondas[j] - ispK * Math.min(Viso,isp*fondas[j]);

		var isperk_sum = Atidejimas * Isperk_sumos_koeficientas(Metai, terminas);
		
		if(Metai >= 20)
		{
		    isperk_sum = Atidejimas;
		}
		
		trka = trka + "<tr bgcolor=#FFFFFF style='text-align:right;padding:2px;'><td class=t4>"+Metai+"</td><td class=nu2 width=30%>"+format(Viso)+"</td><td class=t4 width=30%>"+format(suLengvata)+"</td><td class=t4 width=30%>"+format(Atidejimas)+"</td><td class=t4 width=30% style='display:none;'>"+format(graz)+"</td><td class=t4 width=30%>"+format(isperk_sum)+"</td></tr>";
		}

	tabka ="<table width=100% border=0 cellspacing=1 cellpadding=1 bgcolor=#666666><tr bgcolor=#F1F2EE valign=top style='text-align:right;padding:3px;'><td class=nu2 nowrap>Sutarties<br />galiojimo<br />metai</td><td class=nu2 nowrap>Sumokėtos įmokos<br>nuo draudimo<br>laikotarpio pradžios</td><td class=nu2 nowrap>Sumokėtos įmokos<br>pritaikius mokesčių<br>lengvatą</td><td class=nu2 nowrap>Prognozuojamas<br>sukauptas kapitalas</td><td class=nu2 nowrap style='display:none;'>Prognozuojama išperkamoji<br>suma atskaičius<br>gyventojų pajamų mokestį</td><td align=right class=t4 nowrap>Prognozuojama išperkamoji<br />suma neatskaičius<br />gyventojų pajamų mokesčio</td></tr>" + trka + "</table>";

tabka +="<div class=t4 style=\"margin-top:3px\">Skaičiavimai atlikti įvertinus galiojančius standartinius Investicinio šeimos draudimo sutarties mokesčius ir turi būti interpretuojami tik atsižvelgiant į Investicinio šeimos draudimo taisykles Nr.002, bei skaičiavimo atlikimo metu galiojusius įstatymus ir kitus norminius aktus.<br />PASTABA: Siekiant palyginamumo su kitų gyvybės draudimo bendrovių skaičiuoklėmis, kuriose investicinės veiklos administravimo mokestis yra atskaitomas iš investicinių vienetų kainos, pateikiamoje sukaupto kapitalo prognozėje investicijų administravimo mokestis iš sukaupto kapitalo nėra atskaičiuojamas.<br /><br />Skaičiavimai atlikti su prielaida, kad visai sumokėtų draudimo įmokų sumai taikoma gyventojų pajamų mokesčio lengvata (pagal Lietuvos Respublikos gyventojų pajamų mokesčio įstatymo 21 str. draudimo įmokos kartu su kitomis gyventojo išlaidomis, kurioms taikoma lengvata, neturi viršyti 25 proc. apmokestinamųjų pajamų). Skaičiavimuose prognozuojama išperkamoji suma (grąžinamos įmokos) bei draudimo išmoka laikotarpio pabaigoje gali būti apmokestinamos Lietuvos Respublikos gyventojų pajamų mokesčio įstatyme nustatyta tvarka (t.y. atsižvelgiant į įvairius faktorius visai  ar daliai išmokamos sumos gali būti taikomas 15 proc. GPM tarifas). <br /><br />Skaičiavimai yra tik iliustracinio pobūdžio. Kaupiamo kapitalo vertė gali tiek didėti, tiek mažėti, priklausomai nuo prisiimtos investavimo rizikos ir faktinės investicijų grąžos. Bendrovė negarantuoja investicijų pajamingumo ir apskaičiuotų sukaupto kaiptalo ar išperkamosios sumos verčių.</div>";
	output(tabka);
	
	
	}

function ImokaText_AfterUpdate()
	{
	v.make_int('ImokaText');
 	var mode1=1*v.radio('fraMokBudas');
	var imoka=v.value('ImokaText');
	v.set_value('ImokaText',imoka);
	imoka = imoka.numerize();
    var min_pajamos = imoka * mode1 * 4;
    var per_men = Math.round(min_pajamos / 12);
	v.set_value('Text185', min_pajamos+" Lt ("+per_men+" Lt į mėnesį)");
	}


function pre()
	{
	ImokaText_AfterUpdate()
	seim = document.seimosfrm;

	term = seim.cboTerminas;
	
	age1 = seim.txtAmzius1; age2 = seim.txtAmzius2; age3 = seim.txtAmzius3;
	age4 = seim.txtAmzius4; age5 = seim.txtAmzius5;

	age1.options.length = 71; age2.options.length = 71; age3.options.length = 71; age4.options.length = 71; age5.options.length = 71;

	term.options.length = 50;
	for (i = 0; i <= 70; i++)
		{
		age1.options[i].text = i; age1.options[i].value = i;
		age2.options[i].text = i; age2.options[i].value = i;
		age3.options[i].text = i; age3.options[i].value = i;
		age4.options[i].text = i; age4.options[i].value = i;
		age5.options[i].text = i; age5.options[i].value = i;
		if (i <=49)
			{
			term.options[i].text = i+1; term.options[i].value = i+1;
			}
		}
	age1.options[18].selected = true;
	age2.options[18].selected = true;
	age3.options[18].selected = true;
	age4.options[18].selected = true;
	age5.options[18].selected = true;
	term.value = 10;

	papd();// disablinimas 
	}

function papd()
{
	var f = document.seimosfrm;
	var chPD=v.is_checked('chkPD');
	var is=false;
	for (var i=1;i<=5;i++) {
		is= (i==1 || v.is_checked('pd'+i)) ? true:false;
		eval("f.txtI"+i+".disabled = (chPD && is) ? false:true");
		eval("f.txtTr"+i+".disabled = (chPD && is) ? false:true");
		eval("f.txtAD"+i+".disabled = (chPD && is) ? false:true");
		eval("f.txtCI"+i+".disabled = (chPD && is) ? false:true");
		eval("f.opt"+i+"[0].disabled = (chPD && is) ? false:true");
		eval("f.opt"+i+"[1].disabled = (chPD && is) ? false:true");
		
		eval("f.txtAmzius"+i+".disabled = (is) ? false:true");
		eval("f.cboLytis"+i+".disabled = (is) ? false:true");
		eval("f.txtKap"+i+".disabled = (is) ? false:true");
		eval("f.txtDS"+i+".disabled = (is) ? false:true");
	}
}


function chk2(vl,ds)
	{
	frm = document.seimosfrm;
	if (vl.value.numerize() > ds.value.numerize() * 2)
		{
		alert('Ši suma negali būti didesnė kaip dviguba pagrindinio draudimo suma! Suma pakoreguota');
		vl.value = ds.value.numerize() * 2;
		}
	
	formatSum(vl);
	}
	
function chkTr(vl,ds,age)
	{
	var tds=(age.options[age.selectedIndex].value<18) ? Math.max(10000,ds.value.numerize()):ds.value.numerize();
	if (vl.value.numerize() > tds * 2)
		{
		alert('Per didelė traumų draudimo suma! Suma pakoreguota');
		vl.value = tds * 2;
		}
	
	formatSum(vl);
	}

function chk15(vl,ds)
	{
	frm = document.seimosfrm;
	if (vl.value.numerize() > ds.value.numerize() * 1.5)
		{
		alert('Ši suma negali būti didesnė kaip 150% pagrindinio draudimo suma! Suma pakoreguota');
		vl.value = ds.value.numerize() * 1.5;
		}
	
	formatSum(vl);
	}

function chk22(vl,i, tr, ad, ci,age)
{
    if (vl.value.numerize() * 2 < i.value.numerize()) {i.value = vl.value.numerize() * 2;formatSum(i);}
	if (vl.value.numerize() * 1.5 < ad.value.numerize()) {ad.value = vl.value.numerize() * 1.5;formatSum(ad);}
	if (vl.value.numerize() * 2 < ci.value.numerize()) {ci.value = vl.value.numerize() * 2;formatSum(ci);}
	var tds=(age.options[age.selectedIndex].value<18) ? Math.max(10000,vl.value.numerize()):vl.value.numerize();
	if (tds * 2 < tr.value.numerize()) {tr.value = tds * 2;formatSum(tr);}
	
	formatSum(vl);
}

function zymek(nr)
{
	var a=v.get_obj('ind1');
	var b=v.get_obj('ind2');
	if (nr==1 && a.checked) b.checked=false;
	if (nr==2 && b.checked) a.checked=false;
}

