$(function() {
    function navigate(path) {
        var route = path.split('/');
        var script = route[0] + '(';
        if (route.length > 1) {
            script += $.map(route.slice(1), function(arg) {
                return '"' + arg + '"';
            }).join(', ');
        }
        script += ');';
        eval(script);
    }

    function clear() {
        $('.body > div').hide();
    }


    function index() {
        clear();
        $('#index').show();
    }

    function load(main) {
        return function(sub) {
            clear();

            var file = main;
            if (sub) file += '-' + sub;
            file += '.html';

            var id = '#' + main;
            if (sub) id += '-' + sub;

            var el = $(id);

            if (!$.trim(el.html())) {
                $.get(file, function(html) {
                    el.html(html).show();
                }, 'html');
            } else {
                el.show();
            }
        };
    }

    var about = load('about'), book = load('book');

    function blog() {
        clear();
        var el = $('#blog').show();
        function resize() {
            el.data('resizing', true)
              .find('iframe:eq(0)')
              .height($(window).height() - 150);
        }
        if (!el.data('resizing')) {
            $(window).resize(function() {
                resize();
            });
        }
        resize();
    }

    $('h1 a, .navigator a').click(function() {
        var self = $(this);
        var others = $('.navigator li').filter(function() {
            return self.parent().parent().parent().get(0) != this;
        });
        others.removeClass('selected');
        self.parent().addClass('selected');
        var match = self.attr('href').match(/\#\/(.*)/);
        if (match && match.length > 1) {
            navigate(match[1]);
        }
    });
});
