// FUNCION DE CONFIRMACION DE ENVIO DE FORMULARIOS
function confirmacion(nombreFormulario,texto) {
  if (confirm(texto)) {
	formulario = document.forms[nombreFormulario];
	formulario.submit();
  }
}

/* --------------------------------------------------------------
  Funcion VerificarSelect.
  Parametros:
    - Control <SELECT>
    - Nombre del control
    - Valor mínimo de elementos seleccionables
    - Valor máximo de elementos seleccionables

  Si el número de valores seleccionados no se encuentra en el
  intervalo indicado, se muestra un error y el cursor permanece
  en el control.
  -------------------------------------------------------------- */
function VerificarSelect(Select, Nombre, Min, Max) {

  var NumSel = 0; // Número de elementos seleccionado

  if(!Select || !Select.options) {
    return(true);
  }

  for(var i = 0; i < Select.options.length; i++) {
    if(Select.options[i].selected)
      NumSel++;
  }
  // Comprobar si se ha seleccionado un número de elementos correcto
  if(NumSel < Min || NumSel > Max) {
    if(Min == Max)
      alert("Debe seleccionar " + Min + " valor(es) para " + Nombre);
    else
      alert("Debe seleccionar entre " + Min + " y " + Max + " valores para " + Nombre);
    Select.focus();
    return(false);
  }
  return(true);
}

/* --------------------------------------------------------------
  Funcion NotNull.
  Parametros:
    - Control
    - Nombre del control

  Comprueba que el usuario ha proporcionado un valor para el control
  indicado.
  -------------------------------------------------------------- */
function NotNull(Control, Nombre) {
  if(!Control) {
    return(false);
  }
  if(Control.value == "") {
    alert("Debe indicar un valor para el campo '" + Nombre + "'.");
    Control.focus();
    return(false);
  }
  return(true);
}

/* --------------------------------------------------------------
  Funcion IsNumeric.
  Parametros:
    - Control
    - Nombre del control

  Comprueba que el valor indicado en el campo es numérico.
  -------------------------------------------------------------- */
function IsNumeric(Control, Nombre) {
  if(NotNull(Control, Nombre)) {
    for(var i = 0; i < Control.value.length; i++) {
      numero = Control.value.substring(i, i+1);
      if(numero < "0" || numero > "9") {
        alert("Indique un valor numérico para el campo '" + Nombre + "'");
        Control.focus();
        return(false);
      }
    }
  }
  else
    return(false);
  return(true);
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Caracteres y dígitos ASCII 7 bits (ej: "asQWEfd98")
function EsCadenaASCII7(cadena) {
var eregExcluir = /[^a-z0-9]/i;
  return !cadena.match(eregExcluir);
}

// Caracteres y dígitos ASCII 7 bits (ej: "asQWEfd98")
function EsCadenaASCII7Ext(cadena) {
var eregExcluir = /[^a-z0-9\-\_\. ]/i;
  return !cadena.match(eregExcluir);
}

// Caracteres y signos de puntuación y espaciado (ej: "aA.dr-X ss"  --  "HispaVista S.L.")
function EsCadenaNombrePropio(cadena) {
var eregExcluir = /[^a-záÁéÉíÍóÓúÚàÀèÈìÌòÒùÙâÂêÊîÎôÔûÛäÄëËïÏöÖüÜçÇñÑ\'\-\_\. ]/i;
  return !cadena.match(eregExcluir);
}

// Números - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Cadena numérica, sólo dígitos (ej: "343523562"))
function EsCadenaNumerica(cadena) {
var eregExcluir = /[^0-9]/;
  return !cadena.match(eregExcluir);
}


// Internet - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function EsWeb(cadena) { // Web sin "http://"
var eregHTTP =/^([\w\-\_]+\.)+[a-zA-Z]{2,3}(:\d+)?(\/[^ \/]*)*$/;
  return (cadena.match(eregHTTP));
}

// Dirección e-mail
function EsMail(cadena) {
// var eregMail = /^[\w\-]+\.?[\w\-]+\@[\w\-]+\.?[\w\-]+\.[\w\-]+$/;
var eregMail = /^[\w\-\_]+\.?[\w\-\_]+\.?[\w\-\_]+\@([\w\-\_]+\.)+[a-zA-Z]{2,3}$/;
  return cadena.match(eregMail) && cadena.length >= 6 && cadena.length <= 100;
}

// Usuarios&claves - - - - - - - - - - - - - - - - - - - - - - - - -
// Caracteres y dígitos ASCII 7 bits (ej: "asQWEfd98")
function EsCadenaPassword(cadena) {
var eregExcluir = /[^a-z0-9\_\-\.]/i;
  return !cadena.match(eregExcluir);
}

// Exclusiones - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Caracteres expresamente excluidos.
function ContieneExcluidos(cadena) {
var eregExcluir = /[\"\<\>\']+/;
  return cadena.match(eregExcluir);
}

// Estándar - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function EsLineaEstandar(cadena) {
var eregExcluir = /[\'\"\<\>\n\t\f\r]/i;
  return !cadena.match(eregExcluir);
}

function EsTextoEstandar(cadena) {
//var eregExcluir = /[^a-zà-äçè-ïñ-öù-ü0-9ºª\(\)\-\_\.\&\:\/,; \n\t\r\f]/i;
var eregExcluir = /[\'\"\<\>]/i;
  return !cadena.match(eregExcluir);
}

// -----------------------------------------------------------------------------------------
// Verificar* ------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------
// Comprueba que el campo indicado contiene un texto sin caracteres problemáticos.
function VerificarNoExcluidos(Control, Nombre) {
  if (Control.value.length) {
    if (ContieneExcluidos(Control.value)) {
      alert("Caracteres no permitidos.\nIndique un valor correcto para '" + Nombre + "'.");
      Control.focus();
      return false;
    }
    else return true;
  }
  else {
    alert("Dato requerido:\n\nDebe indicar un valor para el campo para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
}

// Comprueba que el campo indicado contiene un nombre propio sintácticamente correcto (nombres, apellidos, poblaciones, ...).
function VerificarNombrePropio(Control, Nombre, lMax) {
  if (Control.value.length) {
    if (!EsCadenaNombrePropio(Control.value) || Control.value.length>lMax) {
      alert("Indique un valor correcto de nombre propio para '" + Nombre + "'.");
      Control.focus();
      return false;
    }
    else return true;
  }
  else {
    alert("Dato requerido:\n\nDebe indicar un nombre propio para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
}

// Comprueba que el campo indicado contiene un número de teléfono sintácticamente correcto.
function VerificarTelefono(Control, Nombre, lMax) {
  if (Control.value.length) {
    if (!EsCadenaNumerica(Control.value) ||
        (Control.value.length < 6)       ||
        (Control.value.length > lMax)) {
      alert("Indique un valor correcto de teléfono para '" + Nombre + "'.");
      Control.focus();
      return false;
    }
    else return true;
  }
  else {
    alert("Dato requerido:\n\nDebe indicar número de teléfono para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
}

// Comprueba que el campo indicado contiene un código postal sintácticamente correcto.
function VerificarCodpostal(Control, Nombre, lMax) {
  if (Control.value.length) {
    if (!EsCadenaASCII7(Control.value) || (Control.value.length>lMax)) {
      alert("Indique un valor correcto de código postal para '" + Nombre + "'.");
      Control.focus();
      return false;
    }
    else return true;
  }
  else {
    alert("Dato requerido:\n\nDebe indicar un código postal para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
}

// Comprueba que el campo indicado contiene un número entero positivo sintácticamente correcto.
function VerificarNumeroPositivo(Control, Nombre, lMax) {
  if (Control.value.length) {
    if (!EsCadenaNumerica(Control.value) ||
        Control.value.length>lMax) {
      alert("Indique un valor numérico correcto para '" + Nombre + "'.");
      Control.focus();
      return false;
    }
    else return true;
  }
  else {
    alert("Dato requerido:\n\nDebe indicar un valor para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
}

// Comprueba que el campo indicado contiene un CIF sintácticamente correcto.
function VerificarCIF(Control, Nombre) {
var eregCIF    = /^[a-z]{1}[0-9]{7}[0-9klm]{1}$/i;

  if (Control.value.length) {
    if (!Control.value.match(eregCIF) || Control.value.length!=9) {
      alert("Indique un valor correcto de CIF para '" + Nombre + "'.");
      Control.focus();
      return false;
    }
    else return true;
  }
  else {
    alert("Dato requerido:\n\nDebe indicar un valor para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
}

// Comprueba que el campo indicado contiene un número de cuenta bancaria.
function VerificarCuentaBancaria(Control, Nombre, lMin, lMax) {
  if (Control.value.length) {
    if (!EsCadenaNumerica(Control.value) ||
        Control.value.length < lMin      ||
        Control.value.length > lMax      ) {
      alert("Indique un valor correcto de cuenta para '" + Nombre + "'.");
      Control.focus();
      return false;
    }
    else return true;
  }
  else {
    alert("Dato requerido:\n\nDebe indicar un valor para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
}

// ---------------------------------------------------------------------------
// Identificación de usuarios ------------------------------------------------
// ---------------------------------------------------------------------------
// Comprueba que el campo indicado contiene un identificador de usuario sintácticamente correcto.
function VerificarUsuario(Control, Nombre, lMax) {
  if (Control.value.length) {
    if (!EsCadenaPassword(Control.value) ||
        Control.value.length < 4           ||
        Control.value.length > lMax        ) {
      alert("Indique un valor correcto de usuario para '" + Nombre + "'.");
      Control.focus();
      return false;
    }
    else return true;
  }
  else {
    alert("Dato requerido:\n\nDebe indicar un identificador de usuario para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
}

// Comprueba que el campo indicado contiene un password sintácticamente correcto.
function VerificarPassword(Control, Nombre, lMax) {
  if (Control.value.length) {
    if (!EsCadenaPassword(Control.value) ||
        Control.value.length < 4         ||
        Control.value.length > lMax      ) {
      alert("Indique un valor correcto de clave para '" + Nombre + "'.");
      Control.focus();
      return false;
    }
    else return true;
  }
  else {
    alert("Dato requerido:\n\nDebe indicar una clave para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
}

// ---------------------------------------------------------------------------
// Internet ------------------------------------------------------------------
// ---------------------------------------------------------------------------
// Comprueba que el campo indicado contiene una dirección de web sintácticamente correcta.
function VerificarMail(Control, Nombre, lMax) {
  if(NotNull(Control, Nombre)) {
    lEmail = Control.value.toLowerCase();
    // - - - - - -
    if (!EsMail(Control.value) || Control.value.length>lMax) {
      alert("Indique un valor correcto de email para '" + Nombre + "'.\nPor ejemplo:  minombre@midominio.com");
      Control.focus();
      return false;
    }
    // - - - - - -
  }
  else
    return false;

  return true;
}

// Comprueba que el campo indicado contiene una dirección de web sintácticamente correcta.
function VerificarWeb(Control, Nombre, lMax) {
  if (Control.value.length) {
    if (!EsWeb(Control.value) || Control.value.length>lMax) {
      alert("Indique un valor correcto de web para '" + Nombre + "'.\nPor ejemplo:  www.trabajos.com");
      Control.focus();
      return false;
    }
    else return true;
  }
  else {
    alert("Dato requerido:\n\nDebe indicar un valor de URL para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
}

// ---------------------------------------------------------------------------
// Textos estándar -----------------------------------------------------------
// ---------------------------------------------------------------------------
function VerificarTextoEstandar(Control, Nombre, lMax) {
var caracteres  = "\'\"\<\>";
var encontrados = "";
var errores     = "";

  eregExcluir = new Array(5);
  eregExcluir[1] = /[\']/;  eregExcluir[2] = /[\"]/;
  eregExcluir[3] = /[\<]/;  eregExcluir[4] = /[\>]/;

  if (Control.value.length == 0) {
    alert("Dato requerido:\n\nDebe introducir la información correspondiente solicitada para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
  else {
    if (Control.value.length>lMax) {
       alert("El texto introducido excede de la longitud máxima permitida para '" + Nombre + "'.");
       Control.focus();
       return false;
    }
    else {
       if (!EsTextoEstandar(Control.value)) {
  	  for (i=1; i<caracteres.length+1; i++) {
  		if (Control.value.match(eregExcluir[i])) {
		  if (encontrados.length>0) encontrados += ", ";
  		  encontrados += caracteres.substr(i-1,1);
  		}
  	  }
  
  	  if (encontrados.length>0) {
  		errores = "El texto contiene caracteres no permitidos ("+encontrados+").\n";
  	  }

          alert(errores + "Indique un valor correcto para '" + Nombre + "'.");
          Control.focus();
          return false;
       }
    }
  }

  return VerificarNoExcluidos(Control, Nombre);
}

function VerificarLineaEstandar(Control, Nombre, lMax) {
var caracteres  = "\'\"\<\>\n\t\f\r";
var encontrados = "";
var errores     = "";

  eregExcluir = new Array(10);
  eregExcluir[1] = /[\']/;  eregExcluir[2] = /[\"]/;
  eregExcluir[3] = /[\<]/;  eregExcluir[4] = /[\>]/;
  eregExcluir[5] = /[\n]/;  eregExcluir[6] = /[\t]/;
  eregExcluir[7] = /[\f]/;  eregExcluir[8] = /[\r]/;


  if (Control.value.length == 0) {
    alert("Dato requerido:\n\nDebe introducir la información correspondiente solicitada para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
  else if (!EsLineaEstandar(Control.value) || Control.value.length>lMax) {
  	  for (i=1; i<caracteres.length+1; i++) {
  		if (Control.value.match(eregExcluir[i])) {
		  if (encontrados.length>0) encontrados += ", ";
  		  encontrados += caracteres.substr(i-1,1);
  		}
  	  }
  
  	  if (encontrados.length>0) {
  		errores = "El texto contiene caracteres no permitidos ("+encontrados+").\n";
  	  }

          alert("Indique un valor correcto para '" + Nombre + "'.");
          Control.focus();
          return false;
       }

  return true;
}

// ---------------------------------------------------------------------------
// Textarea, combo, radio ----------------------------------------------------
// ---------------------------------------------------------------------------
function VerificarTextarea(Control, Nombre) {
  if (Control.value.length == 0) {
    alert("Dato requerido:\n\nDebe introducir la información correspondiente solicitada para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
  else return VerificarNoExcluidos(Control, Nombre);
}

// Comprueba que en el campo combo indicado está seleccionada una opción>0.
function VerificarCombo(Control, Nombre) {
  if (Control.selectedIndex == 0) {
    alert("Dato requerido:\n\nDebe seleccionar un valor de la lista para '" + Nombre + "'.");
    Control.focus();
    return false;
  }
  else return true;
}

// Comprueba que en el grupo de radio buttons indicado está seleccionada una opción.
function VerificarRadio(Control, Nombre) {
var seleccionado = false;

  for (var i=0; i<Control.length; i++) {
    if (Control[i].checked) seleccionado = true;
  }
    
  if (!seleccionado) {
    alert("Dato requerido:\n\nDebe marcar una de las opciones mostradas para '" + Nombre + "'.");
    return false;
  }
  else return true;
}

/*
// Expresiones regulares (deteccion de caracteres a excluir) ------------------
var eregExcluirEnNombre    = /[^a-zA-Z]{1}[^a-zA-Z\-\_ ]/i; // comenzar por carácter, ignore case
var eregExcluirEnApellidos = /[^a-zA-Z\-\_\. ]/i;
var eregExcluirEnPoblacion = /[^a-z\-\_\. ]/i;
var eregExcluirEnDireccion = /[\"\=\?\¿\%]/i;
var eregExcluirEnTelefono  = /[^0-9]/;
var eregExcluirEnCodpostal = /[^0-9]/;
var eregExcluirEnPaginaweb = /[^a-zA-Z0-9\-\_\.\?\&\:\=\/]/i;

function VerificarControl(Control, Nombre, eregExcluir) {
  if (Control.value.length) {
    if (Control.value.match(eregExcluir)) {
      alert('Error('+Nombre+'): Valor incorrecto.\nPor favor, verifique: '+Control.value);
      Control.focus();
      return false;
    }
    else return true;
  }
  else { // longitud erronea
    alert('Dato requerido:\n\n\tDebe indicar un valor para el campo '+Nombre);
    Control.focus();
    return false;
  }
}

// ------------------------------------------------------------------
// Esta formula es para el NIF, no para el CIF
// CIF: X99999999  --> letraCif + numeroCif
function letraCif(sNumeroCif) {
var sCifString = 'trwagmyfpdxbnjzsqvhlcket'; // 0..23
var i = parseInt(sNumeroCif, 10) % 23;

  return sCifString.substr(i, 1);
}


function VerificarCif(Control, Nombre) {
var sLetraCif  = Control.value.substr(0,1).toLowerCase();
var sNumeroCif = Control.value.substr(1);

var eregExcluirEnNumero = /[^0-9]/i;

  if (Control.value.length == 0) {
    alert('Dato requerido:\nDebe indicar un valor para el campo '+Nombre);
    Control.focus();
    return false;
  }

  if (sNumeroCif.match(eregExcluirEnNumero)) { // no es numero
    alert('CIF incorrecto (1):\nDebe indicar un valor correcto para el campo '+Nombre);
    Control.focus();
    return false;
  }

  if (sLetraCif != letraCif(sNumeroCif)) {
    alert('CIF incorrecto (2):\nDebe indicar un valor correcto para el campo '+Nombre);
    Control.focus();
    return false;
  }

  return true;
}
*/


/******************************************************************************
  Funcion VerificarMail.
  Parametros:
    - Control
    - Nombre del control

  Comprueba que el campo indicado contiene una dirección de mail
  sintácticamente correcta.
*******************************************************************************/
/*
function VerificarMail(Control, Nombre) {

  if(NotNull(Control, Nombre)) {
    lEmail = Control.value.toLowerCase();
    if(lEmail.indexOf("@trabajos.com") != -1) {
      alert("La dirección de mail '" + Control.value + "' no es correcta.\n" +
            "A continuación se abrirá una ventana donde podrá obtener una dirección de mail gratuíta.\n" +
            "Una vez que haya registrado su cuenta de correo, utilícela como valor del campo 'Contacto " +
            "Email' en el formulario de alta de Trabajos.com que estaba rellenando.");
      Control.focus();
      lvEmail = window.open("http://correo.hispavista.com/Signup.htMl");
      lvEmail.focus();
      return(false);
    }
    if(Control.value.indexOf("@") == -1 || Control.value.indexOf(".") == -1 ||
       Control.value.lastIndexOf("@") == 0 ||
       Control.value.lastIndexOf(".") == 0 ||
       Control.value.lastIndexOf("@") == Control.value.length - 1 ||
       Control.value.lastIndexOf(".") == Control.value.length - 1 ||
       Control.value.lastIndexOf("@") > Control.value.lastIndexOf(".") ||
       Control.value.indexOf(".@") != -1 || Control.value.indexOf("@.") != -1 ||
       Control.value.indexOf("..") != -1 || Control.value.indexOf("@@") != -1 ||
       Control.value.indexOf("http") != -1 || Control.value.length < 8) {
      alert("Indique un valor correcto de email para '" + Nombre + "'.\nPor ejemplo:  minombre@midominio.com");
      Control.focus();
      return(false);
    }
    for(j = 0; j < Control.value.length; j++) {
      caracter = Control.value.substring(j, j+1);
      if(!((caracter >= "a" && caracter <= "z") ||
           (caracter >= "A" && caracter <= "Z") ||
           (caracter >= "0" && caracter <= "9") ||
           (caracter == "-") || (caracter == "_") ||
           (caracter == "@") || (caracter == "."))) {
        alert("Indique un valor correcto de email para '" + Nombre + "'.\nPor ejemplo:  minombre@midominio.com");
        Control.focus();
        return(false);
      }
    }
  }
  else
    return(false);

  return(true);
}
*/


