var required_fields = {
    'register-name-first': {
        message: 'Please provide your first name.',
        regex: /\S+/i },
    'register-name-last': {
        message: 'Please provide your last name.',
        regex: /\S+/i },
    'register-address-zip': {
        message: 'Please provide a valid zip code.',
        regex: /^\d{5}$/ },
    'register-email': {
        message: 'Please provide a valid email address.',
        regex: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i },
    'register-legal-18': {
        message: 'You must verify that you are at least 18.' },
    'register-legal-resident': {
        message: 'You must verify that you are a legal US resident.' },
    'register-legal-rules': {
        message: 'You must verify that you have read and agree to the rules.' }
}
$(function(){
    $('form#register').submit(function(){
        var global_valid = true;
        var errors = $('#register-errors');
        errors.empty();
        for (fieldname in required_fields) {
            var valid = false;
            var field = required_fields[fieldname];
            var input = $('#'+fieldname)
            var input_type = input.attr('type');
            var input_value = input.val();
            if (input_type=='checkbox') {
                valid = input.attr('checked');
            } else {
                valid = input_value.match(field.regex)!=null;
            }
            if (!valid) {
                global_valid = false;
                errors.append('<li>'+field.message+'</li>');
                if (input_type=='checkbox') {
                    input.parent().parent().find('span.required').css('color','#f00');
                    input.focus(function(){
                        $(this).parent().parent().find('span.required').removeAttr('style');
                    });
                } else {
                    input.parent().find('span.required').css('color','#f00');
                    input.focus(function(){
                        $(this).parent().find('span.required').removeAttr('style');
                    });
                }

            }
        }
        return global_valid;
    });
});
