(function ($) {
    var methods = {
        init: function (options) {
            var settings = {
                speed: 1000,
                linkSource: "nav#sideNav a",
                pageSource: "ul#pages > li"
            };
            return this.each(function () {
                if (options) {
                    $.extend(settings, options);
                }
                var variables = {
                    links: $(settings.linkSource),
                    pages: $(settings.pageSource)
                };
                variables.pageContainer = $(variables.pages[0]).parent();
                variables.current = variables.links.index(variables.links.filter(".current"));
                variables.pageContainer.height($(variables.pages[variables.current]).height());
                for (var i = 0; i < variables.links.length; i++) {
                    $(variables.links[i]).click(methods.swapPage(settings, variables, i));
                    window.location.href = linkSource.attr("href").val();
                }

            });
        },
        swapPage: function (settings, variables, target) {
            return function () {
                if (variables.current != target) {
                    var curPage = $(variables.pages[variables.current]);
                    var tarPage = $(variables.pages[target]);
                    variables.pageContainer.height(Math.max(curPage.height(), tarPage.height()));
                    $(variables.links[variables.current]).removeClass("current");
                    curPage.animate({
                        opacity: 0
                    }, settings.speed, function () {
                        $(this).removeClass("current");
                    });
                    $(variables.links[target]).addClass("current");
                    tarPage.addClass("current").animate({
                        opacity: 1
                    }, settings.speed);
                    variables.current = target;
                }
            }
        }
    };

    $.fn.page_swap = function (method) {
        if (typeof method === 'object' || !method) {
            return methods.init.apply(this, arguments);
        } else {
            $.error('Method ' + method + ' does not exist on jQuery.tooltip');
        }
    }
})(jQuery);
