FiveStreet.users = {
    COPPA_AGE_LIMIT: 15,

    updateCoppaCheckbox: function(e) {
        // If Coppa is required, marketing isn't allowed

        if (FiveStreet.users.requiresCoppa()) {
            $('form.formtastic.user li#user_coppa_input').show();
            $('form.formtastic.user li input#user_mtv_marketing').attr('disabled', 'disabled').attr('checked', false);
        } else {
            $('form.formtastic.user li#user_coppa_input').hide();
            $('form.formtastic.user li input#user_mtv_marketing').removeAttr('disabled');
        }
    },

    requiresCoppa: function() {
        return ((new Date - (new Date($.map($.makeArray($('form.formtastic.user li#user_birthday_input select'))
                .sort(function(a, b) {
            return a.id.match(/\d/)[0] > b.id.match(/\d/)[0] // Convert Rails selectors
        }), function(e) {                                    // into
            return e.value;                                  // a JavaScript Date object
        }).join('/')))) / 1000 / 60 / 60 / 24 / 365.25)      // milliseconds -> seconds -> minutes -> hours -> days -> years
                < FiveStreet.users.COPPA_AGE_LIMIT;         
    }
}

FiveStreet.renderFromJsonWithoutCoppa = FiveStreet.renderFromJson;
FiveStreet.renderFromJsonWithCoppa = function(data) {
    FiveStreet.renderFromJsonWithoutCoppa.call(this, data);
    $('form.formtastic.user li#user_birthday_input select').change(FiveStreet.users.updateCoppaCheckbox);
};
FiveStreet.renderFromJson = FiveStreet.renderFromJsonWithCoppa;

$(document).ready(function() {
    $('form.formtastic.user li#user_birthday_input select').change(FiveStreet.users.updateCoppaCheckbox);
});