function isNumeric(n) { var number = '0'; var longi = n.length; for (var i = 0; i < longi; i++) { number = n.charAt(i); if (number >= '0' && number <= '9') continue; else return false; } return true; } function bisestile (anno) { return ( (anno % 4 == 0 && anno % 100 != 0) || (anno % 400 == 0) ); } function isLogical (gg, mm, aaaa) { var MM = new Array(0,1,2,3,4,5,6,7,8,9,10,11,12); var GG = new Array(00,31,28,31,30,31,30,31,31,30,31,30,31); // Il giorno non deve essere < 1 || > 31 if ( (gg < 1) || (gg > 31) ) return 1; // Il mese non deve essere < 1 && > 12 else if ( (mm < 1) || (mm > 12) ) return 2; // Se vero l'anno Utente e' Bisestile e il mese e' Febbraio else if ( bisestile(aaaa) && (mm == 2) ) { if ( gg > 29 ) return 5; return 0; } else if (gg > GG[mm]) { if (mm == 2) return 4; else return 5; } else return 0; } /************************************************************* Funzione che verifica la lunghezza della stringa, il formato, la corretteza logica... ************************************************************/ function isDate (DATA) { var gg = DATA.value.substring(0,2); // '02' var token1 = DATA.value.substring(2,3); // '/ -' var mm = DATA.value.substring(3,5); // '08' var token2 = DATA.value.substring(5,6); // '/ -' var aaaa = DATA.value.substring(6,10);// '1971' if (DATA.value.length != 10) { alert("O formato de data é: dd/mm/aaaa, dd-mm-aaaa."); DATA.focus(); return false; } else if ((token1 != "/") && (token1 != "-")) { alert("O formato de data é: dd/mm/aaaa, dd-mm-aaaa."); DATA.focus(); return false; } else if ((token2 != "/") && (token2 != "-")) { alert("O formato de data é: dd/mm/aaaa, dd-mm-aaaa."); DATA.focus(); return false; } else if (token1 != token2) { alert("O formato de data é: dd/mm/aaaa, dd-mm-aaaa."); DATA.focus(); return false; } else if (!isNumeric(gg)) { alert("O día non é un valor numérico."); DATA.focus(); return false; } else if (!isNumeric(mm)) { alert("O mes non é un valor numérico."); DATA.focus(); return false; } else if (!isNumeric(aaaa)) { alert("O ano non é un valor numérico."); DATA.focus(); return false; } else { var g = parseInt(gg,10); var m = parseInt(mm,10); var a = parseInt(aaaa,10); var error=isLogical(g,m,a); if (error == 1) { alert("O día non é válido: " + gg); DATA.focus(); return false; } else if (error == 2) { alert("O mes non é válido: " + mm); DATA.focus(); return false; } else if (error == 4) { alert("A data non é correcta porque o ano non é bisesto: " + aaaa); DATA.focus(); return false; } else if (error == 5) { alert("A data non é correcta porque o día: " + gg + "Non é coherente co mes : " + mm); DATA.focus(); return false; } else return true; } return true; } function fechaActual(data) { var fecha = new Date (); var dia = fecha.getDate(); if (dia < 10) dia = '0'+dia; var mes = fecha.getMonth ()+1; if (mes < 10) mes = '0'+mes; var anio = fecha.getYear(); if(!document.all) // Para Netscape anio=anio+1900; else if (anio >= 80 && anio <= 99) anio = '19' + anio; if (data.value.length=='') data.value=dia+'/'+mes+'/'+anio; else data.value=''; }