YAHOO.Cazaux.Menu = function(el) {
	this.initWithRoot(el);
}

YAHOO.Cazaux.Menu.prototype = {
	initWithRoot: function(root) {
		var nodes = YAHOO.util.Dom.getChildrenBy(root, this._hasMenuClass);
		for (var i=0; i < nodes.length; i++) {
			this.attachEventsIfSubmenu(nodes[i]);
			// this.hideSubMenu(nodes[i]);
		};
	},
	_hasMenuClass: function(_node){ return YAHOO.util.Dom.hasClass(_node, 'menu_container');},
	_hasElementClass: function(_node){ return YAHOO.util.Dom.hasClass(_node, 'menu_title');},
	attachEventsIfSubmenu: function(node){
		if(!this._hasMenuClass(node)) return false;
		var _r = Dom.getRegion(node);
		var _height = _r.bottom - _r.top;
		if(YAHOO.env.ua.ie)
			Dom.setStyle(node, 'width', (_r.right - _r.left+1)+'px')
		else
			Dom.setStyle(node, 'width', (_r.right - _r.left)+'px')
		var _r2 = Dom.getRegion(node);
		if((_r2.bottom - _r2.top)!= _height)
			Dom.setStyle(node, 'width', (_r.right - _r.left+1)+'px')
		
		
			
		Dom.setStyle(node, 'overflow', 'visible')
		var submenus = YAHOO.util.Dom.getChildrenBy(node, this._hasMenuClass);
		var _node = new YAHOO.util.Element(node);
		//Correction de la largeur du menu, pour l'overflow
		Dom.setStyle
		for (var i=0; i < submenus.length; i++) {
			var submenu = YAHOO.util.Dom.getFirstChildBy(node, this._hasMenuClass)
			var elts = YAHOO.util.Dom.getChildrenBy(submenu, this._hasElementClass);
			for (var i in elts) {
				var _r = Dom.getRegion(elts[i]);
				Dom.setStyle(elts[i], 'width', (_r.right - _r.left+1)+'px')
				Dom.setStyle(elts[i], 'display', 'none');
				delete _r;
			};
			var _r = Dom.getRegion(node);
			Dom.setStyle(node, 'width', (_r.right - _r.left)+'px')
			delete _r;
			Dom.setStyle(node, 'overflow', 'visible')
			_node.on('mouseover', this.onMouseOver, [elts, node], this);
			_node.on('mouseout', this.onMouseOut, [elts, node], this);
		};
	},
	onMouseOver: function(evt, params){
		var elts = params[0];
		var node = params[1];
		if(this.is1stTimeOver(evt, node)) {
			var fx_array = [];
			Dom.setStyle(elts, 'display', '');
			Dom.setStyle(elts, 'opacity', '0'); 
			for (var i in elts) {
				if(YAHOO.env.ua.ie)
					Dom.setStyle(elts[i], 'background', 'white')
				var _a = new Anim(elts[i], {opacity: {to: 1}}, 0.1);
				// YAHOO.lang.later(i*100, this, function(i){ i.animate()}, [_a], false);
				fx_array.push(_a);
			}
			for (var j in fx_array) {
				if(j<fx_array.length-1)
					fx_array[j].onComplete.subscribe(function(evt, fx, k){ fx_array[k].animate()}, parseInt(j)+1);
			};
			fx_array[0].animate();
		}
	},
	onMouseOut: function(evt, params){
		var elts = params[0];
		var node = params[1];
		if(this.isOut(evt, node)) {
			var _a = new Anim(elts, {opacity: {to: 0}}, 0.1);
			_a.onComplete.subscribe(function(){ Dom.setStyle(elts, 'display', 'none') });
			_a.animate();
		}
	}
};
YAHOO.lang.augment(YAHOO.Cazaux.Menu, mYUI.HoverObject);
