// Document title
var title = document.title;
var securePages = '';
var subPages = '|about|history|news|';

// 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 = [];
    jQuery.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(', ') + '}';
};


var cp;
var headStartToken = "__hs";
var headEndToken = "__he";

// Init and change handlers
jQuery.address.init(function(event) {

	cp = "home";

	//console.log("init");

	loadContent();

}).change(function(event) {

	//console.log("change");

    loadContent();

});

function loadContent(path){

	var addressValue = jQuery.address.value().indexOf("?") > -1 ? jQuery.address.value().substr(0, jQuery.address.value().indexOf("?")) : jQuery.address.value();

	var path = (addressValue == "" ||  addressValue == "/" ? "home" : addressValue);

	if(cp==path)return;

	if(path == "home")window.location.reload();

	cp = path;

    if(securePages.indexOf('|'+ path + '|') > -1){

    	page = "secure/" + path + ".html";

    }else{

    	page = "content/" + path + ".html";

    }

	jQuery.get(page, function(data){

		/*
		var headHtml = $("head").html();

		//remove previously appended head
		var childHeadStart = headHtml.indexOf(headStartToken);
		var childHeadEnd = headHtml.indexOf(headEndToken);

		//log("childHeadStart = " + childHeadStart + ", childHeadEnd = " + childHeadEnd);

		if(childHeadStart>-1 && childHeadEnd >-1){

			$($("head")[0]).html($($("head")[0]).html().substring(0, childHeadStart-1));

		}

		//get head from response document
		var headStart = data.indexOf("<head>");
		var headEnd = data.indexOf("</head>");

		if(headStart>-1 && headEnd >-1){

			var newHead = data.substr(headStart + 6, headEnd - headStart - 7);
			//append the head from the new DOM to the current
			$("head").append(headStartToken + newHead + headEndToken);

		}
		*/
		//insert the DOM's body into the template's content container
		var bodyStart = data.indexOf("<body");
		var bodyEnd = data.indexOf("</body>");

		if(bodyStart>-1 && bodyEnd >-1){

			var newBody = data.substr(bodyStart, bodyEnd - bodyStart);
			newBody = newBody.substring(newBody.indexOf(">") + 1);
			//append the head from the new DOM to the current
			if(subPages.indexOf("|"+ path + "|")>-1){
				$("#mainContent").html(newBody);

			}else{

				$("#content-container").html(newBody);
				document.documentElement.scrollTop = 0;

				checkStatus($("#content-container"));

				$("#content-container").attr("class", cp);
				transformHrefs($("#content-container"));
			}
		}

	});

}
