jQuery(document).ready(function($) 
{
	$('.peekaboo_link').click(function(e)
	{
		e.preventDefault();

		var name = get_name(this);

		var link = $('.peekaboo_link.peekaboo-'+name);

		if (name == 'all')
		{
			var content = $('.peekaboo_content');

			$('.peekaboo_onhide, .peekaboo_onshow','.peekaboo_link').hide();
			
			/* check if at least one is hidden */
			if (content.filter(':hidden').length) 
			{
				link.add(content).removeClass('peekaboo_onhide').addClass('peekaboo_onshow');

				content.show();
				$('.peekaboo_onshow','.peekaboo_link').show();
			}
			else 
			{
				link.add(content).removeClass('peekaboo_onshow').addClass('peekaboo_onhide');

				content.hide();
				$('.peekaboo_onhide','.peekaboo_link').show();
			}
		}
		else
		{
			var content = $('.peekaboo_content.peekaboo-'+name);
			
			$('.peekaboo_onhide, .peekaboo_onshow',link).hide();
			
			if (content.filter(':visible').length) 
			{
				link.add(content).removeClass('peekaboo_onshow').addClass('peekaboo_onhide');
				
				content.hide();
				$('.peekaboo_onhide',link).show();
			}
			else 
			{
				link.add(content).removeClass('peekaboo_onhide').addClass('peekaboo_onshow');
				
				content.show();
				$('.peekaboo_onshow',link).show();
			}

			var all_link = $('.peekaboo_link.peekaboo-all');

			/* check if at least one is hidden */
			if ($('.peekaboo_content:hidden').length)
			{
				$('.peekaboo_onhide, .peekaboo_onshow',all_link).hide();
				$('.peekaboo_onhide',all_link).show();
			}

			/* check if all are visible */
			if (!$('.peekaboo_content:hidden').length)
			{
				$('.peekaboo_onhide, .peekaboo_onshow',all_link).hide();
				$('.peekaboo_onshow',all_link).show();
			}
		}
	});

	$('.peekaboo_link').each(function(e)
	{
		var name = get_name(this);

		var content = $('.peekaboo_content.peekaboo-'+name);

		$('.peekaboo_onhide, .peekaboo_onshow',this).hide();
		
		if (content.filter(':visible').length) 
		{
			$('.peekaboo_onshow',this).show();
		}
		else 
		{
			$('.peekaboo_onhide',this).show();
		}
	});

	function get_name(elem)
	{
		// try
		// return $(elem).attr('class').match(/peekaboo-(\w*)/i)[1];

		var css_class = $(elem).attr('class').split(' ');

		css_class = $.grep(css_class,function(e,i)
		{
			return (e.substr(0,9) == 'peekaboo-');
		});

		return css_class[0].split('-')[1];
	}
});

