// pozor na \vz a \vs ... kódování není 1250 ale iso-8859-2 

function checkInt(s)
{var Digits = "0123456789";
 var chr,i = 0;
 while(i < s.length)
 {chr = s.charAt(i++); 
  if (Digits.indexOf(chr) == -1) return false;
 }
 return true;
}

function checkRC() {
 var rc=document.data.RC.value, ok=checkInt(rc),RC_valid=eval(Pid+'"RC_valid"'+diP);
 RC_valid.innerHTML='';
 if (!ok) {RC_valid.innerHTML='Rodné číslo smí obsahovat pouze číslice.';return ok;};
 var yy=parseInt(rc.substr(0,2),10), mm=parseInt(rc.substr(2,2),10),  dd=parseInt(rc.substr(4,2),10);
 yy=1800+(yy<54?100:0)+(rc.length==10?100:0)+yy;
 var sex=document.data.sex.value=(mm>=50?"F":"M");
 document.data.sex.value=sex;
 mm=mm-(mm>50?50:0);
 mm=mm-(mm>20?20:0);
 var rcmod=rc%11;
 if (yy>1953) {
  if (rcmod>1) {ok=false;RC_valid.innerHTML='Rodné číslo má být dělitelné 11.'}; 
  if (rcmod==1 && rc.substr(9)>0) {ok=false;RC_valid.innerHTML='Rodné číslo má být dělitelné 11.'}; 
   // around 1000 exceptions ... checksum 10 codded as 0
 }
 if (!ok) return ok;
 var dob=new Date(yy,mm-1,dd),today=new Date();
 if ((dob.getFullYear()!=yy)||(dob.getMonth()!=mm-1)||(dob.getDate()!=dd)) {
  ok=false;RC_valid.innerHTML='Nekorektní datum narození.';
 };
 if (!ok) return ok;
 document.data.yearage.value=today.getFullYear()-yy;
 dob.setFullYear(today.getFullYear());
 document.data.age.value=document.data.yearage.value+(dob<today?1:0); 
 return ok;
}

function checkFilled(fldName,fldText) {// alert(fldName);
 var ok=document.data[fldName].value.length!=0,
  fldName_valid = eval(Pid+'"'+fldName+'_valid"'+diP);
 fldName_valid.innerHTML='';
 if (!ok) {fldName_valid.innerHTML=fldText+' musí být vyplněno.';return ok;}
 return ok;
}

function checkPSC() {
 var PSC=document.data.psc.value, ok=checkInt(PSC),
  psc_valid = eval(Pid+'"psc_valid"'+diP);
 psc_valid.innerHTML='';
 if (!ok) {psc_valid.innerHTML='PSČ smí obsahovat pouze číslice.';return ok;};
 ok = PSC.length==5; 
 if (!ok) {psc_valid.innerHTML='PSČ má být pětimístné.';return ok;};
 return ok;
}

function checkAge() {
 var RC_valid=eval(Pid+'"RC_valid"'+diP);
 if (document.data.age.value<18) {
  RC_valid.innerHTML='Smlouvu smí uzavřít pouze plnoletá osoba.'; return false;
 }
 if ((document.data.yearage.value>65)||(document.data.yearage.value<18)) {
  RC_valid.innerHTML='Je nám líto, ale pojištění je možno sjednat jen pro osoby ve věku od 18 do 65 let.';
  return false;
 }
 return true;
}

function checkTel() {
 var tel=document.data.tel.value,
  tel_valid = eval(Pid+'"tel_valid"'+diP);
 tel_valid.innerHTML='';
 if (tel.length==0) return true;
 var ok=checkInt(tel);
 if (!ok) {tel_valid.innerHTML='Telefon smí obsahovat pouze číslice.';return ok;};
 ok = tel.length==9; 
 if (!ok) {tel_valid.innerHTML='Telefon má být devítimístný.';return ok;};
 return ok;
}

function checkEmail() {
 var email=document.data.email.value,
  email_valid=eval(Pid+'"email_valid"'+diP);
 email_valid.innerHTML='';
 if (email.length==0) return true;
 var ok = email.indexOf('@')!=-1;
 if (!ok) {email_valid.innerHTML='Očekáván @ v e-mailové adrese.';return ok;}
 return ok;
}

function checkSIPO() {
 var SIPO=document.data.SIPO.value,
  SIPO_valid=eval(Pid+'"SIPO_valid"'+diP),
  SIPOspan = eval(Pid+'"SIPOspan"'+diP)
 SIPO_valid.innerHTML='';
 if (SIPOspan)
  if (SIPOspan.style)
   if (document.data.radio.value.substr(2,1)=="S")
    SIPOspan.style.visibility="visible";
   else
    SIPOspan.style.visibility="hidden";
 if (document.data.radio.value.substr(2,1)!="S") return true;
 var ok=checkFilled('SIPO','Spojovací číslo SIPO (při zvoleném způsobu placení)');
 if (!ok) return ok;
 ok=checkInt(SIPO);
 if (!ok) {SIPO_valid.innerHTML='Spojovací číslo SIPO smí obsahovat pouze číslice.';return ok;}
 ok=(SIPO.length == 10)
 if (!ok) {SIPO_valid.innerHTML='Spojovací číslo SIPO má být desetimístné.';return ok;}
 var chksum=0,i,mult="3731731731",zero="0".charCodeAt(0);
 for(i=0;i<SIPO.length;i++)
  chksum=(chksum+(mult.charCodeAt(i)-zero)*(SIPO.charCodeAt(i)-zero))%10;
 ok=(chksum==0);
 if (!ok) {SIPO_valid.innerHTML='Nejedná se o spojovací číslo SIPO.';return ok;} 
 return true;
}

function chgPojistne(radio) {
// alert('chgPojistne('+freq+')');
// specialne pro dopravni nehody
 if (radio.substr(0,1)=="M") document.data.pojistne.value="154 Kč měsíčně";
 if (radio.substr(0,1)=="Q") document.data.pojistne.value="462 Kč čtvrtletně";
 if (radio.substr(0,1)=="S") document.data.pojistne.value="924 Kč pololetně";
 if (radio.substr(0,1)=="A") document.data.pojistne.value="po slevě 1 778 Kč ročně";
}

function chgRadio() {
 var freq,method,radio,oradio=document.data.radio.value,
  omethod=oradio.substr(2,1),ok=true;
// radios, at least one checked
 for(i=0;!document.data.freq[i].checked;i++); freq=document.data.freq[i].value;
 for(i=0;!document.data.method[i].checked;i++); method=document.data.method[i].value;
 radio = freq+'|'+method;
 document.data.radio.value=radio;
 if (radio!=oradio) chgPojistne(freq+'|'+method);
 ok=checkSIPO(); 
 return ok
}

function chkProhlaseni() {
 var Prohlaseni_valid=eval(Pid+'"Prohlaseni_valid"'+diP);
 ok=document.data.prohlaseni.checked;
 if (ok) Prohlaseni_valid.style.visibility="hidden";
}

function checkAll() {
 var ok=checkFilled('jmeno','Jméno');
 if (ok) ok=checkFilled('prijmeni','Příjmení');
 if (ok) ok=checkFilled('RC','Rodné číslo');
 if (ok) ok=checkAge();
 if (ok) ok=checkFilled('ulice','Ulice, číslo popisné');
 if (ok) ok=checkFilled('mesto','Obec (pota)');
 if (ok) ok=checkFilled('psc','PSČ');
 if (ok) ok=chgRadio();
 if (ok) {ok=document.data.prohlaseni.checked;
  if (!ok) {var Prohlaseni_valid=eval(Pid+'"Prohlaseni_valid"'+diP);Prohlaseni_valid.style.visibility="visible";}
 }
 if (ok) ok=checkRC();
 if (ok) ok=checkPSC();
 if (ok) ok=checkTel();
 if (ok) ok=checkEmail();
 return ok;
}

function sendCiphered() {
 if (checkAll()) {
  var CPZ = new RSAKey(); CPZ.CPZsetPublic(); 
  var msg = document.data.jmeno.value+
   '|'+document.data.prijmeni.value+
   '|'+document.data.titul.value+
   '|'+document.data.RC.value+
   '|'+document.data.ulice.value+
   '|'+document.data.mesto.value+
   '|'+document.data.psc.value+
   '|'+document.data.tel.value+
   '|'+document.data.email.value+'|';
  if (document.data.radio.value.substr(2,1)=="S") msg += document.data.SIPO.value;
  msg += '|'+document.data.radio.value;
  var res=CPZ.encrypt(msg); 
  if (res) {
   document.mail.ciphertext.value = linebrk(res,64);
   document.mail.submit();
  } else {
   alert('Takto to dopadnout nemělo, kontaktujte nás prosím telefonicky či e-mailem.');
  }
 } else { 
  var Odeslat = eval(Pid+'"Odeslat"'+diP);
  EmergeText(Odeslat,'Pokuste se zprávu odeslat po&nbsp;odstranění výše uvedených <span class="valid">problémů</span>.',180);
 }
}