	function ExtensionHandler()
	{
		this.SelectedActionTarget = null;
		
		this.InvokeAction = _InvokeAction;
		this.InvokeCommand = _InvokeCommand;
		this.Submit = _Submit;
		
		function _InvokeAction(obj)
		{
			if (obj.className == "Disabled")
			{
				if (window.event)
				{
					event.cancelBubble = true;
					event.returnValue = false;
				}
			}
		}
		
		function _InvokeCommand(submit)
		{
			obj = document.getElementById(submit);
			if (obj)
			{
				obj.click();
			}
			if (window.event)
			{
				event.cancelBubble = true;
				event.returnValue = false;
			}
		}
		
		function _Submit()
		{
			document.forms[0].submit();
		}

		function DisableAction(obj)
		{
			obj.disabled = true;
			obj.className = "Disabled";
		}
		
		function EnableAction(obj)
		{
			obj.disabled = false;
			obj.className = "";
		}
		
	}
	
	var eh = new ExtensionHandler();
	
	function ToggleGridVisibilityControl(relativeTo)
	{
		obj = document.getElementById("VisibilityControl");
		if (obj)
		{
			if (obj.isOpen == true)
			{
				obj.style.visibility = "hidden";
				obj.isOpen = false;
			}
			else
			{
				obj.style.visibility = "visible";
				if (relativeTo)
				{
					obj.style.left = CalculateAbsoluteLeft(relativeTo);
					//obj.style.left = CalculateAbsoluteLeft(relativeTo) - obj.offsetWidth - relativeTo.offsetWidth - 10;
				}
				obj.isOpen = true;
				document.body.attachEvent("onclick", Body_OnClick);
				obj.attachEvent("onmouseout", TableProperties_OnMouseOut);
				obj.attachEvent("onmouseover", TableProperties_OnMouseOver);
			}
		}
	}
	
	
	function Body_OnClick()
	{
		obj = document.getElementById("VisibilityControl");
		if (obj && obj.mouseOut)
		{
			obj.style.visibility = "hidden";
			obj.isOpen = false;
			document.body.detachEvent("onclick", Body_OnClick);
			obj.detachEvent("onmouseout", TableProperties_OnMouseOut);
			obj.detachEvent("onmouseover", TableProperties_OnMouseOver);
			obj.mouseOut = false;
		}
	}
	
	function TableProperties_OnMouseOut()
	{
		obj = document.getElementById("VisibilityControl");
		if (obj)
		{
			obj.mouseOut = true;
		}
	}
	
	function TableProperties_OnMouseOver()
	{
		obj = document.getElementById("VisibilityControl");
		if (obj)
		{
			obj.mouseOut = false;
		}
	}
	
	function CalculateAbsoluteLeft(obj)
	{
		if (obj)
		{
			//alert('[' + obj.nodeName + '] [' + obj.offsetLeft + ']');
			if (obj.nodeName == "FORM")
			{
				return 0;
			}
			//return obj.offsetLeft + CalculateAbsoluteLeft(obj.parentElement);
			return obj.offsetLeft;
		}
		return 0;
	}


