/* Este javascript valida antes de enviar un formulario, comprobando campos obligatorios, y mails bien formados.
Al procesar el formulario, si todo esta correctamente, llama a la funcion formToCookies (definida en cookies.js)
y guarda algunos valores del form para futuras visitas (ver formToCookies en cookies.js).

para funcionar, el formulario que se valide - compruebe tiene que tener las siguientes condiciones:

tiene que tener un boton (NO SUBMIT) que tenga un onClick="enviar(indiceFormulario)", o bien utilizar el método onsubmit="return window.enviar(indiceFormulario),
como evento del elemento FORM. Este último método es el recomendado

tiene que tener los siguientes campos ocultos:
camposObligatorios -> separados por punto y coma, tiene que tener como valor los nombres de los campos obligatorios del form
camposMail -> separados por punto y coma, tiene que tener como valor los campos que esperan una direccion de mail
errorCamposObligatorios -> tiene que tener como valor el mensaje que se mostrara cuando la validacion falle por campos obligatorios vacios
errorCamposMail -> tiene que tener como valor el mensaje que se mostrara cuando la validacion falle por una direccion mail mal formada

*/



function enviar(indiceFormulario) {
    if(validarForm(indiceFormulario)) {
		//enviamos el formulario
    	return true;
    } else {
		return false;
	}
}
        
function validarForm(indiceFormulario) {
     //primero seleccionamos el formulario que vamos a validar en el documento;
    var formulario = window.document.forms[indiceFormulario];
	var camposObligatoriosLlenos = true;
	var eMailsValidos = true;
   
   //ahora, comenzamos comprobando los CAMPOS OBLIGATORIOS (si los hay)
   if(formulario.camposObligatorios && formulario.camposObligatorios.value != "") {
   		//para ello, empezamos creando un array con todos los campos obligatorios que se han indicado en el form
   		//a traves de un campo oculto, llamado "camposObligatorios", cuyo valor seran los nombres de los campos obligatorios
		var camposObligatorios = new Array();
		camposObligatorios = formulario.camposObligatorios.value.split(';');
		//ahora tenemos en cada elemento de la array el nombre del campo que queremos validar como obligatorio
		//necesitamos sustituir el nombre por el valor de ese campo
		for(i=0;i<camposObligatorios.length;i++) {
			camposObligatorios[i] = eval("formulario."+camposObligatorios[i]+".value");
		}

    	//comprobamos en bucle que ninguno de los campos obligatorios este vacio, en cuyo caso, falla la validación.
   		 for (i=0;i<camposObligatorios.length;i++) {
       	 	if (camposObligatorios[i] == "") {
          	 	 camposObligatoriosLlenos = false;
				 window.alert(formulario.errorCamposObligatorios.value);
				 break;
       		 }
   		 }        
  	 }
	
	
	//si hay direcciones de mail a comprobar, comprobamos si son validas
	//las direcciones de mail vienen en un campo oculto llamado "camposMail"
	if(formulario.camposMail && formulario.camposMail.value != "") {
		//para ello, empezamos creando un array con todos los campos mail que se han indicado en el form
		var camposMail = new Array();
		camposMail = formulario.camposMail.value.split(';');
		//ahora tenemos en cada elemento de la array el nombre del campo que queremos validar como obligatorio
		//necesitamos sustituir el nombre por el valor de ese campo
		for(i=0;i<camposMail.length;i++) {
			camposMail[i] = eval("formulario."+camposMail[i]+".value");
		}
		
		//ahora comprobamos que la direccion de correo electronica puede ser una direccion valida
    	//para ello, primero comprobamos que tiene una arroba, y segundo que al menos tiene 1 punto.
    	for(i=0;i<camposMail.length;i++) {
			//la direccion de mail no sera correcta si, no estando vacio el campo (si vacio, entonces es valida porque puede no ser obligatoria)
			//, repito, si no estando vacio el campo, hay una arroba y un punto en la dirección. Podría complicar más la comprobacion, pero esta
			//me vale de momento. Más adelante, mirar con expresiones regulares.
			if(camposMail != "" && (camposMail[i].indexOf("@") == -1 || camposMail[i].indexOf(".") == -1)) {
				eMailsValidos = false;
				window.alert(formulario.errorCamposMail.value + " (" +camposMail[i]+")");
				break;
			}
			
		}
	}
          
    
    //si las comprobaciones realizadas son correctas, entonces devolvemos correcto, sino incorrecto
    var resultado = (camposObligatoriosLlenos == true && eMailsValidos == true) ? true : false;
    return resultado;
        
}

