var ContactHandler = Class.create({
  initialize: function(params) {
    this.errors = {
      fullName:   'The Full Name field is required.',
      phone:      'The Phone field is required.',
      email:      'The Email field is required.',
      emailValid: 'The Email field must contain a valid email address.'
    };
    this._fullName   = params.fullName     || null;
    this._phone      = params.phone        || null;
    this._email      = params.email        || null;
    this._submit     = $(params.submitBtn) || null;
    this._msg        = $(params.messages)  || null;
    this._emailRegex = /^[A-Z0-9._%-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|biz|info|name|aero|info|jobs|museum|name|gov|edu|mil|asia|int)$/i;
    this._init();
  },
  _init: function() {
    this._submit.observe('click', this._handleForm.bindAsEventListener(this));
  },
  _handleForm: function(evt) {
    var msg = '';
    if ($F(this._fullName).blank()) {
      msg = this.errors.fullName;
    } else if ($F(this._phone).blank()) {
      msg = this.errors.phone;
    } else if ($F(this._email).blank()) {
      msg = this.errors.email;
    } else if (!this._emailRegex.test($F(this._email))) {
      msg = this.errors.emailValid;
    } else {
      return true;
    }
    this._msg.update('<p class="error">' + msg + '</p>');
    this._msg.scrollTo();
    evt.stop();
    return false;
  }
});
document.observe('dom:loaded', function() {
  new ContactHandler({
    fullName:  'name',
    phone:     'phone',
    email:     'email',
    submitBtn: 'send_btn',
    messages:  'messages'
  });
});