function validate(frm) {
    
    function check_number(str) {
      var n = str.replace(",", ".");
      n = parseFloat(n);
      return typeof n == 'number' && isFinite(n);
    }
    
    function check_sex() {
      for (i = 0; i < frm['sexo'].length; i++) {
        if (frm['sexo'][i].checked) {
          return true;
        }
      }
      
      return false;
    }
    
    function check_options() {
    
      var checked = 0;
      for (i = 0; i < frm['opciones[]'].length; i++) {
        checked += (frm['opciones[]'][i].checked) ? 1 : 0;
      }
       
      return checked;
    }
    
    function check_actividad() {
      return !(frm['opciones[]'][3].checked && frm.actividad.selectedIndex == 0);
    }
    
    var ok = true;
    
    if (!check_sex()) {
      alert('Seleccione su sexo');
    }
    
    if (check_options() == 0) {
      alert("Elija al menos una opción");
      return false;
    }
    
    if (!check_actividad()) {
      alert("Si quiere saber cuántas calorías quema su actividad favorita, debe elegir una.");
      return false;
    } 
    
    if (!check_number(frm.peso.value)) {
      alert("Peso no válido");
      return false;
    }
    
    if (!check_number(frm.altura.value)) {
      alert("Altura no válida");
      return false;
    }
    
    if (!check_number(frm.edad.value)) {
      alert("Edad no válida");
      return false;
    }
    
    
    if (ok) {
      frm.submit();
    }
    
    return ok;
  }