function Menu(sClass){
	this.mnu	= $('.' + sClass);
	this.li		= $('.' + sClass + ' > ' + 'li[class!=bg sel]');
	this.sub	= null;
	this.sel	= null;
	this.time	= null;
	this.init();
}

Menu.prototype = {
	init : function(){
		var oThis = this;
		this.li.bind('mouseenter', function(){oThis.mouseOver(this)});
		$(document.body).append('<ul class="mnu menuover"></ul>');
		this.sub	= $('.menuover');
	},
	mouseOver : function(obj){
		obj = $(obj);
		this.over	= false;
		var ul = obj.find('ul');
		if(ul.length > 0){
//			if(!obj.hasClass('selected')){
				//this.mouseOut();
			//}
			this.sel	= obj;
			obj.addClass('selected');
			var a 	= obj.find('a');
			var w	= a.width();
			var h 	= a.height();
			var ps	= obj.offset();
			this.sub.html(ul.html());
			this.sub.css({'display' : 'block', 'left' : (ps.left + w + 40), 'top' : (ps.top - this.sub.height() / 2 + h / 2 + 10)});
			this.time	= null;
			var oThis = this;
			this.sub.bind('mouseleave', function(){oThis.mouseOut()});
			this.sub.bind('mouseenter', function(){oThis.overSub()});
			this.sel.bind('mouseleave', function(e){oThis.mouseOut(e)});
		}
	},
	mouseOut : function(e){
		if(this.sub){
			e = e || window.event;
			if(e){
				var ps	= this.sub.position();
				var w	= this.sub.width();
				var h	= this.sub.height();
				if((e.pageX >= ps.left) && (e.pageX <= (ps.left + w)) && (e.pageY >= ps.top) && (e.pageY <= (ps.top + h))){
					return;
				}
			}
			var oThis = this;
			this.li.removeClass('selected');
			this.sub.css({'display' : 'none'});
			this.sub.unbind('mouseleave', function(){oThis.mouseOut()});
			this.sub.html('');
			if(this.sel){
				this.sel.unbind('mouseleave', function(e){oThis.mouseOut(e)});
				this.sel	= null;
			}
			this.over	= false;
		}
	},
	overSub : function(){
		this.sel.unbind('mouseleave', function(){oThis.mouseOut()});
	}
}
