/*	Copyright 2010 Enertia Solutions LLC
 *
 *	This script applies dropdown menu capabilities to the default Joomla! 1.5 List style menu module.
 *	This script cleans and re-classes the menu lists similar to the following example:
 *	<ul class="level0">
 *		<li class="active first">
 *			<a>Link</a>
 *			<ul class="level1">
 *				<li class="first last">
 *					<a>link</a>
 *				</li>
 *			</ul>
 *		</li>
 *		<li class="last">
  *			<a>Link</a>
 *			<ul class="level1">
 *				<li class="first last">
 *					<a>Link</a>
 *					<ul class="level2">
 *						<li class="first">
 *							<a>Link</a>
 *						</li>
  *						<li class="last">
 *							<a>Link</a>
 *						</li>
 *					</ul>
 *			</ul>
 *		</li>
 */

var en1_fix_menu = function(current_menu, menu_depth, kill_span, kill_span_start) {
	if(current_menu.length > 0) {
		current_menu[0].addClassName('first');
		current_menu[current_menu.length - 1].addClassName('last');
		if(menu_depth == 0) {
			current_menu.first().up().addClassName('level0');
		}
	}
	menu_depth++;
	current_menu.each(function(e) {
		var ul = e.childElements().find(function(e) { return e.nodeName == 'UL'; });
		if(ul) {
			ul.addClassName('level'+menu_depth);
			//Added for Taylor Agency
			ul.setStyle({ width : e.getWidth() + 'px' });
		}
		if(kill_span && menu_depth >= kill_span_start) {
			var anchorsToFix = e.childElements().findAll(function(e) { return e.nodeName == 'A'; });
			anchorsToFix.each(function(anchorToFix){
				var spanToKill = anchorToFix.childElements().find(function(s){ return s.nodeName == 'SPAN'; });
				if(spanToKill) {
					anchorToFix.update(spanToKill.innerHTML);
				}
			});
		}
		Element.observe(e, 'mouseover', function() {
			e.addClassName('selected_item');
			
			if(ul) {
				//ul.setOpacity(0);
				ul.setStyle({"display":"block", "z-index":"99"+menu_depth});
				//new Effect.Opacity(ul, { from: 0, to: 1, duration: 0.25, queue: 'end' });
			}
		});
		Element.observe(e, 'mouseout', function() {
			e.removeClassName('selected_item');
			if(ul) {
				ul.hide();
			}
		});
		if(ul) {
			var lis = ul.childElements().findAll(function(e) { return e.nodeName == 'LI'; });
			if(lis.length > 0) {
				en1_fix_menu(lis, menu_depth, kill_span, kill_span_start);
			}
		}
	});
}
var EN1_MenuFixer = Class.create({
	initialize: function(options) {
		this.options = {
				menu_id			: 'main_menu'	// Set the menu that this class will be focused on.
			,	kill_span		: true			// Delete <span> items in menu?
			,	kill_span_start	: 0 			/* If kill_span is true, when this level is hit, start removing <span> items	*\
												\* again when this level is reached (typically set to 2 for first child menu)	*/
		}
		Object.extend(this.options, options || {});
		var main_menu = $$('ul#'+this.options.menu_id+' > li');
		
		$(this.options.menu_id).setOpacity(0);
		$(this.options.menu_id).setStyle({"display":"block"});
		
		en1_fix_menu(main_menu, 0, this.options.kill_span, this.options.kill_span_start);
		
		new Effect.Opacity(this.options.menu_id, { from: 0, to: 1, duration: 0.5, queue: 'end' });
	}
});
Event.observe(window, 'load', function() {
	var menu_a_fixer = new EN1_MenuFixer({ kill_span : false });
	var menu_b_fixer = new EN1_MenuFixer({ menu_id : 'footer_menu', kill_span : false });
});
