
var Site = {

	Page: {
	},
	
	blockSizing: false,
	clickTarget: null,
	
	init: function() {

		document.write('<style type="text/css">');

		//
		// Remember width preference.
		//
		if ($.cookie("width")) {
			document.write("#layout {width:" + $.cookie("width") + "px}");
			document.write("#main {width:" + $.cookie("width-main") + "px}");
		}
		
		document.write('</style>');
		
		Site.Page.init();
	},
	
	load: function() {
	
		//
		// Transition in content.
		//
		$("#side > .content").hide().slideDown("slow");
		$("#main > .content").hide().fadeIn("slow", Site.Page.load);

		//
		// Set click handler for links.
		//
		//$("a:not([@href^=#])").one("click", Site.handleLinkClick);

		//
		// Set up width sizer.
		//
		$("#sizer").css({
			width: "21px",
			height: "10px"
		}).attr({
			className: (Site.isWide() ? "contract" : "expand"),
			title: (Site.isWide() ? "Contract site width" : "Expand site width")
		});
		$("#sizer").click(Site.toggleWidth);
		$("#sizer").dblclick(function(){});
	},
	
	isWide: function() {
		return ($("#layout").get(0).clientWidth > 800);
	},
	
	saveWidth: function() {
		$.cookie("width", $("#layout").get(0).clientWidth);
		$.cookie("width-main", $("#main").get(0).clientWidth);
		
		//document.title = $.cookie("width-main");
	},
	
	toggleWidth: function() {
		if (Site.blockSizing) {return;}
		
		Site.blockSizing = true;
		
		var delta = "200px";
		var sign  = Site.isWide() ? "-" : "+";
		
		var spec = sign + "=" + delta;
		
		$("#sizer").attr({
			className: ((sign == "+") ? "contract" : "expand"),
			title:     ((sign == "+") ? "Contract site width" : "Expand site width")
		});

		var speed  = "slow";
		var easing = "easeInOutBack";
		$("#layout").animate({width: spec}, speed, easing, function() {
			Site.blockSizing = false;
			Site.saveWidth();
		});
		$("#main").animate({width: spec}, speed, easing);
	},
	
	handleLinkClick: function(e) {

		Site.clickTarget = e.srcElement ? e.srcElement : e.target;
		
		$("#side > .content").slideUp("slow");
		$("#main > .content").fadeTo("slow", 0.01, function() {
			var target = Site.clickTarget;
			var link = (target.nodeName == "A") ? target : $(target).parents("a").get(0);
			
			window.location = link.href;
		});
		return false;
	}
	
};

Site.Page = {

	init: function() {},
	load: function() {}

};

$(document).ready(Site.load);
