var tooltip = {};
tooltip.posX = null;
tooltip.posY = null;
tooltip.tempTitle = null;
tooltip.init = function ()
{
	var temp_tooltip = document.createElement('div');
	temp_tooltip.id = 'tooltip';

	if (document.body)
	{
		document.body.appendChild(temp_tooltip);
	}
	else if (document.documentElement)
	{
		document.documentElement.appendChild(temp_tooltip);
	}

	var all_elements = document.getElementsByTagName('*');
	for (var i = 0; i < all_elements.length; i++)
	{
		if (class_handler.has(all_elements[i], 'tooltip'))
		{
			tooltip.hook(all_elements[i]);
		}
	}
};
tooltip.hook = function (element)
{
	if (element.title.length > 0)
	{
		event_handler.add(element, 'mouseover', tooltip.mouseover);
		event_handler.add(element, 'mousemove', tooltip.mousemove);
		event_handler.add(element, 'mouseout', tooltip.mouseout);
	}
}
tooltip.mouseover = function (event)
{
	if (!event.target)
	{
		var event = event_handler.fix(event);
	}
	if (event.preventDefault)
	{
		event.preventDefault();
	}
	var element = event.target;

	tooltip.tempTitle = element.title;
	element.title = '';

	tooltip.posX = position.getPositionX(event);
	tooltip.posY = position.getPositionY(event);

	var div = document.getElementById('tooltip');
	div.innerHTML = tooltip.tempTitle;

	if ((tooltip.posY+div.offsetHeight) > (position.getAvailableHeight()+position.getScrollY()))
	{
		div.style.top = ((position.getAvailableHeight()+position.getScrollY())-div.offsetHeight)+'px';
	}
	else
	{
		div.style.top = (tooltip.posY+20)+'px';
	}
	if ((tooltip.posX+div.offsetWidth) > (position.getAvailableWidth()+position.getScrollX()))
	{
		div.style.left = ((position.getAvailableWidth()+position.getScrollX())-div.offsetWidth)+'px';
	}
	else
	{
		div.style.left = (tooltip.posX+20)+'px';
	}

	div.style.display = 'block';
};
tooltip.mousemove = function (event)
{
	if (!event.target)
	{
		var event = event_handler.fix(event);
	}
	if (event.preventDefault)
	{
		event.preventDefault();
	}
	var element = event.target;

	tooltip.posX = position.getPositionX(event);
	tooltip.posY = position.getPositionY(event);

	var div = document.getElementById('tooltip');

	if ((tooltip.posY+div.offsetHeight) > (position.getAvailableHeight()+position.getScrollY()))
	{
		div.style.top = ((position.getAvailableHeight()+position.getScrollY())-div.offsetHeight)+'px';
	}
	else
	{
		div.style.top = (tooltip.posY+20)+'px';
	}
	if ((tooltip.posX+div.offsetWidth) > (position.getAvailableWidth()+position.getScrollX()))
	{
		div.style.left = ((position.getAvailableWidth()+position.getScrollX())-div.offsetWidth)+'px';
	}
	else
	{
		div.style.left = (tooltip.posX+20)+'px';
	}

	div.style.display = 'block';
};
tooltip.mouseout = function (event)
{
	if (!event.target)
	{
		var event = event_handler.fix(event);
	}
	if (event.preventDefault)
	{
		event.preventDefault();
	}
	var element = event.target;

	element.title = tooltip.tempTitle;
	tooltip.tempTitle = null;

	var div = document.getElementById('tooltip');

	div.style.display = 'none';
	div.style.top =  '0px';
	div.style.left = '-3000px';
};
