Ce lahko kksn nezakrnel programer tole validacijo pogleda - cez tole moram pridt :P
case "regcode":
if (fieldDis == false) {
var cf = fieldValue;
var validi, i, s, set1, set2, setpari, setdisp;
if (cf == '') {
fieldObj.style.border = highlight;
regcode++;
break;
}
cf = cf.toUpperCase();
if (cf.length != 16) {
fieldObj.style.border = highlight;
regcode++;
break;
}
validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for (i = 0; i < 16; i++) {
if (validi.indexOf(cf.charAt(i)) == -1) {
fieldObj.style.border = highlight;
regcode++;
break;
}
}
set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
s = 0;
for (i = 1; i <= 13; i += 2) {
s += setpari.indexOf(set2.charAt(set1.indexOf(cf.charAt(i))));
}
for (i = 0; i <= 14; i += 2) {
s += setdisp.indexOf(set2.charAt(set1.indexOf(cf.charAt(i))));
}
if (s % 26 != cf.charCodeAt(15) - 'A'.charCodeAt(0)) {
fieldObj.style.border = highlight;
regcode++;
break;
}
array_omocodia = [];
array_omocodia[0] = 'L';
array_omocodia[1] = 'M';
array_omocodia[2] = 'N';
array_omocodia[3] = 'P';
array_omocodia[4] = 'Q';
array_omocodia[5] = 'R';
array_omocodia[6] = 'S';
array_omocodia[7] = 'T';
array_omocodia[8] = 'U';
array_omocodia[9] = 'V';
array_omocodia_rev = [];
array_omocodia_rev['L'] = 0;
array_omocodia_rev['M'] = 1;
array_omocodia_rev['N'] = 2;
array_omocodia_rev['P'] = 3;
array_omocodia_rev['Q'] = 4;
array_omocodia_rev['R'] = 5;
array_omocodia_rev['S'] = 6;
array_omocodia_rev['T'] = 7;
array_omocodia_rev['U'] = 8;
array_omocodia_rev['V'] = 9;
cf = fieldValue.toUpperCase();
cf_chk = fieldValue.toUpperCase();
//re = new RegExp("^[A-Z]{6}[0-9]{2}[ABCDEHLMPRST]{1}[0-9]{2}[A-Z]{1}[0-9]{3}[A-Z]{1}$");
re = new RegExp("^[A-Z]{6}[LMNPQRSTUV0-9]{2}[ABCDEHLMPRST]{1}[LMNPQRSTUV0-9]{2}[A-Z]{1}[LMNPQRSTUV0-9]{3}[A-Z]{1}$");
//alert('TEST');
//var i = 0;
// controllo per omocodia, controllo dal carattere 7 al 15, partendo da dx
for(i = 14; i >= 6; i--) {
//alert(i);
//alert(cf*);
// salto i caratteri alfabetici 12 e 9
if((i != 11) && (i != 8)) {
// se non è un intero, verifico che sia presente nell'array omocodia, e sostituisco col valore
// corrispondente nel codice per il controllo dell'etĂ
//alert(isInt(cf*));
if(isInt(cf*) == false) {
//alert(array_omocodia.indexOf(cf*));
if(array_omocodia.indexOf(cf*) > 0) {
//alert('test in');
cf_chk = replaceOneChar(cf_chk,array_omocodia_rev[cf*],i);
}
else {
return false;
}
}
}
}
//alert('test2');
/*
* LEGENDA MESI
* A: Gennaio
* B: Febbraio
* C: Marzo
* D: Aprile
* E: Maggio
* H: Giugno
* L: Luglio
* M: Agosto
* P: Settembre
* R: Ottobre
* S: Novembre
* T: Dicembre
*/
mm = '';
gg = cf.substr(9,2);
mm_temp = cf.substr(8,1);
aa = 19+cf.substr(6,2);
switch(mm_temp) {
case 'A':
mm = '01';
break;
case 'B':
mm = '02';
break;
case 'C':
mm = '03';
break;
case 'D':
mm = '04';
break;
case 'E':
mm = '05';
break;
case 'H':
mm = '06';
break;
case 'L':
mm = '07';
break;
case 'M':
mm = '08';
break;
case 'P':
mm = '09';
break;
case 'R':
mm = '10';
break;
case 'S':
mm = '11';
break;
case 'T':
mm = '12';
break;
}
var data = new Date();
var gg_cur, mm_cur, aa_cur;
gg_cur = data.getDate();
if((data.getMonth()+1)<10) {
mm_cur = '0'+(data.getMonth()+1);
}
else {
mm_cur = data.getMonth()+1;
}
if(data.getYear()<1900)
aa_cur = data.getYear()+1900;
if (!cf.match(re)) {
fieldObj.style.border = highlight;
regcode++;
}
var aa_curstr = aa_cur+'';
if(cf.substr(6,2)<=parseInt(aa_curstr.substr(2,2))) {
fieldObj.style.border = highlight;
underage++;
}
else if((aa_cur-aa)<18) {
fieldObj.style.border = highlight;
underage++;
}
else if((aa_cur-aa)==18) {
if(mm_cur<mm) {
fieldObj.style.border = highlight;
underage++;
}
else if(mm_cur==mm) {
if(gg_cur<gg) {
fieldObj.style.border = highlight;
underage++;
}
}
}
}
break;******