$(document).ready(function() {

	// PAGE-INFO SIDEBAR FADE

	$(window).scroll(function(event) {
		var y = $(this).scrollTop();
		if (y > 720) {
		    $('#page-info').fadeIn('fast');
		} else {
		    $('#page-info').fadeOut('fast');
		}  
	});


	// SIDEBAR CATEGORY COLLAPSE

	$('#container aside > ul > li > a').click(function() {
		$(this).toggleClass('mini');
		$(this).next().slideToggle('fast');
		return false;
	});


	// NUMBER OF COMMENTS w/ JSON

	var url = window.location.hostname + window.location.pathname;

	$.getJSON("https://graph.facebook.com/http://" + url + "&callback=?", function(json) {
		if (json.comments === 1)
		{
			$('#commentsLink').html(json.comments + " Comment");
			$('#commentsHeaderLink').html(json.comments + " Comment");
		}
		else if (json.comments > 1)
		{
			$('#commentsLink').html(json.comments + " Comments");
			$('#commentsHeaderLink').html(json.comments + " Comments");
		}
	});


	// SMOOTH-SCROLLING
	
	function filterPath(string) {
		return string
		.replace(/^\//,'')
		.replace(/(index|default).[a-zA-Z]{3,4}$/,'')
		.replace(/\/$/,'');
	}
	var locationPath = filterPath(location.pathname);
	var scrollElem = scrollableElement('html', 'body');

	$('a[href*=#]').each(function() {
		var thisPath = filterPath(this.pathname) || locationPath;
		if ( locationPath == thisPath && (location.hostname == this.hostname || !this.hostname) && this.hash.replace(/#/,'') )
		{
			var $target = $(this.hash), target = this.hash;
			if (target)
			{
				var targetOffset = $target.offset().top;
				$(this).click(function(event)
				{
					event.preventDefault();
					$(scrollElem).animate({scrollTop: targetOffset}, 400, function()
					{
						location.hash = target;
					});
				});
			}
		}
	});

	// use the first element that is "scrollable"
	function scrollableElement(els)
	{
		for (var i = 0, argLength = arguments.length; i <argLength; i++)
		{
			var el = arguments[i],
			$scrollElement = $(el);
			if ($scrollElement.scrollTop()> 0)
			{
				return el;
			}
			else
			{
				$scrollElement.scrollTop(1);
				var isScrollable = $scrollElement.scrollTop()> 0;
				$scrollElement.scrollTop(0);
				if (isScrollable)
				{
					return el;
				}
			}
		}
		return [];
	}

});

