var emailField = 'email';

function validateForm() {
  var i, el, n;
  form = document.getElementById(formName);
  var validated = true;
  for (i=0; i<requiredFields.length; ++i) {
    n = requiredFields[i];
    el = document.getElementById(n);
    if (!el) {
      alert("FORM ELEMENT NOT FOUND: "+n);
      continue;
    }
    hasError = checkField(el);
    if (hasError) {
      validated = false;
    }
  }
  return validated;
}

function checkField(el) {
  if (emailField && el.id == emailField) 
    hasError = checkEmail(el);
  else
  if (el.tagName == 'SELECT')
    hasError = checkSelect(el);
  else 
    hasError = checkInput(el);
 
  if (hasError) 
    markError(el);
  else 
    markValidated(el);

  el.onchange = changedField;
  return hasError;
}

function changedField() {
  checkField(this);
}

function checkInput(el) {
  return (el.value ? false : true); 
}

function checkSelect(el) {
  return (el.selectedIndex > 0 ? false : true); 
}

function checkEmail(el) {
  var value, at, dot;
  value = el.value;
  at = value.indexOf('@');
  dot = value.indexOf('.', at);
  return (at < 0 || dot < 0);
}

function markError(el) {
  var label = findLabelFor(el);
  label.className = "fieldError" + errorClass; 
}

function markValidated(el) {
  var label = findLabelFor(el);
  label.className = "fieldValidated";
}

var _labels = false;
function findLabelFor(el) {
  var i, label
  if (!_labels)
    _labels = document.getElementsByTagName('LABEL');
  
  for (i=0; i < _labels.length; ++i) {
    label = _labels[i];
    if (label.htmlFor == el.id) {
      return label;
    }
  }
  // try previous element for this input field as label
  label = el.previousSibling;
  return label;
}

