jQuery.fn.tabber = function(options) {
    var defaults = {
        tabs: { name: '.tabs' },
        panels: {
            name: '.tabpanel',
            container: '.tabpanels'
        }
    };
    var opts = jQuery.extend(true, defaults, options);
    var panels = this.find(opts.panels.name);

    this.find(opts.tabs.name+' a').click(function(evt) {
        evt.preventDefault();
        var $tis = $(this);
        var panelName = $tis.attr('href').substr(1);
        panels.hide();
        panels.filter(function(index) {
            return $('a[name='+panelName+']', this).length == 1;
        }).each(function() {
            var $tis = $(this);
            $tis.show();
            if (opts.panels.cssClass) {
                $tis.addClass(opts.panels.cssClass);
            }
            if (opts.panels.style) {
                if ($tis.is(':first-child')) {
                    $tis.parent(opts.panels.container).attr('style', opts.panels.styleRestore);
                } else {
                    $tis.parent(opts.panels.container).attr('style', opts.panels.style);
                }
            }
        });
        $tis.parent('li').siblings().removeClass('selected');
        $tis.parent('li').addClass('selected');
    });
};

