common = function() {
    var result = {
        is_partial_mac: function (value) {
            return /^[0-9A-F]{2}$/i.test(value);
        },

        is_ptp800: function(mac1_input) {
            var hex = result.hex;
            var macbyte = hex($(mac1_input).val());
            if ((macbyte >= hex('30')) && (macbyte <= hex('37'))) {
                return true;
            }
            return false;
        },

        hex: function(val) {
            return parseInt(val, 16);
        },

        valid_odu_sn: function(value) {
            var n = value.length;
            return (n == 10);
        },

        odu_sn_rules: function(mac_input) {
            return {
                valid_odu_sn: {
                    depends: function(element) {
                        return result.is_ptp800(mac_input);
                    }
                }
            };
        },

        configure_odu_input: function(mac1_input, odu_input) {
            $(mac1_input).change(function() {
                $(odu_input).closest('tr').toggle(result.is_ptp800(this));
            }).keyup(function() {
                $(this).change();
            }).change();
        },

        place_error: function(error, element) {
            element.closest('td').append(error);
        },

        slave_mac_rules: function(mac1_input, mac2_input, mac3_input) {
            return {
                partial_mac: {
                    depends: function(element) {
                        // If any have a value, they all must have
                        var combined = ($(mac1_input).val() +
                                        $(mac2_input).val() +
                                        $(mac3_input).val());
                        return (!(!combined));
                    }
                }
            };
        },

        clear_if_hidden: function(selector) {
            $(selector).filter(':hidden').val('');
        }
    };

    $.validator.addMethod('valid_odu_sn', result.valid_odu_sn,
                          'Not a valid ODU Serial Number');
    $.validator.addMethod('partial_mac', result.is_partial_mac,
                          'Not a valid MAC address');
    $.validator.addClassRules('partial_mac',
                              {partial_mac: true});

    
    return result;
}();

$(document).ready(function() {
    // Annotate required fields
    $('.warranty_form tr.required').find('label:first').before(
            '<span class="required_marker">*</span>&nbsp;'
    );

    $('.warranty_form input[type=submit]').before(
        '<p><span class="required_marker">*</span> Required Fields</p>'
    );
});