var tooltip;

if (!tooltip)
{
	// onReady init
	$(function(){
		
		var haveTooltips = false;
		var elements = window.document.getElementsByTagName('*');
		for (var i in elements)
		{
			if (elements[i].title && elements[i].title != '' && elements[i].title.match(/^\+/))
			{
				var el = $(elements[i]);
				(function(el){
					var text = el.attr('title');
					text = text.replace(/^\+/, '');
					el.mouseover(function(event){ tooltip.start(event, text); });
					el.attr('title', '');
					el.mouseout( function(){ tooltip.stop(); });
				})(el);
				haveTooltips = true;
			}
		}
		
		//if (haveTooltips) $('body').append('<div id="tooltip"></div>');
		$('body').append('<div id="tooltip"></div>');
	});

	tooltip = {
		timeout: null,
		text: '',
		mouseX: 0,
		mouseY: 0,

		start: function(event, text) {
			tooltip.text = text.replace(/("|')/g, '\\$1');
			tooltip.timeout = setTimeout(function(){ tooltip.display(); }, 600);
			$(event.target).mousemove(function(e){ tooltip.onMouseMove(e); e.stopPropagation(); });
			
			//$(event.target).css('border', '1px solid green');
		},

		stop: function() {
			var t = $('#tooltip');
			t.unbind('mousemove');
			t.hide();
			clearTimeout(tooltip.timeout);
		},

		onMouseMove: function(event) {
			tooltip.mouseX = event.pageX;
			tooltip.mouseY = event.pageY;
		},

		display: function() {
			var t = $('#tooltip');
			t.html('<pre>'+tooltip.text+'</pre>');

			//t.css('left', tooltip.mouseX+10+'px');
			t.css('left', tooltip.mouseX+'px');
			//t.css('top', tooltip.mouseY+document.body.scrollTop-20+'px');
			//alert(document.body.scrollTop);
			//t.css('top', tooltip.mouseY + document.body.scrollTop+21+'px');
			t.css('top', tooltip.mouseY+21+'px');

			t.show();
		}
	};
}
