(function($) {

    $.Tabs = function(el, options) {
    
        var base = this;
        base.$el = $(el);
        base.$nav = base.$el.find('.nav');
        base.$wrap = base.$el.find('.list-wrap');
        base.$animating = null;

        base.init = function() {
            base.options = $.extend({}, $.Tabs.defaultOptions, options);

            base.$wrap.children('ul').css({
                'position': 'absolute',
                'top': 0,
                'left': 0
            });
            base.$wrap.find('ul.close').css('opacity', 0).hide();

            base.$nav.find('li > a').click(
                function() {
                    // onMouseOver
                    var currentTab = 'default'; // current tab id
                    if (base.$nav.find('a.current').length > 0) {
                        currentTab = base.$nav.find('a.current').attr('href').replace('#', '');
                    }
                    
                    var $selectNav = $(this);
                    var selectTab = $selectNav.attr('href').replace('#', '');   // new showing tab id
                    
                    if (selectTab != currentTab) {
                        if (base.$animating) {
                            return;
                        }

                        // Fade action
                        base.$animating = base.$wrap.find('#' + currentTab);
                        base.$wrap.find('#' + currentTab).animate(
                            {
                                opacity: 0
                            },
                            base.options.speed,
                            base.options.easing,
                            function() {
                                $(this).hide();
                                base.$animating = base.$wrap.find('#' + selectTab);
                                base.$wrap.find('#' + selectTab).show().animate(
                                    {
                                        opacity: 1
                                    },
                                    base.options.speed,
                                    base.options.easing,
                                    function() {
                                        if (!$.support.opacity) {
                                            this.style.removeAttribute('filter');
                                        }
                                        base.$nav.find('li > a').removeClass('current');
                                        $selectNav.addClass('current');
                                        base.$animating = null;
                                    }
                                );
                            }
                        );
                    }
                    return false;
                }
            );

/*
            base.$el.click(
                function() {
                    // onMouseOver
                },
                function() {
                    // onMouseOut
                    base.$nav.find('li > a').removeClass('current');
                    base.$animating = base.$wrap.children('ul:visible');
                    base.$wrap.children('ul:visible').animate(
                        {
                            opacity: 0
                        },
                        base.options.speed,
                        base.options.easing,
                        function() {
                            $(this).hide();
                            base.$wrap.find('ul#default').show().css('opacity', 1);
                            base.$animating = null;
                        }
                    );
                }
            );
*/
        };
        base.init();
    };
    
    $.Tabs.defaultOptions = {
        'speed':  200,
        'easing': 'linear'
    };
    
    $.fn.Tabs = function(options) {
        return this.each(function() {
            (new $.Tabs(this, options));
        });
    };
    
})(jQuery);
