He encontrado una "funcioncita" que valida ambos
function validaNif2(cadenaNif)
{
var cadenaNif2 = cadenaNif.value;
alert (cadenaNif2);
var valoresNif= new Array ("0","1","2","3","4","5","6","7","8","9","K","L","X");
var valoresCif= new Array ("A","B","C","D","E","F","G","H","N","P","Q","S");
var controlNif = new Array ("T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E");
var controlCifLetras = new Array ("A","B","C","D","E","F","G","H","I","J");
//Si lleva guiones o espacios en blanco, error
for(var i=0;i < cadenaNif2.length;i++){
var car = cadenaNif2.substring(i,i+1);
if (car == "" || car== "-" || car == " " || car == "."){
alert ("Campo no válido");
cadenaNif.select();
//return 10; //Lleva punto, guión o espacio
}
}
//if (cadenaNif2.length != 9) return 1; //EL nif no tiene la longitud adecuada.
//caracterControl=cadenaNif2.substring(8,9).toUpperCase();
caracterControl=cadenaNif2.substring(cadenaNif2.length-1,cadenaNif2.length).toUpperCase();%0