﻿<!--
/*
	By:				Johnny Tran
	Date Created:	10/12/2007

	Properties:

	Usage:
		AV.Web.UI.ToolTip.Init('targetControlId', data-list-object, false, '', '', '', '');
*/
if (AV == null || typeof(AV) != "object") { var AV = new Object(); }
if (AV.Web == null || typeof(AV.Web) != "object") { AV.Web = new Object(); }
if (AV.Web.UI == null || typeof(AV.Web.UI) != "object") { AV.Web.UI = new Object(); }

AV.Web.UI.ToolTip = {

	privateVar		: new function()
	{
		this.ContainerControl		= null;
		this.HeaderControl			= null;
		this.BodyControl			= null;

		this.ToolTipControl			= null;
	},

	CreateChildControl	: function()
	{
		// Clear child controls in the tooltip
		this.getToolTipControl().innerHTML = '';

		// Append the container control to the tooltip
		this.getToolTipControl().appendChild(this.getContainerControl());

		// Append the header control to the container
		this.getContainerControl().appendChild(this.getHeaderControl());

		// Append the body control to the container
		this.getContainerControl().appendChild(this.getBodyControl());
	},

	// Event
	MouseMove			: function(e)
	{
		this.Position(e);
		this.Show();
	},

	MouseOut			: function()
	{
		this.Hide();
	},

	MouseOver			: function(headerText, bodyText)
	{
		this.getBodyControl().innerHTML = bodyText;
		this.getHeaderControl().innerHTML = headerText;
	},

	// Method
	Hide		: function()
	{
		AV.Util.Dom.Hide(this.getToolTipControl());
	},

	Position			: function(e)
	{
		var dom = this.getToolTipControl();
		var domStyle = dom.style;
		var divW = parseInt(dom.offsetWidth);
		var divH = parseInt(dom.offsetHeight);
		var x = AV.Util.Client.getCursorX(e);
		var y = AV.Util.Client.getCursorY(e);
		var maxX;
		var maxY;

		if (document.all && !window.opera)
		{
			maxX = document.documentElement.clientWidth + document.documentElement.scrollLeft + 5;
			maxY = document.documentElement.clientHeight + document.documentElement.scrollTop + 5;
		}
		else
		{
			maxX = window.innerWidth + document.documentElement.scrollLeft + 5;
			maxY = window.innerHeight + document.documentElement.scrollTop + 5;
		}

		while (maxX > 200 && x + divW > (maxX - 10))
			x = x - (divW + 30);

		while (maxY > 300 && y + divH > (maxY - 30))
			y = y - 1;

		domStyle.left = x + 10 + "px";
		domStyle.top = y + 5 + "px";
	},

	RegisterTargetControl	: function(targetControlId)
	{
		var targetControl			= AV.Util.Dom.getControl(targetControlId);

		if (targetControl != null)
		{
			targetControl.onmousemove = function(e)
			{
				AV.Web.UI.ToolTip.MouseMove(e);
			}
			targetControl.onmouseout = function()
			{
				AV.Web.UI.ToolTip.MouseOut();
			}
		}
	},

	Show		: function(prop)
	{
		AV.Util.Dom.Show(this.getToolTipControl());
	},

	// Property
	getBodyControl	: function()
	{
		if (this.privateVar.BodyControl == null)
		{
			this.privateVar.BodyControl = document.createElement('div');
			this.privateVar.BodyControl.id = 'toolTipBodyPanel';
			this.privateVar.BodyControl.style.padding = '3px';
			this.CreateChildControl();
		}
		return this.privateVar.BodyControl;
	},

	getContainerControl	: function()
	{
		if (this.privateVar.ContainerControl == null)
		{
			this.privateVar.ContainerControl = document.createElement('div');
			this.privateVar.ContainerControl.id = 'toolTipContainerPanel';
			this.privateVar.ContainerControl.style.backgroundColor = '#FFFFFF';
			this.privateVar.ContainerControl.style.borderColor = '#000000';
			this.privateVar.ContainerControl.style.borderStyle = 'solid';
			this.privateVar.ContainerControl.style.borderWidth = '1px';
			this.CreateChildControl();
		}
		return this.privateVar.ContainerControl;
	},

	getHeaderControl	: function()
	{
		if (this.privateVar.HeaderControl == null)
		{
			this.privateVar.HeaderControl = document.createElement('div');
			this.privateVar.HeaderControl.id = 'toolTipHeaderPanel';
			this.privateVar.HeaderControl.style.backgroundColor = '#DDDDDD';
			this.privateVar.HeaderControl.style.borderBottomColor = '#000000';
			this.privateVar.HeaderControl.style.borderBottomStyle = 'solid';
			this.privateVar.HeaderControl.style.borderBottomWidth = '1px';
			this.privateVar.HeaderControl.style.padding = '3px';
			this.CreateChildControl();
		}
		return this.privateVar.HeaderControl;
	},

	getToolTipControl	: function()
	{
		if (this.privateVar.ToolTipControl == null)
		{
			this.privateVar.ToolTipControl = document.createElement('div');
			this.privateVar.ToolTipControl.id = 'toolTipPanel';
			this.privateVar.ToolTipControl.style.display = 'none';
			this.privateVar.ToolTipControl.style.position = 'absolute';
			this.privateVar.ToolTipControl.style.textAligh = 'left';
			document.body.appendChild(this.privateVar.ToolTipControl);
		}
		return this.privateVar.ToolTipControl;
	},

	setToolTipControl	: function(containerControlId, headerControlId, bodyControlId)
	{
		var dom;

		dom = AV.Util.Dom.getControl(containerControlId);
		if (dom != null) this.privateVar.ContainerControl = dom;

		dom = AV.Util.Dom.getControl(headerControlId);
		if (dom != null) this.privateVar.HeaderControl = dom;

		dom = AV.Util.Dom.getControl(bodyControlId);
		if (dom != null) this.privateVar.BodyControl = dom;

		this.CreateChildControl();
	}
}
-->

