//-------------------------------------------------------------------------------------------
// COMPROBAR TEXTO
// Función que comprueba que la caja de texto pasada como parámetro no sea nula ni esté vacia
//-------------------------------------------------------------------------------------------
function campoVacio(caja)
{
   correcto=true;

	if (caja.value=='' || caja.value==null)
	{
		correcto=false;
	}

	return(correcto);
}

//------------------------------------------------------------------------------------------------------------
// COMPROBAR TEXTO
// Función que evita que se introduzcan en los campos de texto caracteres que puedan romper una sentencia SQL,
// como las comillas simples
//------------------------------------------------------------------------------------------------------------
function comprobarTexto(evt)
{
  var ns = ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) >= 4));

  if (ns)
  {
     if (evt.which == 39 || evt.which == 34)
     {
         return false;
     }
  }
  else
  {
     if (evt.keyCode == 39 || evt.keyCode == 34)
     {
         return false;
     }
  }
  return true;
}

//--------------------------------------------------------------------------------------------
// COMPROBAR NATURAL
// Función que comprueba que la caja de texto pasada como parámetro contiene un número natural
//--------------------------------------------------------------------------------------------
function comprobarNatural(evt)
{
  var ns = ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) >= 4));

  if (ns)
  {
     if ((evt.which > 47 && evt.which < 58) || evt.which == 8 || evt.which == 9 || evt.which == 127)
     {
        return true;
     }
  }
  else
  {
     if ((evt.keyCode > 47 && evt.keyCode < 58) || evt.keyCode == 8 || evt.keyCode == 9 || evt.keyCode == 127)
     {
        return true;
     }
  }
  return false;
}

//--------------------------------------------------------------------------------------------
// COMPROBAR DECIMAL
// Función que comprueba que la caja de texto pasada como parámetro contiene un número decimal
//
// El caracter para distinguir la parte decimal de la entera es el PUNTO (ASCII 46), para evitar
// problemas en las sentencias SQL.
//--------------------------------------------------------------------------------------------
function comprobarDecimal(evt, campo)
{
  var ns = ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) >= 4));

  if (ns)
  {
     if ((evt.which > 47 && evt.which < 58) || evt.which == 8 || evt.which == 9 ||(evt.which == 46 && campo.value.indexOf(".") == -1 && campo.value.length > 0))
     {
        return true;
     }
  }
  else
  {
     if ((evt.keyCode > 47 && evt.keyCode < 58) || evt.keyCode == 8 || evt.keyCode == 9 || (evt.keyCode == 46 && campo.value.indexOf(".") == -1 && campo.value.length > 0))
     {
        return true;
     }
  }
  return false;
}
//----------------------------------------------------------------------------------
// CAMBIA COMILLAS
// Función que sustituye comillas simples y dobles
// Recibe:   La cadena donde debe realizarse la sustitución.
// Devuelve: La cadena con los caracteres sustituidos.
//----------------------------------------------------------------------------------
function CambiaComillas (cadena)
{
  var ncadena="";
  for (i = 0; i < cadena.length; i++)
  {
    caracter = cadena.charAt(i);
    if (caracter == "'")
    {
      ncadena += "\'";
    }
    else if (caracter == '"')
    {
      ncadena += '&quot;';
    }
    else
    {
      ncadena += caracter;
    }
  }

  return ncadena;
}

//----------------------------------------------------------------------------------
// AVISO LUPA
// Advierte al usuario de que el campo actual se edita a través de la lupa adyacente
//----------------------------------------------------------------------------------
function avisoLupa()
{
  blur();
  alert('Este campo no puede editarse directamente.\nPulse sobre la lupa adyacente para escoger el valor apropiado.');
}

//--------------------------------------------------------------------------------------
// AVISO CALENDARIO
// Advierte al usuario de que el campo actual se edita a través del calendario adyacente
//--------------------------------------------------------------------------------------
function avisoCalendario()
{
  blur();
  alert('Este campo no puede editarse directamente.\nPulse sobre el calendario adyacente para escoger el valor apropiado.');
}

//-------------------------------------------------------------------------------------------
// FECHA ACTUAL
// Devuelve la fecha actual en formato DD/MM/AAAA
//-------------------------------------------------------------------------------------------
function fechaActual()
{
  fecha = new Date();
  mes = fecha.getMonth() + 1; // Corrección del mes, que es zero-based

  // Formateo el día con dos caracteres
  if (fecha.getDate() < 10)
     fechaHoy = '0' + fecha.getDate();
  else
     fechaHoy = fecha.getDate();

  // Formateo el mes con dos caracteres
  if (mes > 9)
     fechaHoy = fechaHoy + '/' + mes + '/' + fecha.getYear();
  else
     fechaHoy = fechaHoy + '/0' + mes + '/' + fecha.getYear();

  return fechaHoy;
}

//-------------------------------------------------------------------------------------------
// VALIDAR EMAIL
// Comprueba que el e-mail introducido sea correcto
//-------------------------------------------------------------------------------------------

function ValidarEmail(email){

  if( email.indexOf('@',0) <= 0  || email.indexOf(';',0) != -1
     || email.indexOf(' ',0) != -1 || email.indexOf('/',0) != -1
     || email.indexOf(';',0) != -1 || email.indexOf('<',0) != -1
     || email.indexOf('>',0) != -1 || email.indexOf('*',0) != -1
     || email.indexOf('|',0) != -1 || email.indexOf('`',0) != -1
     || email.indexOf('&',0) != -1 || email.indexOf('$',0) != -1
     || email.indexOf('!',0) != -1 || email.indexOf('"',0) != -1
     || email.indexOf(':',0) != -1 )
        return false;
    else
        return true;
}

//-------------------------------------------------------------------------------------------
// VALIDAR CP
// Comprueba que los dos dígitos iniciales del CP se correspondan con los de la Provincia seleccionada
//-------------------------------------------------------------------------------------------
function ValidarCP(cp,prov)
{
   if (cp.substring(0,2)!=prov)
      return false;
   else
      return true;
}
//---------------------------------------------------------------------------------------------
// Esta función comprueba si el N.I.F. introducido en v_Cadena es correcto. Si la cadena contiene un
// NIF válido, en v_Cadena se devuelve el NIF formateado. Si la cadena solo contiene números, la
// función devuelve FALSE, y en v_Cadena aparece el posible NIF correcto, con su letra.
//--------------------------------------------------------------------------------------


function ValidarNIF( v_Cadena ) {

  var v_Tabla_Letras = "TRWAGMYFPDXBNJZSQVHLCKE";
  var v_Letra_NIF = null;
  var v_Numero_NIF = "";
  var v_Aux = "";
  var v_Aux2 = "";
  var v_Retorno = null;

  // Este bucle separa el número del NIF (v_Numero_NIF) y la letra (v_Letra_NIF).
  // También quita todos los caracteres que no son numéricos, y se queda con la
  // última letra, si existe.
  for ( i = 0; i < v_Cadena.length; i++ ) {
    v_Aux = v_Cadena.charAt( i );

    if ( v_Aux >= 0 && v_Aux <= 9 ) {
      v_Numero_NIF += "" + v_Aux;
    }
    else {
      v_Aux = v_Aux.toUpperCase();
      if ( v_Aux >= "A" && v_Aux <= "Z" ) {
        v_Letra_NIF = v_Aux;
        v_Aux2 = v_Cadena.charAt ( i+1 );

        // Si después de la letra, hay más caracteres, entonces es FALSE.
        if ( ( (i+1) < v_Cadena.length ) && ( v_Aux2 >= 0 && v_Aux2 <= 9 ) || ( v_Aux2.toUpperCase() >= "A" && v_Aux2.toUpperCase() <= "Z" ) ) {
          v_Cadena = null;
          v_Retorno = false;
          a_Retorno = new Array( v_Cadena , v_Retorno );
          return a_Retorno;
        }
      }
    }
  }

  // En v_Numero_NIF hay que quitar los ceros por la izquierda.
  while ( v_Numero_NIF.charAt(0) == 0 ) {
    v_Numero_NIF = v_Numero_NIF.substr ( 1 , v_Numero_NIF.length - 1 );
  }

  // Ahora, en v_Aux, metemos la letra correcta del número V_Numero_NIF.
  v_Aux = v_Tabla_Letras.charAt ( v_Numero_NIF % 23 );

  // Si no existe v_Letra_NIF, entonces devolvemos FALSE y el NIF con su letra.
  if ( v_Letra_NIF == null && v_Numero_NIF.length <= 8 ) {
    v_Retorno = false;
    if ( v_Numero_NIF.length < 8 ) {
      while ( v_Numero_NIF.length < 8 ) {
        v_Numero_NIF = "0" + v_Numero_NIF;
      }
      v_Cadena = v_Numero_NIF + "" + v_Aux;
    }
    else {
      v_Cadena = v_Numero_NIF + "" + v_Aux;
    }
  }
  else if ( v_Letra_NIF == v_Aux && v_Numero_NIF.length <= 8 ) {
    // Si v_Aux coincide con v_Letra_NIF, entonces es correcto, y devuelve TRUE.
    v_Retorno = true;
    while ( v_Numero_NIF.length < 8 ) {
      v_Numero_NIF = "0" + v_Numero_NIF;
    }
    v_Cadena = v_Numero_NIF + "" + v_Aux;
  }
  else {
    // Si no, devuelve FALSE y nada más.
    v_Retorno = false;
    v_Cadena = null;
  }

  a_Retorno = new Array( v_Cadena , v_Retorno );
  return a_Retorno;
}



