/* ================================================== */
// Functions
/* ================================================== */
var cac = function() 
{
	var main_nav_links = $('nav.global li > a');
	var header_nav_links = $('#header-quick-links a[rel!="external"]');
	var footer_nav_links = $('footer.global .quick-links a');
	
	var pathArray = function() 
	{
		var pa = location.pathname.replace(/\/$/, '');
		pa = pa.replace(/^\//, '');
		pa = pa.split('/');
		return pa;
	};
	
	var unSluggify = function(slug)
	{
		un_slug = slug.replace(/-/g, ' ');
		un_slug = un_slug.replace(/\.([A-Za-z]*)/, '');
		return un_slug;
	};
	
	var capitalize = function(str)
	{
		var minor_words = ['a', 'the', 'for', 'at', 'of'];
		var words = str.split(' ');
		var capped_words = [];
		$.each(words, function(i, word)
		{
			var first_letter = word.substring(0, 1);
			var capped_letter = first_letter.toUpperCase();
			if(i > 0 && $.inArray(word, minor_words) != -1)
			{
				capped_words.push(word);
				return;
			}
			word = word.split('');
			word.splice(0, 1, capped_letter);
			word = word.join('');
			capped_words.push(word);
		});
		capped_words = capped_words.join(' ');
		return capped_words;
	};
	
	return { 
		breadcrumbs: function()
		{
			var all_nav_links = $.merge(main_nav_links, header_nav_links);
			all_nav_links = $.merge(all_nav_links, footer_nav_links);
			var path_array = pathArray();
			var crumb_path = '';
			$.each(path_array, function(i, slug)
			{
				crumb_path = crumb_path + '/' + slug;
				$.each(all_nav_links, function(j, link)
				{
					var link_path = $(link).attr('href').replace(/\/$/, '');
					var link_text = $(link).text();
					if(link_path == crumb_path)
					{
						$('#breadcrumbs ul li a').removeClass('current');
						$('<li><a href="' + link_path + '" class="current">' + link_text + '</a></li>').appendTo('#breadcrumbs ul');
					}
				});
				var matching_nav_items = all_nav_links.filter(function()
				{
					return $(this).attr('href').replace(/\/$/, '') == crumb_path;
				});
				if(matching_nav_items.length < 1)
				{
					$('#breadcrumbs ul li a').removeClass('current');
					var pretty_link = unSluggify(slug);
					pretty_link = capitalize(pretty_link);
					$('<li><a href="/' + slug + '" class="current">' + pretty_link + '</a></li>').appendTo('#breadcrumbs ul');
				}
			});
		},
		showLifecycleStep: function(step)
		{
			$('body.lifecycle #lifecycle .step').hide();
			$('#' + step).fadeIn(300);
		},
		showResources: function(step)
		{
			$('#resources li:not(.permanent)').hide();
			$('#resources li.permanent').removeClass('last');
			$('#resources li.' + step).fadeIn(300);
			$('body.lifecycle #resources li:visible').filter(':last').addClass('last');
		},
		showLetter: function(hash)
		{
			var letter = hash.replace('#', '');
			$('section.acronym-guide .indented h2, section.acronym-guide .indented dl').hide();
			$('#' + letter).fadeIn(200).next('dl').fadeIn(200);
		}
	};
}();



/* ================================================== */
// DOM ready
/* ================================================== */
$(document).ready(function()
{
	/* ========== Global Navigation ========== */
	$.each($('.primary li a[href]'), function()
	{
		$(this).removeClass('current');
		if(location.pathname.indexOf($(this).attr('href')) != -1)
		{
			$(this).addClass('current').siblings('span').addClass('current');
		}
	});
	$('li.has-sub').children('ul').hide();
	$('li.has-sub a.current').parent('li').children('ul').show();
	if($('ul.secondary:visible').length > 0)
	{
		$('#breadcrumbs').css(
			{
				position: 'relative',
				top: '25px'
			});
	}
	
	/* ========== Lifecycle ========== */
	if($.address)
	{
		$.address.externalChange(function()
		{
			var step = $.address.value().replace('/', '');
			$('body.lifecycle #lifecycle .step').hide();
			if(step === '')
			{ 
				step = 'sponsorship'; 
				$.address.value(step)
			}
			cac.showLifecycleStep(step);
			cac.showResources(step);
			$('body.lifecycle #lifecycle-links .links .link').removeClass('current');
			$('body.lifecycle #lifecycle-links .links .link[href="#' + $.address.value().replace('/', '') + '"]').addClass('current');
		});
	}
	$('body.lifecycle #resources li:not(.permanent)').hide();
	$('body.lifecycle #resources li:visible').filter(':last').addClass('last');
	$('body.lifecycle #lifecycle-links .links .link').click(function(event)
	{
		event.preventDefault();
		var step = $(this).attr('href').replace('#', '');
		cac.showLifecycleStep(step);
		cac.showResources(step);
		$('#lifecycle-links .links .link').removeClass('current');
		$(this).addClass('current');
		if($.address)
		{
			$.address.value($(this).attr('href').replace('#', ''));
		}
	});
		
	/* ========== Acronym Guide ========== */
	cac.showLetter('#a');
	$('a[href="#a"]').addClass('current');
	$('.letter a').click(function(event)
	{
		event.preventDefault();
		cac.showLetter($(this).attr('href'));
		$('.letter a').removeClass('current');
		$(this).addClass('current');
	});
	
	/* ========== External Links ========== */
	$('a[rel=external], a[href*=".pdf"]').each(function() 
	{
		$(this).click(function(event) 
		{
			event.preventDefault();
			window.open(this.href);
		}); 
	});
	
	/* ========== Breadcrumbs ========== */
	cac.breadcrumbs();
});


















