/* Javascript - Validar contenido de formularios */

 var campoEnfocado; // variable global que almacena un campo para ponFoco()
 
 // Corrige un problema a la hora de establecer el foco en un campo
 function retardaPonFoco()
 {
  campoEnfocado.focus();
 }
 
 // Pone el foco en un determinado campo
 function ponFoco(campo) // campo del formulario al que queremos asignar el foco
 {
  campoEnfocado = campo; // almacena el campo en una variable global para no perderla en el retardo
  setTimeout("retardaPonFoco()", 150); // retrasa 150ms la ejecución de retardaPonFoco()
 }

 // Valida campos de texto evitando que haya código HTML
 function val_texto (campo,    // campo sobre el que se aplica la validación
                     mantener) // si es 1, mantiene el valor del campo
 {
  var menor=String.fromCharCode(60);
  var mayor=String.fromCharCode(62);
  var comilla=String.fromCharCode(39);
  var comillas=String.fromCharCode(34);
  if (campo.value.indexOf(menor) != -1 || campo.value.indexOf(mayor) != -1 || campo.value.indexOf(comilla) != -1 || campo.value.indexOf(comillas) != -1) // si el texto contiene <, >, ' ó "
  {
   if (document.getElementById("errores")){ // si hay un área de mensajes de error
    document.getElementById("errores").innerHTML = "Caracteres no válidos: "+menor+" "+mayor+" "+comilla+" "+comillas;
    document.getElementById("errores").style.color = "#ff0000";
    document.getElementById("errores").style.textAlign = "left";
    document.getElementById("errores").className = "error_formulario"; // el "duplicado" es para que aplique el estilo a la primera
   }
   if (mantener != 1) { // no se quiere mantener el texto original
    campo.value="";
   }
   ponFoco(campo);
   return false;
  } else {
   if (document.getElementById("errores")){ // si hay un área de mensajes de error
    document.getElementById("errores").innerHTML = "&nbsp;";
   }
   return true;
  }
 }

 // Valida campos de texto evitando que haya código HTML y comprobando la validez como e-mail
 function val_mail (campo,    // campo sobre el que se aplica la validación
                    mantener) // si es 1, mantiene el valor del campo
 {
  var filtro=/^[a-zA-Z](\.*\-*\+*\w)*@(\-*\w\.*)*(\w{2,}\.)+(\w{2,})$/;
  if (campo.value.search(filtro) != 0)
  {
   if (document.getElementById("errores")){ // si hay un área de mensajes de error
    document.getElementById("errores").innerHTML = "Introduzca una dirección de e-mail válida.";
    document.getElementById("errores").style.color = "#ff0000";
    document.getElementById("errores").style.textAlign = "left";
    document.getElementById("errores").className = "error_formulario"; // el "duplicado" es para que aplique el estilo a la primera
   }
   if (mantener != 1) { // no se quiere mantener el texto original
    campo.value="";
   }
   ponFoco(campo);
   return false;
  } else {
   if (document.getElementById("errores")){ // si hay un área de mensajes de error
    document.getElementById("errores").innerHTML = "&nbsp;";
   }
   return true;
  }
 }
 
 // Valida campos de texto evitando que haya código HTML y comprobando la validez como fecha en formato AAAA-MM-DD (en PHP, "Y-m-d")
 function val_fecha (campo,    // campo sobre el que se aplica la validación
                    mantener) // si es 1, mantiene el valor del campo
 {
  var filtro=/([1-2][0-9]{3})-([0-1][0-9])-([0-3][0-9])/;
  if (campo.value.search(filtro) != 0)
  {
   if (document.getElementById("errores")){ // si hay un área de mensajes de error
    document.getElementById("errores").innerHTML = "La fecha debe estar en formato AAAA-MM-DD.";
    document.getElementById("errores").style.color = "#ff0000";
    document.getElementById("errores").style.textAlign = "left";
    document.getElementById("errores").className = "error_formulario"; // el "duplicado" es para que aplique el estilo a la primera
   }
   if (mantener != 1) { // no se quiere mantener el texto original
    campo.value="";
   }
   ponFoco(campo);
   return false;
  } else {
   if (document.getElementById("errores")){ // si hay un área de mensajes de error
    document.getElementById("errores").innerHTML = "&nbsp;";
   }
   return true;
  }
 }
 
 // Valida campos de texto evitando que haya código HTML y comprobando que la contraseña sea aceptable
 function val_contra(campo)     // campo sobre el que se aplica la validación
 {
  var menor = String.fromCharCode(60);
  var mayor = String.fromCharCode(62);
  var comilla = String.fromCharCode(39);
  var comillas = String.fromCharCode(34);
  var validado = true;
  if (campo.value.indexOf(menor) != -1 || campo.value.indexOf(mayor) != -1 || campo.value.indexOf(comilla) != -1 || campo.value.indexOf(comillas) != -1) // si el texto contiene <, >, ' ó "
  {
   if (document.getElementById("errores")){ // si hay un área de mensajes de error
    document.getElementById("errores").innerHTML = "Caracteres no válidos: "+menor+" "+mayor+" "+comilla+" "+comillas;
    document.getElementById("errores").style.color = "#ff0000";
    document.getElementById("errores").style.textAlign = "left";
    document.getElementById("errores").className = "error_formulario"; // el "duplicado" es para que aplique el estilo a la primera
   }
   campo.value="";
   ponFoco(campo);
   validado = false;
  }
  if (campo.value.length < 6) // si la contraseña tiene menos de 6 caracteres
  {
   if (document.getElementById("errores")){ // si hay un área de mensajes de error
    document.getElementById("errores").innerHTML = "La contraseña debe tener al menos 6 caracteres.";
    document.getElementById("errores").style.color = "#ff0000";
    document.getElementById("errores").style.textAlign = "left";
    document.getElementById("errores").className = "error_formulario"; // el "duplicado" es para que aplique el estilo a la primera
   }
   campo.value="";
   ponFoco(campo);
   validado = false;
  }
  if (validado){
   if (document.getElementById("errores")){ // si hay un área de mensajes de error
    document.getElementById("errores").innerHTML = "&nbsp;";
   }
   return true;
  } else {
   return false;
  }
 }
 
 function borra_texto_defecto(campo) // Borra el texto por defecto en el campo indicado
 {
  if (campo.value.indexOf("(") != -1 || campo.value.indexOf(")") != -1) // Si el campo contiene algún paréntesis
  {
   campo.value="";
   ponFoco(campo);
  }
 }
 
/* Fin - Validar contenido de formularios */
