var wvttkSite = Class.create({
	initialize: function() {
		// Initialize the menu
		$$('.menu').each(function(menu) {
			menu.observe('mouseout', this.hideMenu.bindAsEventListener(this));
		}, this);
		$$('.menu_link').each(function(menu_link) {
			menu_link.observe('mouseover', this.activateMenu.bindAsEventListener(this));
		}, this);

		// Make links with rel="external"
		this.externalLinks();
		
		// Generate mailto links for links with rel="mail"
		this.mailLinks();
	},

	activateMenu: function(event) {
		var element = event.element();
		var sub_menu = element.parentNode.getElementsBySelector('.sub_menu')[0];
		sub_menu.addClassName('active');
	},

	externalLinks: function() {
		$A(document.getElementsByTagName('a')).each(function linkExternal(_link) {
			if(_link.getAttribute('href') && _link.getAttribute('rel') == 'external') {
				_link.target = '_blank';
			}
		});
	},

	mailLinks: function() {
		$A(document.getElementsByTagName('a')).each(function linkExternal(_link) {
			if(_link.getAttribute('href') && _link.getAttribute('rel') == 'mail') {
				var address = _link.href.split('/').pop() + '@' + _link.innerHTML;
				_link.href = 'mailto:' + address;
				_link.innerHTML = address;
			}
		});
	},
	
	hideMenu: function(event) {
		var element = event.element();
		var parent_menu = element.up('.menu') || element;
		var sub_menu = parent_menu.getElementsBySelector('.sub_menu')[0];
		var link = parent_menu.getElementsBySelector('.menu_link')[0];
		var new_element = event.relatedTarget;
		var current_location = location.href.split('?')[0];
	
		if(link.href != current_location && !Element.descendantOf(new_element, parent_menu) && new_element != parent_menu) {
			sub_menu.removeClassName('active');
		}
	}
	
});

new wvttkSite();
