function validateContactForm(e) {
  var name = $('first-name').value;
  var email = $('email').value;
  var errors = false;
  
  function clearErrors() {
    $$('#contact-form p.error').each(function(p) { p.remove(); });
  }
  
  function addError(field, message) {
    errors = true;
    var msg = new Element('p', { 'class': 'error' }).update(message);
    $(field).insert({ 'after': msg });
  }
  
  clearErrors();
  
  if (name == '') { addError('first-name', 'Please enter your name.') }
  if (name.match(/[#!@%\^\$]/)) { addError('first-name', 'Please enter a valid name (no #, !, @, %, ^, $).') }
  if (!email.match(/.+@.+\..+/)) { addError('email', 'Please enter a valid email address.') }
  
  if (errors) {
    new Effect.Shake('contact-form');
    e.stop();
  }
};

Event.observe(window, 'load', function() {
  Event.observe('contact-form', 'submit', validateContactForm);
});
