/**
 * jQuery plugin to replace default browser tooltip functionality
 * 
 * @author		Scott Limmer
 * @copyright	2009 CeCC
 * @modified	2009-12-14
 * 
**/


var tooltip_timer = '';

jQuery.fn.tooltip = function(settings) {
	var defaults = {'delay': 800};

	var opts = $.extend(defaults, settings);

	
	this.each(function() {
		// copy title value to data store and remove attribute. Required to remove default tooltip in IE
		$(this).data('title', $(this).attr('title')).removeAttr('title');;
		
		$(this).mouseover(function(e) {
			if ($(this).data('title') != '') {
				// if element doesn't exist, create
				if ($('#tooltip').html() == null) {
					var tooltip = document.createElement('div');
					tooltip.setAttribute('id', 'tooltip');
					document.body.appendChild(tooltip);
					$('#tooltip').css('display', 'none');
					$('#tooltip').css('position', 'absolute');
				}
				// else reposition
				$('#tooltip').css('top', e.pageY+5);
				$('#tooltip').css('left', e.pageX+25);
				$('#tooltip').html($(this).data('title'));
				
				// set hover delay for tooltip
				tooltip_timer = setTimeout(function(){$('#tooltip').css('display', 'block');}, opts.delay);
			}
		});		
		
		// update mouse tooltip position
		$(this).mousemove(function(e) {
			$('#tooltip').css('top', e.pageY+5);
			$('#tooltip').css('left', e.pageX+25);			
		});
		
		$(this).mouseout(function() {
			// restore title attribute for validation purposes
			$(this).attr('title', $(this).data('attr'));
			
			// reset hover delay. Prevents tooltip from displaying if mouseout occurs before hover delay
			clearTimeout(tooltip_timer);
			
			
			$('#tooltip').css('display', 'none');
		});
	});
};

