
function Trim(s)  {
  while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r')) {
    s = s.substring(1,s.length);
  }

  while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r')) {
    s = s.substring(0,s.length-1);
  }

  return s;
}

function validarFecha(dia, mes, ano) {
  if (mes < 1 || mes > 12) {
    return false;
  }
  if (dia < 1 || dia > 31) {
    return false;
  }
  if ((mes == 4 || mes == 6 || mes == 9 || mes == 11) &&
      (dia == 31)) {
    return false;
  }
  if (mes == 2) {
    var leap = (ano % 4 == 0 &&
               (ano % 100 != 0 || ano % 400 == 0));
    if (dia>29 || (dia == 29 && !leap)) {
      return false;
    }
  }
  return true;
}

/* Determina si se ha introducido un valor en un campo */
function validarCampo(campoValor, campoNombre) {
  var resultado = true;

  if ( (campoValor== null) || (Trim(campoValor).length==0)) {
    resultado = false;
    alert("'" + campoNombre + "': Deve ser preenchido");
  }

  return resultado;
}

/* Determina si un valor numerico esta entre un rengo de valores. */
function validarCampoNumericoRango(campoValor, campoNombre, valorMinimo, valorMaximo) {


  if (!validarCampo(campoValor, campoNombre)) {
    return false;
  }

  var campoValorComoNumero = parseFloat(campoValor);
  
  if (isNaN(campoValorComoNumero) || (campoValorComoNumero < valorMinimo) || (campoValorComoNumero > valorMaximo)) {
    alert("'" + campoNombre + "': Deve estar entre " + valorMinimo + " e " + valorMaximo);
    return false;
  }

  return true;
}

/* Determina si el formato de una direccion de correo tiene un formato valido */
function validarEmail(emailValor, emailNombre) {


  if (!validarCampo(emailValor, emailNombre)) {
    return false;
  }

  var errorEncontrado = false;
  var resultado;
  
  var splitted = emailValor.match("^(.+)@(.+)$");
  if(splitted == null) {
    errorEncontrado = true;
  }
  if(!errorEncontrado && splitted[1] != null ) {
    var regexp_user=/^\"?[\w-_\.]*\"?$/;
    if(splitted[1].match(regexp_user) == null) {
      errorEncontrado = true;
    }
  }
  if(!errorEncontrado && splitted[2] != null) {
    var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
    if(splitted[2].match(regexp_domain) == null) {
      var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
      if(splitted[2].match(regexp_ip) == null) {
        errorEncontrado = true;
      }
    }
  }

  if (errorEncontrado) {
    alert("'" + emailNombre + "': Formato incorrecto");
    resultado = false;
  }
  else {
    resultado = true;
  }
   
  return resultado;
}

