// Document title
var title = document.title;

// Simple log
var log = function(msg) {
    if (!$('.log').length) {
        $('<div class="log"></div>').appendTo('body');
    }
    $('.log').append(msg.replace(/^([^:]*):(.*)$/, '<p><b>$1:</b> <span class="$1">$2</span></p>'))
        .attr({scrollTop: $("div").attr('scrollHeight')})
        .find('p:nth-child(even)').addClass('even');
}

// Default tracker mock
/*
var pageTracker = {
    _trackPageview: function() {
        log('track: ' + arguments[0]);
    }
}
*/
// Serialization utility
var serialize = function(obj, re) {
    var result = [];
    $.each(obj, function(i, val) {
        if ((re && re.test(i)) || !re)
            result.push(i + ': ' + (typeof val == 'object' ? val.join 
                ? '\'' + val.join(', ') + '\'' : serialize(val) : '\'' + val + '\''));
    });
    return '{' + result.join(', ') + '}';
}

// Init and change handlers
$.address.init(function(event) {
	
	/*
    console.log("init" + serialize({ value: $.address.value(), path: $.address.path(), pathNames: $.address.pathNames(), parameterNames: $.address.parameterNames(), queryString: $.address.queryString()}));
    */
	
    var page = "content/" + ($.address.value() == "/" ? "home" : $.address.value()) + ".html";
    
        
	$.get(page, function(data){
		/*
		console.log("loading data");
		console.log("$('#content-container') = " + $("#content-container"));
		console.log("data = " + data);
		*/
		$("#content-container").html(data);
		resetScroll();
	});	
	
}).change(function(event) {
	/*
    console.log('change: ' + serialize(event, /parameters|parametersNames|path|pathNames|queryString|value/));
	*/
	
    var names = $.map(event.pathNames, function(n) {
        return n.substr(0, 1).toUpperCase() + n.substr(1);
    }).concat(event.parameters.id ? event.parameters.id.split('.') : []);

    var links = names.slice();

    var match = $.trim(links.length ? links.shift() + ' ' + links.join('.') : 'Home'); 
    
    
    $('a').each(function() {
    	var txt = String($(this).text());
        $(this).toggleClass('selected', txt == match);
    });
    
    $.address.title([title].concat(names).join(' | '));
    
    var page = "content/" + ($.address.value() == "/" ? "home" : $.address.value()) + ".html";

	$.get(page, function(data){

		$("#content-container").html(data);
		
		resetScroll();
	});
    
});

function resetScroll(){

	window.scrollTo(0,0);

}