/**
 * Simple tabs.
 *
 * @author Nikita Vershinin <me@endeveit.net>
 */
(function($) {
    $.tabs = function() {
        var
            saveOpenedTab = $.cookie != undefined && $.toJSON != undefined,
            openedTabs    = {}, // Storage URL => tab
            pageUrl       = document.location.pathname;

        if (saveOpenedTab) {
            try {
                stored = $.evalJSON($.cookie('tabs'));
            } catch (e) {
                stored = {};
            }

            for (var url in stored) {
                openedTabs[url] = stored[url];
            }
        }

        $('.tabs').each(function() {
            var
                instance      = $(this),
                tabContainers = $('section.tab-container', instance),
                tabNavigation = $('ul.tab-navigation a', instance);

            tabContainers.hide();

            $(tabNavigation).click(function () {
                tabContainers.hide().filter(this.hash).show();

                $('ul.tab-navigation li', instance).removeClass('selected');
                $('ul.tab-navigation a', instance).removeClass('selected');

                $(this).parent().addClass('selected');
                $(this).addClass('selected');

                if (saveOpenedTab) {
                    // Save opened tab in cookie
                    openedTabs[pageUrl] = this.hash;
                    $.cookie('tabs', $.toJSON(openedTabs));
                }

                return false;
            });

            if (openedTabs[pageUrl] != undefined) {
                // Show stored tab
                tabNavigation.filter('a[href="' + openedTabs[pageUrl] + '"]').click();
            } else {
                // Show first tab
                $(tabNavigation.get(0)).click();
            }
        });
    }
})(jQuery);
