function replaceContentHtml(url) {
    // Update content
    var contentHtml = $('div#content').load(url + ' div#content-wrapper', '', 
        function(responseText, textStatus, XMLHttpRequest) {
            if (textStatus == 'success') {
            	var person   = url.slice(url.lastIndexOf('/') + 1);
            	var bclasses = $('body').attr('class'); // retrieve classes from body-tag
            	var re       = /(arttu|juuso|kaisa|tuukka|home)/g; // overwriteable classes
            	
            	bclasses = bclasses.replace(re, ''); // replace overwriteable classes, preserving the rest
            	$('body').attr('class', bclasses).addClass(person); // assign classes
            	
                processVimeoEmbeds();
                fetchVideoIntroduction();
                bindAjaxNav();
                
                // Track it
                trackAjaxLoad(url);  
                
                // Show it
                $('div#content').slideDown();
            }
        }
    );
    
    // Bring in the navigation to the subpage, but only do this once
    if ($('ul#nav-main').length == 0) {
        $('<ul id="nav-main"></ul>').insertAfter('div.intro').hide();
        
        // Update navigation
        $('ul#nav-main').load(url + ' ul#nav-main li', '', 
            function(responseText, textStatus, XMLHttpRequest) {
                if (textStatus == 'success') {
                    $('ul#nav-main').slideDown();
                    bindAjaxNav();
                }
            }
        );
    }
}

function replacePostHtml(node, html) {
    var postHtml = $(html).html();
    var newId    = $(node).attr('id') + "-comments";
    
    $(postHtml).attr('id', newId).addClass('comments').insertAfter($(node));
    processVimeoEmbeds();
    bindAjaxNav();
}

function openPost(postNode, url) {
    var postId          = $(postNode).attr('id');
    
    if ($('div#' + postId + "-comments").length == 0) {
        var postSelectorUrl = url + ' div#' + postId + " + div.comments";
        var postHtml        = $('<div></div>').load(postSelectorUrl, '', 
            function (responseText, textStatus, XMLHttpRequest) {
                if (textStatus == 'success') {
                    replacePostHtml(postNode, postHtml);
                    
                    // Scroll the page down to the comments
                    var ypos = $('div#' + postId + "-comments").offset().top;
                    $('html,body').animate({scrollTop: ypos}, 800);
                    
                    // Track it
                    trackAjaxLoad(url);                    
                }
            }
        );
    }
}

function openAuthor(liNode, url) {
    $('ul.persons li').each(
        function (ind, el) {
            if ($(this).html() != $(liNode).html()) {
                var w = $(this).width();
                $(this).children('div').css({width: w});
                $(this).css({overflow: 'hidden'})
                $(this).animate({
                    width: "0",
                    opacity: "0"
                    }, 500);
            }
        }
    );
    
    replaceContentHtml(url);
}

function bindAjaxNav() {
    $('ul.persons a').live('click', function() {
        var myLiNode = $(this).closest('li');
        var url      = $(this).attr('href');
        
        openAuthor(myLiNode, url);
        
        return false;
    });
    
    $('ul#nav-main a').live('click', function() {
        var url = $(this).attr('href');
        
        $('div#content').slideUp();
        replaceContentHtml(url);
        
        return false;
    });

    $('div.post a').unbind(); // to prevent double binding events
    $('div.post a').each(function (ind, el) {        
        var url = $(this).attr('href');
        
        // Bind onto internal links
        if (url.substr(0, 7) != 'http://' || url.indexOf('www.frozn.fi') != -1 || url.indexOf('frozn.dev.taivas.fi') != -1) {
            $(this).click(function () { 
                openPost($(this).parents('div.post'), url);
                
                return false;             
            });
        }
    });
}

function trackAjaxLoad(url) {
    pageTracker._trackPageview(url); 
}

$(document).ready(function() {
    var isMsie  = jQuery.browser.msie;
    var version = Number(jQuery.browser.version.substr(0,1));
    
    if (! isMsie || (! isNaN(version) && 6 < version)) {
        bindAjaxNav();
    }
});