hv.mbox = [];
hv.mboxC = 1;
hv.mboxLevel = [];
hv.mboxParents = [];
hv.mboxCurrent = 0;
hv.mName = 0;
hv.makeMenu = function(c,name,menu){
	var ele, dmenu, mele, dbox,dele,c;
	hv.mName = name;
	mele = $('<div id="'+name+'"></div>').appendTo($('#'+c));
	for(var i = 0; i < menu.length ; i++){
		if(menu[i][0]){
			if(typeof(menu[i][1])=='string'){
				ele = $('<a href="'+menu[i][1]+'">'+menu[i][0]+'</a>').appendTo(mele);
			}else{
				ele = $('<span'+(menu[i][1]?menu[i][1][0]:'')+'>'+menu[i][0]+'</span>').appendTo(mele);
			}
			if(menu[i][2]){
				hv.makeSubMenu([],ele,menu[i][2]);
			}
		}
	}
}
hv.makeSubMenu = function(a,ele,menu){
	ele.attr('id','MML'+hv.mboxC).mouseover(hv.menuIn).mouseout(hv.menuOut);//Main menu leader
	var dbox = $('<div class="mbox" id="MMB'+hv.mboxC+'"></div>').appendTo($('#'+hv.mName)).mouseover(hv.menuIn).mouseout(hv.menuOut);
	hv.mboxParents[hv.mboxC] = a;
	var c = hv.mboxC;
	hv.mboxC++;
	for(var i = 0; i < menu.length; i++){
		if(typeof(menu[i][1])=='string'){
			dele = $('<a href="'+menu[i][1]+'">'+menu[i][0]+'</a>').appendTo(dbox);
		}else{
			dele = $('<span'+(menu[i][1]?menu[i][1][0]:'')+'>'+menu[i][0]+'</span>').appendTo(dbox);
		}
		if(menu[i][2]){
			dele.css('width','100px');
			b = a.slice();
			b[b.length] = c;
			hv.makeSubMenu(b,dele,menu[i][2]);
		}
	}
}
hv.menuIn = function(e){
	var id = this.id.substring(3,this.id.length);
	hv.mbox[id] = 1;
	if(hv.mboxParents[id].length){
		for(i = 0; i < hv.mboxParents[id].length; i++){
			hv.mbox[hv.mboxParents[id][i]] = 1;
		}
		if(hv.mboxCurrent != id){
			hv.closeMenu(hv.mboxCurrent);
			hv.mboxCurrent = id;
			if(!hv.mboxParents[hv.mboxCurrent] || $.inArray(id,hv.mboxParents[hv.mboxCurrent])==-1){
				var mbox = $('#MMB'+id);
				var leader = $('#MML'+id);
				var pos = hv.findPos(leader[0]);
				if(pos[0]+leader[0].offsetWidth+mbox[0].offsetWidth > document.body.clientWidth){
					mbox.css('left',(pos[0] - mbox[0].offsetWidth)+'px').css('top',pos[1]+'px');
				}else{
					mbox.css('left',(pos[0] + leader[0].offsetWidth)+'px').css('top',pos[1]+'px');
				}
				mbox.addClass('dropped').show();
			}
		}
	}else{
		if(hv.mboxCurrent != id){
			hv.closeMenu(hv.mboxCurrent);
			hv.mboxCurrent = id;
			if(!hv.mboxParents[hv.mboxCurrent] || $.inArray(id,hv.mboxParents[hv.mboxCurrent])==-1){
				var mbox = $('#MMB'+id);
				var leader = $('#MML'+id);
				var pos = hv.findPos(leader[0]);
				$('#MMB'+id).css('left',pos[0]+'px').css('top',(pos[1] + leader[0].offsetHeight)+'px').addClass('dropped').show();
			}
		}
	}
	if(e.stopPropagation){
		e.stopPropagation();
	}else{
		window.event.cancelBubble = true;
	}
}
hv.menuOut = function(e){
	var id = this.id.substring(3,this.id.length);
	hv.mbox[id] = 0;
	if(hv.mboxParents[id]){
		for(var i = 0; i < hv.mboxParents[id].length; i++){
			hv.mbox[hv.mboxParents[id][i]] = 0;
		}
	}
	setTimeout('hv.closeMenu("'+id+'");',300);
	if(e.stopPropagation){
		e.stopPropagation();
	}else{
		window.event.cancelBubble = true;
	}
}
hv.closeMenu = function(id){
	if(!hv.mbox[id]){
		if(hv.mboxCurrent == id){
			hv.mboxCurrent = 0;
		}
		$('#MMB'+id).removeClass('dropped').hide();
		if(hv.mboxParents[id]){
			for(var i = 0; i < hv.mboxParents[id].length; i++){
				if(!hv.mbox[hv.mboxParents[id][i]]){
					$('#MMB'+hv.mboxParents[id][i]).removeClass('dropped').hide();
				}else{
					break;
				}
			}
		}
	}
}
hv.upMenuTimer = function(){
	hv.drop = 0;
	setTimeout('hv.upMenu();',300);
}
hv.upMenu = function(){
	if(hv.drop == 0){
		$('.dropped').removeClass('dropped').hide();
		hv.currentDrop = '';
	}
}