/******************************************************************************
  Crossday Discuz! Board - Menu Jscript for Discuz!
  Copyright 2001-2005 Comsenz Technology Ltd (http://www.comsenz.com)
*******************************************************************************/
var dzmenu_usepopups = true;
var dzmenu_registered = new Array();
var dzmenu_inititems = new Array();
var dzmenu_activemenus = new Array();
var dzmenu_kitedate = new Array();
var dzmenu_cur_open = false;

function dzmenu_register(cid, saveit){
	if (document.getElementsByTagName){
		var c_obj = findobj(cid);
		if (c_obj){			
			if (saveit){
				dzmenu_kitedate[cid] = saveit;
			}
			dzmenu_registered[dzmenu_registered.length] = cid;
			return true;
		}
	}
	return false;
}

function dzmenu_init(cid)
{
	var menuid = dzmenu_basename(cid) + "_menu";
	var menuobj = findobj(menuid);
	
	if (document.getElementsByTagName && menuobj)
	{
		var thisobj = findobj(cid);
		dzmenu_set_pointer(thisobj);
		thisobj.unselectable = true;
		thisobj.onclick = dzmenu_e_mouseclick;
		thisobj.onmouseover = dzmenu_e_mouseover;
		
		if (typeof(dzmenu_inititems[menuid]) != "undefined")
		{
			return;
		}
		
		var menu_pop = findobj(menuid);
		menu_pop.style.display = "none";
		menu_pop.style.position = "absolute";
		menu_pop.style.left = "0px";
		menu_pop.style.top = "0px";
		menu_pop.onclick = dzmenu_eventCB;
		
		var tables = menu_pop.getElementsByTagName("table");
		if (tables.length > 0)
		{
			tables[0].width = "";
		}
		
		if (is_ie)
		{		
			menu_pop.style.filter += "progid:DXImageTransform.Microsoft.alpha(enabled=1,opacity=100)";
			menu_pop.style.filter += "progid:DXImageTransform.Microsoft.shadow(direction=135,color=#8E8E8E,strength=3)";
		}
		
		var tds = menu_pop.getElementsByTagName("td");
		for (var i = 0; i < tds.length; i++)
		{			
			if (tds[i].className == "dzmenu_option")
			{
				tds[i].style.cursor = "default";
				if (tds[i].title == "fixbg")
				{
					tds[i].title = "";
				}
				else
				{
					tds[i].onmouseover = dzmenu_set_bgcss;
					tds[i].onmouseout = dzmenu_set_bgcss;
					tds[i].onclick = vbmenu_a_link;

					if (!is_saf && !is_kon)
					{
						try
						{
							var LinksArray = tds[i].getElementsByTagName("a");
							for (var j = 0; j < LinksArray.length; j++)
							{
								if (typeof(LinksArray[j].onclick) == "undefined")
								{
									LinksArray[j].onclick = dzmenu_eventCB;
								}
							}
						}
						catch(e)
						{
							// nothing to do
						}
					}
				}
			}
			else if (is_moz)
			{
				tds[i].onmouseover = vbmenu_check_click;
				tds[i].onmouseout = vbmenu_check_click;
			}
		}
		
		dzmenu_inititems[menuid] = true;
	}
}

function dzmenuobj_pos(obj, where)
{
	if ( where == "L"){
		objpos = obj.offsetLeft;
		while((obj = obj.offsetParent) != null)
		{
			objpos += obj.offsetLeft;
		}
	}else if ( where == "T"){
		objpos = obj.offsetTop;
		while((obj = obj.offsetParent) != null)
		{
			objpos += obj.offsetTop;
		}
	}
	return objpos;
}

function dzmenu_eventCB(obj, doit)
{
	if (!obj || is_ie)
	{
		window.event.cancelBubble = true;
		if ( doit ) window.event.returnValue = false;
		return window.event;
	}
	else
	{
		obj.stopPropagation();
		if ( doit ) obj.preventDefault();
		return obj;
	}
}

function dzmenu_e_mouseover(e)
{
	e = dzmenu_eventCB(e, true);
	dzmenu_hover(this);
}

function dzmenu_e_mouseclick(e)
{
	e = dzmenu_eventCB(e, true);
	dzmenu_open(this);
}

function dzmenu_open(e)
{
	var openmenu = dzmenu_cur_open;
	var menu_left_pad = true;
	
	dzmenu_close();
	
	if (openmenu == e.id)
	{
		return false;
	}
	
	var menuid = dzmenu_basename(e.id) + "_menu";	
	var menuobj = findobj(menuid);
	var leftpx = dzmenuobj_pos(e,"L");
	var toppx = dzmenuobj_pos(e,"T") + e.offsetHeight;
	var menu_viewright = false;

	dzmenu_activemenus[e.id] = true;
	dzmenu_cur_open = e.id;

	if (typeof(dzmenu_kitedate[e.id]) != "undefined")
	{
		menu_viewright = true;
		findobj(e.id + "_output").innerHTML = findobj(dzmenu_kitedate[e.id]).value;
	}
	
	menuobj.style.display = "";

	var width = parseInt( menuobj.style.width ) ? parseInt( menuobj.style.width ) : menuobj.offsetWidth;
	
	if (menu_viewright || (leftpx + menuobj.offsetWidth) >= document.body.clientWidth)
	{
		leftpx = leftpx + e.offsetWidth - width;
		var menu_left_pad = false;
	}

	if (is_ie) leftpx += ( menu_left_pad ) ? -2 : 2;
	
	menuobj.style.left = leftpx + "px";
	menuobj.style.top = toppx + "px";
	
	if (is_ie)
	{	
		menuarea = {
			"L" : leftpx,
			"T" : toppx,
			"R" : leftpx + menuobj.offsetWidth,
			"B" : toppx + menuobj.offsetHeight
		};		
		selects = document.getElementsByTagName("select");
		for (var i = 0; i < selects.length; i++)
		{
			if (dzmenu_check_over(selects[i], menuarea))
			{
				selects[i].style.visibility = "hidden";
			}
		}
	}
	return false;
}

function dzmenu_close()
{
	if (dzmenu_cur_open)
	{
		for (key in dzmenu_activemenus)
		{
			findobj(dzmenu_basename(key) + "_menu").style.display = "none";
			dzmenu_activemenus[key] = false;
		}
		if (is_ie)
		{
			selects = document.getElementsByTagName("select");
			for (var i = 0; i < selects.length; i++)
			{
				selects[i].style.visibility = "visible";
			}
		}
	}
	dzmenu_cur_open = false;
	
}

function dzmenu_set_bgcss(e)
{
	if (is_moz)
	{
		vbmenu_check_click(e);
	}
	this.className = (this.className == "dzmenu_option") ? "dzmenu_select" : "dzmenu_option";
	dzmenu_set_pointer(this);
}

function dzmenu_set_pointer(obj)
{
	try
	{
		obj.style.cursor = "pointer";
	}
	catch(e)
	{
		obj.style.cursor = "hand";
	}
}


function dzmenu_hover(e)
{
	for (key in dzmenu_activemenus)
	{
		if (dzmenu_activemenus[key] == true && key != e.id)
		{
			dzmenu_open(e);
			return;
		}
	}
}

function dzmenu_check_over(obj, oto)
{
	pos = new Array();
	pos['L'] = dzmenuobj_pos(obj,"L");
	pos['T'] = dzmenuobj_pos(obj,"T");	
	pos['R'] = pos['L'] + obj.offsetWidth;
	pos['B'] = pos['T'] + obj.offsetHeight;
	
	if (pos['L'] > oto['R'] || pos['R'] < oto['L'] || pos['T'] > oto['B'] || pos['B'] < oto['T'])
	{
		return false;
	}
	return true;
}

function vbmenu_check_click(e)
{
	if (e.type == 'mouseover')
	{
		document.onclick = '';
	}
	else
	{
		document.onclick = dzmenu_close;
	}
}

function vbmenu_a_link(e)
{
	LinksArray = this.getElementsByTagName("a");
	if (LinksArray[0])
	{
		if (is_ie)
		{
			LinksArray[0].click();
			window.event.cancelBubble = true;
		}
		else
		{
			if (e.shiftKey)
			{
				window.open(LinksArray[0].href);
				e.stopPropagation();
				e.preventDefault();
			}
			else
			{
				window.location = LinksArray[0].href;
				e.stopPropagation();
				e.preventDefault();
			}
		}
	}
}


function dzmenu_basename(cid){
	var pos = cid.indexOf(".");
	if (pos != -1){
		return cid.substr(0, pos);
	}else{
		return cid;
	}
}

