function ZoomMenuButton_Click()
{
	var target = ReturnEventTarget((arguments.length>0 ? arguments[0] : window.event), "TD");
	var oZMenu = target.oZMenu;
	var sText = target.firstChild.data;
	switch(sText)
	{
		case "-":
			if (oZMenu.nSelected > 1)
				oZMenu.selectZoom(oZMenu.nSelected-1);
			break;
		case "+":
			if (oZMenu.nSelected <oZMenu.nLevels)
				oZMenu.selectZoom(oZMenu.nSelected+1);
			break;
		default:
			oZMenu.selectZoom(Number(sText));
			break;
	}
}

function ZoomMenuButton_MouseOver()
{
	var target = ReturnEventTarget((arguments.length>0 ? arguments[0] : window.event), "TD");
	if (!target.bSelected)
		target.className = "ButtonHover";
}

function ZoomMenuButton_MouseOut()
{
	var target = ReturnEventTarget((arguments.length>0 ? arguments[0] : window.event), "TD");
	if (!target.bSelected)
		target.className = "Button";
}


ZoomMenu.prototype.selectZoom = ZoomMenu_SelectZoom;
ZoomMenu.prototype.show = function() { this.node.style.visibility = "visible"; };
ZoomMenu.prototype.hide = function() { this.node.style.visibility = "hidden"; };

function ZoomMenu(oMapObject, nLevels)
{
	var eTable = document.createElement("TABLE");
	eTable.bPreserve = true;

	eTable.className = "ZoomMenu";
	var eTBody = eTable.appendChild(document.createElement("TBODY"));
	var eTR = eTBody.appendChild(document.createElement("TR"));

	var nButtons = nLevels+2;
	var sWidth = String(Math.floor(100/nButtons)) + "%";

	for (var i=0; i<nButtons; i++)
	{
		var eTD = document.createElement("TD");
		eTD.className = "Button";
		eTD.width = sWidth;
		eTD.oZMenu = this;
		eTD.onclick = ZoomMenuButton_Click;
		eTD.onmouseover = ZoomMenuButton_MouseOver;
		eTD.onmouseout = ZoomMenuButton_MouseOut;

		var sText = i==0 ? "-" : i==nLevels+1 ? "+" : String(i);
		eTD.appendChild(document.createTextNode(sText));
		eTR.appendChild(eTD);
	}

	var node = document.getElementById("MapMenu");
	var eNext;
	if (!node)
	{
		node = oMapObject.node.parentNode;
		var eNext = node.nextSibling;
		node = node.parentNode;
	}

	if (eNext)
		node.insertBefore(eTable, eNext);
	else
		node.appendChild(eTable);


	this.node = eTable;
	this.oMapObj = oMapObject;
	eTable.object = this;

	this.eTR = eTR;
	this.nLevels = nLevels;
	this.eSelected = null;
	this.nSelected = 0;
}

function ZoomMenu_SelectZoom(nLevel)
{
	if (this.eSelected)
	{
		this.eSelected.bSelected = false;
		this.eSelected.className = "Button";
		this.eSelected = null;
		this.nSelected = 0;
	}

	if (nLevel>0 && nLevel<=this.nLevels)
	{
		var el = this.eTR.childNodes[nLevel];
		el.bSelected = true;
		el.className = "ButtonSelected";
		this.eSelected = el;
		this.nSelected = nLevel;
		this.oMapObj.setZoom(nLevel);
	}
}
