/****
*		Hired Gun: Matthew Gaddis <matthewgaddis@gmail.com>
*		Created: 2007-02-10
*		File: Drop-Down Navigation
*		Requires: prototype 1.5.0 or greater
****/

var DD = {};
DD.Base = function() {};

DD.Base.prototype = 
{
	ELEMENT_NODE: 1,
	CONTAINMENT_CLASSNAMES: ['top', 'filters', 'search'],
	
	baseInitialize: function(options)
	{	
		if (this.setOptions)
			this.setOptions(options);
		else
			this.options = options || {};
			
		var i, j, li;
		for(i = 0; i < this.CONTAINMENT_CLASSNAMES.length; i++)
		{
			li = $$('.' + this.CONTAINMENT_CLASSNAMES[i] + ' ' + this.options.tag);
			
			for(j = 0; j < li.length; j++)
			{
				Event.observe(li[j], 'mouseover', this.options.mouseover.bindAsEventListener(this));
				Event.observe(li[j], 'mouseout', this.options.mouseout.bindAsEventListener(this));
			}
		}
	},
	setOptions: function(options)
	{
		this.options = options || {};
		this.options.state = this.options.state || 'selected';
		this.options.tag = this.options.tag || 'LI';
		this.options.containment = this.options.containment || 'UL';
		this.options.mouseover = this.options.mouseover ||
		function(event, elem)
		{
			var elem = Event.element(event) || elem;
			
			if (elem)
			{
				var i, ul = elem.getElementsByTagName(this.options.containment);
				
				if(! Element.hasClassName(elem, this.options.state))
				{
					Element.addClassName(elem, this.options.state);
				}
			}
		};
		
		this.options.mouseout = this.options.mouseout ||
		function(event, elem)
		{
			var elem = Event.element(event) || elem;
			
			if(elem)
			{
				Element.removeClassName(elem, this.options.state);
			}
		}
	}
}

DD.Create = Class.create();
DD.Create.prototype = Object.extend
(
 	new DD.Base(), 
	{
		initialize: function(options) 
		{
			this.baseInitialize(options);
		}
	}
);