Aris.Menu = function(el,params) {
	var obj = $(el);
	var Items = [];
	Object.extend(Object.extend(this, { hover:'active', selected: 'chsel', menu: 'ddesc' }), params );

	function getActivator(n) { while(n.previousSibling) { n=n.previousSibling; if ( n.nodeName=="A" ) return n; } return null; }
	
	this.onactivate = function (ev,obj) {
		var idx = obj.menuIdx
		var mi = Items[idx];
		if (mi.timer) { mi.timer = this.clearTimer(mi.timer); }
		$CSS.AddClass(mi.parent,this.hover);
		$CSS.AddClass(mi.menu,this.menu);
		$CSS.AddClass(mi.activator,this.selected);
		if ( mi.fx && !mi.fx.isopen() ) { mi.fx.toFull(); }
	}
	this.ondeactivate = function(ev,obj) {
		var mi = Items[obj.menuIdx];
		mi.timer = setTimeout( this.closeMenu.bind(mi), 50 );
	}
	this.closeMenu = function ( ) {
		$CSS.RemoveClass(this.parent,this._self.hover);
		$CSS.RemoveClass(this.menu,this._self.menu);
		$CSS.RemoveClass(this.activator,this._self.selected);
		if ( this.fx ) { this.fx.hide(); }		
	}
	this.clearTimer = function(t) { 
		clearTimeout(t); t = null;
		return null
	}
	this.initialize = function(uls) {for(var i=0,ul; ul=uls[i]; i++) {this.addMenu(ul);}}
	this.addMenu = function(ul) {
			var p = ul.parentNode;
			$CSS.AddClass(p,'parent');
			p.menuIdx = Items.length;
			var a = getActivator(ul);
			var mi = {menu:ul,parent:p,activator:a,timer:null,_self: this}
			if ( Aris.FX ) {
				Object.extend ( mi, { fx:  new Aris.FX.Combo( ul, 300)});
				mi.fx.hide();
			}
			Items[p.menuIdx] = mi;
			$AE(p,'mouseover',this.onactivate,this);
			$AE(p,'mouseout',this.ondeactivate,this);
	}
	this.initialize(obj.getElementsByTagName('UL'));
}
Aris.Menu.onload = function () {
		var _dds = Aris.DOM.getElementsByClass('dropdown');
		var _ms = []
		_dds.each( function(dd) {
			_ms.push( new Aris.Menu(dd,{hover:'active'} ) );
		});
	}
$AE(window,'load',Aris.Menu.onload );

