var Register = {

    valid_year: function(me) {
        var age = parseInt(me.val());
        var now = new Date;
        var year = now.getYear();

        if (year < 1900) {
            year += 1900;
        }

        if (age < year && age > year - 100) { // valid year
            var under_13 = jQuery('p.under-13');
            var over_13 = under_13.prev();

            me.parent('p').removeClass('error');
            me.parent('p').addClass('success');

            if (age > (year - 13)) {
                under_13.show();
                over_13.hide().removeClass('error success');
                over_13.val('');
            }
            else if (age < (year - 13)) {
                over_13.show();
                under_13.hide().removeClass('error success');
                under_13.val('');
            }
        }
        else {
            me.parent('p').removeClass('success').addClass('error');
        }
    }, // End valid_year

    valid_email: function(me) {
        var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
        if (me.val() == null || me.val() === '' || !pattern.test(me.val())) { // If the email doesn't fulfill the regex
            me.parent('p').removeClass('success').addClass('error');
        }
        else {
            me.parent('p').removeClass('error').addClass('success');
        }
    }, // End valid_email

    valid_pass: function(me) {
        if (me.val().length < 6 || me.val() === null || me.val() === '') {
            me.parent('p').removeClass('success').addClass('error');
        }
        else {
            me.parent('p').removeClass('error').addClass('success');
        }
    }, //End valid_pass

    matching_pass: function(me) {
        if (me.val() !== jQuery('input[name=password1]').val()) {
            me.parent('p').removeClass('success').addClass('error');
        }
        else {
            me.parent('p').removeClass('error').addClass('success');
        }
    },

    valid_username: function(me) {
        // This just checks if the username is blank	
        var label = me.prev('label');

        if (me.val() === '') {
            me.parent('p').removeClass('success').addClass('error');
            label.children('.error.taken').hide();
            if (label.children('.error:not(.taken)').length === 0) {
                label.append('<span class="error">A username is required</span>');
            }
        }
        else {
            me.parent('p').removeClass('error').addClass('success');
            label.remove('.error:not(.taken)');
        }
    },

    form_submit: function(me) {

        var checkboxes = jQuery('div.create-account input[type=checkbox]');

        jQuery.each(checkboxes, function(i, el) {
            var box = jQuery(el);
            if (!box.is(":checked")) {
                box.parent('label').parent('li').addClass('error');
            }
            else {
                box.parent('label').parent('li').removeClass('error');
            }
        });

        // run each validator to make sure there are no blanks
        Register.valid_year(jQuery('div.create-account input[name=born]'));
        Register.valid_pass(jQuery('div.create-account input[name=password1]'));
        Register.matching_pass(jQuery('div.create-account input[name=password2]'));
        Register.valid_username(jQuery('div.create-account input[name=username]'));

        if (jQuery('p.under-13').is(':hidden')) {
            Register.valid_email(jQuery('div.create-account input[name=email_address]'));
        }
        else {
            Register.valid_email(jQuery('div.create-account input[name=parent_email_address]'));
        }

        if (jQuery('ul.checkboxes li.error').length + jQuery('p.error').length === 0) {
            // disable the submit button
            jQuery(':submit.create-account').css('background-position', '-610px -30px');
            jQuery(':submit.create-account').attr('onclick', 'return false;'); // we can't use disable becuase it doesn't work with IE. 
            return true;
        }
        return false;
    }
}


jQuery(document).ready(function() {
    var now = new Date

    // Validate age
    jQuery('div.create-account input[name=born]').blur(function() {
        Register.valid_year(jQuery(this));
    });

    jQuery('div.create-account input[name=email_address], input[name=parent_email_address]').blur(function() {
        Register.valid_email(jQuery(this));
    });

    jQuery('div.create-account input[name=username]').blur(function() {
        Register.valid_username(jQuery(this));
    });

    jQuery('div.create-account input[name=password1]').blur(function() {
        Register.valid_pass(jQuery(this));
    });

    jQuery('div.create-account input[name=password2]').blur(function() {
        Register.matching_pass(jQuery(this));
    });

});

