
window.onload = function() {
  for (var i = 0; i < document.forms[0].elements.length; i++) {
    if (document.forms[0].elements[i].getAttribute('description') != null) {
      if (document.forms[0].elements[i].type == 'password') setupPasswordField(document.forms[0].elements[i]);
      else setupField(document.forms[0].elements[i]);
    }
  }
}

document.forms[0].onsubmit = function() {
  var errors = 0;
  var message = '';

  for (var i = 0; i < document.forms[0].elements.length; i++) {
    var field = document.forms[0].elements[i];

    var desc = field.getAttribute('description');

    if (desc != null) {
      if (desc == field.value) {
        field.value = '';
      }
    }

    var mandatory = field.getAttribute('mandatory');

    if (mandatory != null && mandatory != '' && mandatory != 'false') {
      if (field.value == '') {
        errors += 1;

        if (desc != null) {
          field.value = desc;
          message += 'You must enter a value for the \'' + desc + '\' field.\r\n';
        }
      }
    }
  }

  var recaptcha = document.getElementById('recaptcha_response_field');
  if (recaptcha != null) {
    if (recaptcha.value == '') {
      errors += 1;
      message += 'Please complete the captcha.';
    }
  }

  if (errors > 0) alert(message);

  event.returnValue = (errors == 0);
  return (errors == 0);
}

function setupField(field) {
  if (field.onblur != null) return;

  var desc = field.getAttribute('description');

  if (field.value == '') {
    field.className = 'disabled';
    field.value = desc;
  }
  else {
    field.className = 'enabled';
  }

  field.onfocus = function() {
    var desc = this.getAttribute('description');

    if (this.value == desc) {
      this.value = '';
      this.className = 'enabled';
    }
  }

  field.onblur = function() {
    var desc = this.getAttribute('description');

    if (this.value == '') {
      this.className = 'disabled';
      this.value = desc;
    }
  }
}

function setupPasswordField(field) {
  if (field.onblur != null) return;

  var desc = field.getAttribute('description');

  var placeholder = document.createElement('INPUT');

  placeholder.name = field.name + '_placeholder';
  placeholder.type = 'text';
  placeholder.className = 'disabled';
  placeholder.value = desc;

  placeholder.field = field;
  field.placeholder = placeholder;

  field.style.display = 'none';

  document.forms[0].insertBefore(placeholder, field);

  placeholder.onfocus = function() {
    this.style.display = 'none';
    this.field.style.display = 'inline';
    field.focus();
  }

  field.onblur = function() {
    if (this.value == '') {
      this.style.display = 'none';
      this.placeholder.style.display = 'inline';
    }
  }

  if (field.value != '') {
    placeholder.style.display = 'none';
    field.style.display = 'inline';
  }
}
