(function($) {
    var defs = [
//          removeClass     addClass            hasClass            className
            ['show',        'hide',             'isHidden',         'hidden'],
            ['beVisible',   'beInvisible',      'isInvisible',      'invisible'],
            ['beOpaque',    'beTransparent',    'isTransparent',    'transparent'],
            ['turnOff',     'turnOn',           'isTurnedOn',       'on'],
            ['deactivate',  'activate',         'isActive',         'active'],
            ['collapse',    'expand',           'isExpanded',       'expanded'],
            ['enable',      'disable',          'isDisabled',       'disabled']
        ],
        methods = ['removeClass', 'addClass', 'hasClass'],
        createFn = function(methodName, fnName, className) {
            $.fn[fnName] = function() {
                return $(this)[methodName](className);
            };
        },
        i, j;
    for(i in defs) {
        if(defs.hasOwnProperty(i)) {
            for(j in methods) {
                if(methods.hasOwnProperty(j)) {
                    createFn(methods[j], defs[i][j], defs[i][3]);
                }
            }
        }
    }

    $.fn.activate = function() {
        $(this).siblings('.active').deactivate();
        return $(this).addClass('active');
    };
})(jQuery);
