Mira te lo arme algo mas resumido el tema de la validacion aver que te parece yo lo probe y funciona lo mas bien:
Arme la funcion de una forma un tanto mas resumida y mas prolija si se quiere mira te la voy comentando :D...
Código PHP:
function validar_formulario() {
// en las primeras 2 lineas creo 2 variables para imprimir errores de validacion
// un array que colecta errores y una cadena donde se concatenan para que luego
// se muestran en un alert
var cadenaErrores = "Error al llenar los siguientes campos:\n";
var errores = new Array();
// creo una variable que llame al formulario registro
var elForm = document.registro;
// aca hago un bucle que recorra todos los elementos del formulario y los valide
// de acuerdo a su tipo para esto hago un switch dentro del for
for (var i=0; i<elForm.elements.length; i++) {
// en caso que sea tipo text o password pregunto por el largo del texto
// si es igual a 0 insertara el nombre de este campo en el array de errores
// para luego informar al usuario donde se equivoco
switch (elForm.elements[i].type) {
case 'text':
if (elForm.elements[i].value.length == 0) {errores.push(elForm.elements[i].name)}
break;
case 'password':
if (elForm.elements[i].value.length == 0) {errores.push(elForm.elements[i].name)}
break;
// si es un select en lugar del tamaño del texto pregunto por el numero de opcion
// seleccionado si es 0 se agrega al array de errores
case 'select-one':
if (elForm.elements[i].selectedIndex == 0) {errores.push(elForm.elements[i].name)}
break;
}
}
// Por ultimo pregunto si el tamaño del array errores es distinto de 0
// de ser esto asi quiere decir que al menos hubo un error por lo cual no se puede
// hacer el submit entonces muestro los errores primero uniendolos a la cadena
// que declare antes llamada cadenaErrores y luego de concatenar hago el alert
// ya fuera del bucle for.
if (errores.length != 0) {
for (var i=0; i<errores.length; i++) {
cadenaErrores += errores[i] + "\n";
}
alert(cadenaErrores);
// en el else si el tamaño del array errores es 0 esto implica que no hubo errores
// y ahi recien si se envian los datos por submit por lo cual no tienes que filtrar
// los datos luego con php :D
}else{
elForm.submit();
}
}
En el codigo html lo unico que hice fue sacarle al form la opcion onSubmit y al boton le cambie el tipo por type button ya que vos no vas a validar el formulario con el boton sino con la funcion javascript por lo cual lo unico que queremos que haga el boton es llamar a esa funcion y que en todo caso ella se encarga de hacer el submit :D... estas 2 lineas son las que modifique...
Código HTML:
<form name="registro" action="enviarRegistro.php" method="POST" enctype="multipart/form-data">
<input type="button" value="Agregar" onclick="validar_formulario();">
Salu2 espero te sirva