jQuery(function($)
{
	$('.open_popup').click(menuItemClicked);	
	$('.close_popup').click(closeButtonClicked);
	
	var popped = {};
		
	function menuItemClicked(e)
	{		
		var popupselector = '#' + _stripCmd(this.id);
		
		if(!this.__popped)
			show(this, popupselector);
		else
			hide(this, popupselector);
				
		e.preventDefault(); 					
	}
	
	function closeButtonClicked(e)
	{
		var selectors = { popup:'#' + _stripCmd(this.id), menuItem:'#open_' + _stripCmd(this.id) };

		hide($(selectors.menuItem)[0], selectors.popup);
		
		e.preventDefault(); 
	}
	
	function show(trigger, selector)
	{
		for(var el in popped)
			hide(popped[el].trigger, popped[el].selector);
			
		popped = {};
			
		$(selector).fadeIn();
		
		trigger.__popped = true;
		
		popped[trigger.id] = { trigger:trigger, selector:selector };
	}
	
	function hide(trigger, selector)
	{
		delete(popped, trigger.id);
	
		$(selector).hide();
		
		trigger.__popped = false;
	}
	
	function _stripCmd(s)
	{
		/^(open|close)_(.+)$/.exec(s);
		return RegExp.$2;
	}
});
