var ToolTip = {

	ToolTipObj   : Object,
	ToolTipLayer : Object,
	tips         : Object,
		
	init : function()
	{
		ToolTip.ToolTipLayer    = document.createElement('div');
		ToolTip.ToolTipLayer.id = 'toolTip';
		document.getElementsByTagName('body')[0].appendChild(ToolTip.ToolTipLayer);
	},

	setToolTip : function (Opts)
	{
		if (!Opts.Item)
			return false;

		var Item      = $(Opts.Item);
		var OnEvents  = (Opts.OnEvents)  ? Opts.OnEvents  : ['mouseover'];
		var OutEvents = (Opts.OutEvents) ? Opts.OutEvents : ['mouseout'];

		OnEvents.each(function(ev)
		{
			Event.observe(Item, ev, ToolTip.tipOverFunction);
		});

		OutEvents.each(function(ev)
		{
			Event.observe(Item, ev, ToolTip.tipOutFunction);
		});

		ToolTip.tips[Opts.Item] = (Opts.ToolTip) ? Opts.ToolTip : '';
	},

	tipOutFunction: function() 
	{
		ToolTip.ToolTipLayer.setStyle({
			display: 'none'
		});
	},

	tipOverFunction : function(event)
	{
		ToolTip.ToolTipObj = event.target||event.srcElement;

		Position.clone(ToolTip.ToolTipObj, ToolTip.ToolTipLayer, {
			setLeft   :true,
			setTop    : true,
			setHeight : false
		});

		var props = Element.getDimensions(ToolTip.ToolTipObj);
		var top   = ToolTip.ToolTipLayer.getStyle('top').replace(/px/, '');
		var left  = ToolTip.ToolTipLayer.getStyle('left').replace(/px/, '');

		ToolTip.ToolTipLayer.innerHTML = ToolTip.tips[ToolTip.ToolTipObj.id];

		ToolTip.ToolTipLayer.setStyle({
			top      : (parseInt(top)+parseInt(props.height)) + 'px',
			left     : (parseInt(left)+parseInt(props.width))+ 'px',
			width    : '250px',
			position : 'absolute',
			display  : 'block'
		});
	},

	showTip : function(elm, tip)
	{
		ToolTip.ToolTipObj = $(elm);

		Position.clone(ToolTip.ToolTipObj, ToolTip.ToolTipLayer, {
			setLeft   :true,
			setTop    : true,
			setHeight : false
		});

		var props = Element.getDimensions(ToolTip.ToolTipObj);
		var top   = ToolTip.ToolTipLayer.getStyle('top').replace(/px/, '');
		var left  = ToolTip.ToolTipLayer.getStyle('left').replace(/px/, '');

		ToolTip.ToolTipLayer.innerHTML = tip;

		ToolTip.ToolTipLayer.setStyle({
			top      : (parseInt(top)) + 25 + 'px',
			left     : (parseInt(left))+ 'px',
			width    : '200px',
			position : 'absolute',
			display  : 'block'
		});		
	},

	hideTip: function() 
	{
		ToolTip.ToolTipLayer.setStyle({
			display: 'none'
		});
	}
};

Event.observe(window, 'load', ToolTip.init);