var IS_NUM_VAL_IDX = 0; var IS_DATE_VAL_IDX = 1; var IS_EMAIL_VAL_IDX = 2; var IS_EURO_VAL_IDX = 3; var IS_DATE_VAL_IDX1 =4; function CheckNumber(obj) { var v = parseInt(obj.value, 10); if(isNaN(v) || v < 0) obj.value = "" + 0; else obj.value = "" + v; return !(isNaN(v) || v < 0); } function CheckEuro(obj) { var v = parseFloat(obj.value); if(isNaN(v) || v < 0) obj.value = ""; else { obj.value = "" + (Math.round(v * 100) / 100); var dotIdx = obj.value.indexOf("."); if(dotIdx == -1) obj.value = obj.value + ".00"; else if(dotIdx == obj.value.length-2) obj.value = obj.value + "0"; } return !(isNaN(v) || v < 0); } function CheckEmail(obj) { var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/; return filter.test(obj.value); } function CheckDate(v) { var oggi = new Date(); // Check basic format if(v.length > 10) return "data"; var a = v.split("/"); //if(a.length != 3 || a[0].length != 2 || a[1].length != 2 || a[2].length != 4) // return "data"; var y = parseInt(a[2], 10); var m = parseInt(a[1], 10); var d = parseInt(a[0], 10); //Controlla che la data immessa sia maggiore della data odierna dataPart = a[1] + '/' + a[0] + '/' + a[2] datay = new Date(dataPart); if (datay < oggi) return "data"; if((isNaN(y) || y < 0) || (isNaN(m) || m < 0) || (isNaN(d) || d < 0)) return "data"; // Check values if(y < 1800 || y > 2999) return "anno"; if(m < 1 || m > 12) return "mese"; if(d < 1) return "giorno"; switch(m) { case 2: var isLeap = ((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0); if((d > 29) || (!isLeap && (d > 28))) return "giorno"; break; case 4, 6, 9, 11: if(d > 30) return "giorno"; break; default: if(d > 31) return "giorno"; } return ""; } function CheckDate1(v) { var oggi = new Date(); // Check basic format if(v.length > 10) return "data"; var a = v.split("/"); //if(a.length != 3 || a[0].length != 2 || a[1].length != 2 || a[2].length != 4) // return "data"; var y = parseInt(a[2], 10); var m = parseInt(a[1], 10); var d = parseInt(a[0], 10); if((isNaN(y) || y < 0) || (isNaN(m) || m < 0) || (isNaN(d) || d < 0)) return "data"; // Check values if(y < 1800 || y > 2999) return "anno"; if(m < 1 || m > 12) return "mese"; if(d < 1) return "giorno"; switch(m) { case 2: var isLeap = ((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0); if((d > 29) || (!isLeap && (d > 28))) return "giorno"; break; case 4, 6, 9, 11: if(d > 30) return "giorno"; break; default: if(d > 31) return "giorno"; } return ""; } /* CheckValue * Descr: returns true on success */ function CheckValue(w, obj, label) { if(obj.value.length == 0) return true; switch(w) { case IS_NUM_VAL_IDX: if(!CheckNumber(obj)) { self.alert("Warning: invalid value in field \"" + label + "\"!"); obj.focus(); obj.select(); return false; } break; case IS_EMAIL_VAL_IDX: if(!CheckEmail(obj)) { self.alert("Attenzione:indirizzo e-mail non valido\n\n" + "(formato richiesto \"username@host.domain\")"); obj.focus(); obj.select(); return false; } break; case IS_EURO_VAL_IDX: if(!CheckEuro(obj)) { self.alert("Warning: invalid Euro value in field \"" + label + "\"!"); obj.focus(); obj.select(); return false; } break; case IS_DATE_VAL_IDX: var err = CheckDate(obj.value); if(err.length != 0) { if (err=='data'){ self.alert("Attenzione: " + label + " non valida!\n\n" + "Scrivere la data nel seguente formato \"gg/mm/aaaa\""); } else { self.alert("Attenzione: " + err + " non valido nel campo \"" + label + "\"!\n\n" + "Scrivere la data nel seguente formato \"gg/mm/aaaa\""); } obj.focus(); obj.value =""; obj.select(); return false; } break; case IS_DATE_VAL_IDX1: var err = CheckDate1(obj.value); if(err.length != 0) { if (err=='data'){ self.alert("Attenzione: " + label + " non valida!\n\n" + "Scrivere la data nel seguente formato \"gg/mm/aaaa\""); } else { self.alert("Attenzione: " + err + " non valido nel campo \"" + label + "\"!\n\n" + "non valido nel campo"); } obj.focus(); obj.value =""; obj.select(); return false; } break; default: return false; } return true; }