$.fn.soc_perm = function(options){
    var options = $.extend({
        div: null,
        link: null,
        input: $(this)
    }, options);

    function init() {
        $('a', options.div).removeClass('highlight current');
        var val = options.input.val();
        var cur = $('a[val=' + val + ']', options.div).addClass('current');
        var group = cur.parents('div.rights-group');
        var thisN = $('a', group).index(cur);
        $('a:eq(' + thisN + '), a:gt(' + thisN + ')', group).addClass('highlight');
    };
    
    return this.each(function() {
        init();
		options.div
        .hover(function(){},function(){init()})
        .find('a')
        .hover(
            function() {
                var self 	= $(this);
                var group = self.parents('div.rights-group');
                var groups = $('div.rights-group', options.div);
                $('a', options.div).removeClass('highlight');
                var thisN = $('a', group).index(this);
                $('a:eq(' + thisN + '), a:gt(' + thisN + ')', group).addClass('highlight');
            },
            function(){} // NO mouseout
        )
        .click(function() {
            var rights 	= options.div; //.parents('div.rights');
            var group 	= $(this).parents('div.rights-group');
            var groups 	= $('div.rights-group',rights);
            groups.removeClass('rg-current');
            group.addClass('rg-current');

            $('a',rights).removeClass('current highlight');
            options.input.val($(this).attr('val'));
            $(this).addClass('current').addClass('highlight').blur();
            var thisN = $('a',group).index(this);
            $('a:gt(' + thisN + ')', group).addClass('highlight');
            
            if (options.link) {
                options.link.text($(this).text());
            }
            $('#popup-rights').hide();
            options.input.change();
            return false;
        });
    });
};