function ToolTip()
{
	// Build nodes
	var outerNode = new Element('div');
	outerNode.addClassName('OuterToolTip');
	outerNode.hide();
	document.body.appendChild(outerNode);
	
	var arrowNode = new Image();
	arrowNode.src = '/img/layout/black_arrow_up.gif';
	outerNode.appendChild(arrowNode);
	
	var innerNode = new Element('div');
	innerNode.addClassName('InnerToolTip');
	outerNode.appendChild(innerNode);
	
	
	// Bind the ToolTip to an element
	this.bind = function(value, parentElement)
	{
		innerNode.update(value);
		this.position(parentElement);
		parentElement.observe('mouseover', function(e) { outerNode.show(); });
		parentElement.observe('mouseout',  function(e) { outerNode.hide(); });
	};
	
	// Position the ToolTip
	this.position = function(parentElement)
	{
		var coords = parentElement.viewportOffset();
		
		if (parentElement.hasClassName('ToolTipCenter')) {
			var top  = coords.top + (parentElement.getHeight() / 2) - (outerNode.getHeight() / 2);
			var left = coords.left - ((outerNode.getWidth() - parentElement.getWidth()) / 2);
		}
		else {
			var top  = parentElement.getHeight() + coords.top + 2;
			var left = coords.left - ((outerNode.getWidth() - parentElement.getWidth()) / 2);
		}
		
		outerNode.style.top  = top  + 'px';
		outerNode.style.left = left + 'px';
	};
};


ToolTip.init = function()
{
	$$('.ToolTip').each(function(element)
	{
		if (!element.hasAttribute('title')) {
			return;
		}
		
		var title = element.readAttribute('title');
		if (!title.length) {
			return;
		}
		
		element.removeAttribute('title');
		
		var toolTip = new ToolTip();
		toolTip.bind(title, element);
	});
};

Event.observe(window, 'dom:loaded', ToolTip.init);