function marcarCamposReq()
{
  asterisco = document.createElement('span');
  asterisco.appendChild(document.createTextNode(' *'))
  asterisco.className = 'req_asterisco';
  labels = document.getElementsByTagName('label');
  for (var i = 0; i < labels.length; i++) {
    clases = labels[i].className.split(' ');
    for (var j = 0; j < clases.length; j++) {
      if (clases[j] == 'req') {
        labels[i].appendChild(asterisco.cloneNode(true));
      }
    }
  }
  
  forms = document.getElementsByTagName('form');
  for (i = 0; i < forms.length; i++) {
    if (forms[i].className.indexOf('noautovalidate') == -1) {
      Event.observe(forms[i], 'submit', function(e) 
        {
          if (!validarForm(Event.element(e))) {
            Event.stop(e);
          }
        }
      );
    }
  }

}

function validarForm (f) {
  //tinyMCE.triggerSave();

  var pasa    = true;
  var labels  = f.getElementsByTagName('label');
  var fallado = null;

  for (i = 0; i < labels.length; i++) {
    if (labels[i].className == 'req') {
      labels[i].style.color = 'black';
      control = document.getElementById(labels[i].htmlFor);
      if (control.value.replace(/^\s+|\s+$/g, "") == '' && control.type != 'hidden' && control.disabled == false) {
        hidden = false;
        object = control;
        while (object) {
          if (object.style && (object.style.display == 'none' || object.style.visibility == 'hidden')) {
            hidden = true;
            break;
          }
          object = object.parentNode;
        }
        if (!hidden) {
          labels[i].style.color = 'red';
          pasa = false;
          if (null == fallado) fallado = control;
        }
      }
    }
  }

  if (!pasa) {
    alert('Uno o más campos obligatorios no han sido llenados.');
    fallado.focus();
  }
  return pasa;
}

Event.observe(window, 'load', function() { marcarCamposReq(); });
