						  /**
 * Menu Plugin to handle click state on AJAX menus.
 *
 * @author Mariano Iglesias
 */
var MenuPlugin = Class.create(AppPlugin, {
	/**
	 * Holds all links
	 *
	 * @var array
	 */
	links: [],

	/**
	 * How many images to show per page
	 *
	 * @var int
	 */
	initialized: false,

	/**
	 * Called when the DOM object has updated (after window
	 * load or after an AJAX complete)
	 *
	 * @access public
	 */
	domUpdated: function()
	{
		if (this.initialized)
		{
			return;
		}
		
		this.initialized = true;
		
		var self = this;
		var holder = $('menu');
		
		if (holder)
		{
			this.links = $$('#menu a');
			
			this.links.each(function(element) {
				element.observe('click', self.handleOptionClick);
			});
		}
	},
	
	handleOptionClick: function(event)
	{
		var self = menuPlugin;
		
		self.clean();
		self.setActive(event.element(), true);
	},
	
	clean: function()
	{
		var self = this;
		
		this.links.each(function(element) {
			self.setActive(element, false);
		});
	},
	
	setActive: function(element, active)
	{
		var originalClass = element.readAttribute('class').replace('menu-', '');
		
		if (active && !element.hasClassName('menu-' + originalClass))
		{
			element.removeClassName(originalClass).addClassName('menu-' + originalClass);
		}
		else if (!active && element.hasClassName('menu-' + originalClass))
		{
			element.removeClassName('menu-' + originalClass).addClassName(originalClass);
		}
	}
});

// Instantiate plugin

menuPlugin = new MenuPlugin();

function updateSubMenu(link) {
	var submenu = $('submenu-public');
	var submenuOptions = $('submenu-options');

	if (submenuOptions == null) {
		return;
	}

	if (link.readAttribute('id') == 'menu-gallery') {
		submenu.hide();
	} else {
		submenu.show();
		submenuOptions.update($('sub-' + link.readAttribute('id')).innerHTML);
		submenuPlugin.domUpdated(true);

		firstLink = null;
		currentSubLink = null;
		$$('#submenu-options a').each(function(subLink) {
			if (firstLink == null) {
			  firstLink = subLink;
			}

			if (link.readAttribute('href').indexOf(subLink.readAttribute('href')) >= 0) {
				currentSubLink = subLink;
				return;
			}
		});

		if (currentSubLink != null) {
		  submenuPlugin.clean();
		  submenuPlugin.setActive(currentSubLink, true);
		}
	}
}

Event.observe(window, 'load', function() {
	var currentLink = null;
	$$('#menu a').each(function(link) {
		if (location.href.indexOf(link.readAttribute('href')) >= 0) {
			currentLink = link;
		} else {
			$$('#sub-' + link.readAttribute('id') + ' a').each(function(subLink) {
				if (location.href.indexOf(subLink.readAttribute('href')) >= 0) {
					currentLink = link;
					return;
				}
			});
		}
	});
	
	if (currentLink == null) {
		currentLink = $('menu-home');
	}
	
	updateSubMenu($(currentLink));
	
	$$('#menu a').each(function(link) {
		Event.observe(link, 'click', function() {
			updateSubMenu($(link));
		});
	});
});
