var Trial = {
  validate: function() {

    var message = '';

    var firstname = this.trim(document.getElementById('firstname').value);
    document.getElementById('firstname').value = firstname;
    if( firstname == '' ) {
      message += 'Please enter your First Name.\n';
    }

    var lastname = this.trim(document.getElementById('lastname').value);
    document.getElementById('lastname').value = lastname;
    if( lastname == '' ) {
      message += 'Please enter your Last Name.\n';
    }

    var email = this.trim(document.getElementById('email').value);
    document.getElementById('email').value = email;
    if( email == '' ) {
      message += 'Please enter your Email Address.\n';
    } else if( !this.isValidEmail( email ) ) {
      message += 'Please enter in a valid Email Address.\n';
    }

    var second_email = this.trim(document.getElementById('secondEmail').value);
    document.getElementById('secondEmail').value = second_email;
    if( second_email == '' ) {
      message += 'Please confirm your Email Address.\n';
    } else if ( second_email != email ) {
      message += 'The email addresses you have entered do not match. Please re-enter.\n';
    }

    if( document.getElementById('country').selectedIndex < 1 ) {
      message += 'Please select your Country.\n';
    }

    var zipcode = this.trim(document.getElementById('zipcode').value);
    document.getElementById('zipcode').value = zipcode;
    if( zipcode == '' ) {
      message += 'Please enter your Zip Code.\n';
    } else if( !this.isValidZipcode(zipcode) ) {
      message += 'Please enter a valid Zip Code.\n';
    }

    if (message) {
      alert ('Please fill in the following information:\n\n' + message);
      return false;
    } else {
      document.getElementById('fullname').value = encodeURIComponent(firstname) + ' ' + encodeURIComponent(lastname);
      document.getElementById('firstname').value = encodeURIComponent(firstname);
      document.getElementById('lastname').value = encodeURIComponent(lastname);
    }
  },

  trim: function(str) {
    var str = str.replace(/^\s\s*/, ''),
      ws = /\s/,
      i = str.length;
    while (ws.test(str.charAt(--i)));
    return str.slice(0, i + 1);
  },
  
  isValidEmail: function(str) {
    return str.search(/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$/i) != -1;
  },
  
  isValidZipcode: function(str) {
    //  var regex_us = /^\d{5}([\-\+])*(\d{4})?$/;
    //  var regex_ca = /^([A-Za-z0-9]{3})(\s{1})([A-Za-z0-9]{3})$/;

    str = str.toUpperCase();
    var regex = /((^\d{5}([- |]\d{4})?$)|(^[A-Z]\d[A-Z][- |]\d[A-Z]\d$))/;

    return regex.test(str);
  }
};