// menu


var g_menu_right = 0;

var _display_never = 0;
var _display_always = 1;
var _display_only_if_logged_in = 2;
var _display_only_if_not_logged_in = 3;
var _display_only_if_admin = 4;

var gMenuObjects = new List();
var gMenuPopups = new List();
var gMenuPopupWnds = new List();
var gMenuInfos = new List();

var gMenuPopupTarget;
var gmenu_popdiv;
var gmenu_shadow;
var _menuItemHeight = 22;
var gMenuBarWidth = 96;

//------------------------------------------------------------
function menu_init()
	{
	//$("body").bind("mousedown",do_menu_closepopup);
	gmenu_popdiv = $("<div></div>").attr("id","menu_popup");
	gmenu_shadow = $("<div></div>").attr("id","menu_popup_shadow");
	menu_closepopup();
	gmenu_popdiv.bind("click", menu_pop_click);
	gmenu_popdiv.bind("contextmenu", donothing);
	gmenu_shadow.css("opacity",_shadowOpacity);
	}
//------------------------------------------------------------
function do_menu_closepopup()
	{
	menu_closepopup();
	return true;
	}

//------------------------------------------------------------
function menu_reset()
	{
	}

//------------------------------------------------------------
function menu_item_init(mitem)
	{
	var id = "mitem_" + mitem.id;
	if (id != gPanelCenterBottomState) 
		{
		var item = $("#"+id);
		item.css({width:mitem.width, right:g_menu_right});
		g_menu_right += mitem.width;
		item.hover(menu_hover_over, menu_hover_out);
		item.bind("click", mitem.func);
		item.css({
			"color": "#000000",
			"background":"#bfbfbf"
		});
		item.attr("popup", gMenuObjects.add(mitem.popup));
		item.show();
		}
	}
//------------------------------------------------------------
function menu_hover_over(evt)
	{
	$(this).css({
		"color": "#dddddd",
		"background":"#000000"
	});
	var popup = gMenuObjects.get($(this).attr("popup"));
	if (popup == "x") menu_closepopup();
	else menu_show_popup(this, popup);
//	$(this).removeClass();
//	$(this).addClass("menu_item_hover");
	}

//------------------------------------------------------------
function menu_hover_out(evt)
	{
//	$(this).removeClass();
//	$(this).addClass("menu_item");
	$(this).css({
		"color": "#333333",
		"background":"#bfbfbf"
		});
	}

//------------------------------------------------------------
function menu_keepPopupInWindow()
	{
	KeepElemInPar(gmenu_popdiv, 4);
	CopyElemPos(gmenu_popdiv, gmenu_shadow, 4, 4);
	}
//------------------------------------------------------------
function menu_closepopup()
	{
	if (gmenu_popdiv)
		{
		gmenu_popdiv.hide();
		gmenu_shadow.hide();
		}
//	gMenuObjects.clear();
//	gMenuPopups.clear();
//	gMenuPopupWnds.clear();
	gMenuInfos.clear();
	}
//------------------------------------------------------------
function menufunc_popup()
	{
	}
//------------------------------------------------------------
function menu_pop_click()
	{
		
	}
//------------------------------------------------------------
function menu_popup_hover_over(evt)
	{
	$(this).css({
		"color": "#dddddd",
		"background":"#000000"
		});
	var img = $(this).children("img");
	if (img)
		{
		var imgBasename = img.attr("imgBasename");
		img.attr("src",menu_getItemImg(imgBasename, "over"));
		}
	}

//------------------------------------------------------------
function menu_popup_hover_out(evt)
	{
	$(this).css({
		"color": "#333333",
		"background":"#bfbfbf"
		});
	var img = $(this).children("img");
	if (img)
		{
		var imgBasename = img.attr("imgBasename");
		img.attr("src",menu_getItemImg(imgBasename, "normal"));
		}
	}

//------------------------------------------------------------
function menu_chk_state_hide(menuid)
	{
	switch(GetPCBState())
		{
		case gPCBState_Welcome:
			switch(menuid){case "help", "signout", "admin":return false;}
			return true;

		case gPCBState_SignIn:
			switch(menuid){case "signin":return true;}
			break;

		case gPCBState_SignUp:
			switch(menuid){case "signup":return true;}
			break;

		case gPCBState_SignEdit:
			switch(menuid){case "editprofile":return true;}
				break;

		case gPCBState_Blog:
			break;
		}
	return false;
	}
	
//------------------------------------------------------------
function menu_build_popup(popup, data)
	{
	var top = 0;
	var itmHt = 20;
	popup.empty();
	var itms = data.itms;
	
	for (var idx = 0; idx < itms.length; idx++) 
		{
		var mitem = itms[idx];
		var pitem = $($("<div></div>").appendTo(popup));
		pitem.css("top",top);
		
		if (mitem.label == "-")			// divider line
			{
			pitem.addClass("menu_popup_item_line");
			var line = $($("<div></div>").appendTo(pitem));
			line.addClass("menu_popup_line");
			top += pitem.height()+2;
			}
		else
			{
			pitem.addClass("menu_popup_item");
			var txt = $($("<div></div>").appendTo(pitem));
			txt.addClass("menu_popup_item_text");
			txt.html(mitem.label);
			if (mitem.img)
				{
				$("<img />").appendTo(pitem)
				.addClass("menu_popup_item_icon")
				.attr({
					"src": menu_getItemImg(mitem.img, "normal"),
					"imgBasename":mitem.img
					});
				}
			if (mitem.wnd) pitem.attr("wnd", gMenuPopupWnds.add(mitem.wnd));
			pitem.attr("info",gMenuInfos.add(mitem));
			pitem.hover(menu_popup_hover_over, menu_popup_hover_out)
			.bind("select", mitem.func)
			.bind("mouseup", menu_itm_select);	//.bind("click", menu_itm_select);
			if (mitem.data != undefined) pitem.attr("data", mitem.data);
			top += _menuItemHeight;
			}
		}
	
	var w;
	if (data.width) w = data.width;
	else w = gMenuBarWidth;
	popup.css({height: top+3, width: w});
	}
//------------------------------------------------------------
function menu_popup(data, hpos, vpos, par, width)
	{
	if (par) gMenuPopupTarget = par;
	menu_closepopup();
	menu_build_popup(gmenu_popdiv, data, hpos, vpos,
						(width==undefined ? 0:width));
	gmenu_shadow.css({top:vpos+4,
				left:hpos+4,
				height:gmenu_popdiv.css("height"),
				width:gmenu_popdiv.css("width")});
	gmenu_popdiv.appendTo("body");
	gmenu_shadow.appendTo("body");
	gmenu_popdiv.css({left:hpos, top:vpos});
	menu_keepPopupInWindow();
	gmenu_popdiv.show();
	gmenu_shadow.show();
	}
//------------------------------------------------------------
function menu_show_popup(mitem_div, data)
	{
	var mitem = $(mitem_div);
	var hpos = parseInt(mitem.parent().width()) - parseInt(mitem.css("right")) - parseInt(mitem.width());
	menu_popup(data, hpos, 17);
	}

//------------------------------------------------------------
function menu_registerPopup(popup_folder)
	{
	for (var idx = 0; idx >= popup_folder.length; ++idx)
		{
		var item = mitem.popup_folder[idx];
		if (item.img)
			{
			normimg	= menu_getItemImg(item.imgBasename, "normal"),
			overimg	= menu_getItemImg(item.imgBasename, "over"),
			$.preloadImages(normimg,overimg);
			}
		}
	return gMenuPopups.add(popup_folder);
	}
//------------------------------------------------------------
function menu_unregisterPopup(id)
	{
	gMenuPopups.remove(id);
	}
//------------------------------------------------------------
function menu_contextPopup(e)
	{
	var id = $(this).attr("popup");
	menu_popup(gMenuPopups.get(id), e.pageX, e.pageY);
	gMenuPopupTarget = $(this);
	e.stopPropagation();
	return false;
	}
//------------------------------------------------------------
function menu_contextPopupPar(e)
	{
	var id = $(this).parent().attr("childpopup");
	if (id)
		{
		menu_popup(gMenuPopups.get(id), e.pageX, e.pageY);
		gMenuPopupTarget = $(this);
		}
	e.stopPropagation();
	return false;
	}

//------------------------------------------------------------
function menu_getPopupTarget()
	{
	return gMenuPopupTarget;
	}
//------------------------------------------------------------
function menu_getItemImg(imgBasename, state)
	{
	if (imgBasename) return "ui_images/menu_"+imgBasename+"_"+state+".jpg";
	return "";
	}
//------------------------------------------------------------
function menufunc_openToolWindow()
	{
	}

//------------------------------------------------------------
function menu_setLightBox(klass)
	{
	var uname = getusername();
	if (uname == ".") uname = "Visitor";
	$("#mitem_user").html(uname);
	menu_show_userphoto();
	}

//------------------------------------------------------------
function menu_openWnd()
	{
	var wnd = gMenuPopupWnds.get($(this).attr("wnd"));
	wnd_open(wnd, gMenuPopupTarget, true);
	menu_closepopup();
	gMenuPopupWnds.clear();
	return true;
	}

//------------------------------------------------------------

function menu_itm_select(e)
	{
	$(this).trigger("select");
	menu_closepopup();
	e.stopPropagation();
	}	