/**
 * Interface Elements for jQuery
 * Tooltip
 * 
 * http://interface.eyecon.ro
 * 
 * Copyright (c) 2006 Stefan Petre
 * Dual licensed under the MIT (MIT-LICENSE.txt) 
 * and GPL (GPL-LICENSE.txt) licenses.
 *   
 * $Revision: 1.6 $
 *
 */

jQuery.iTooltip = {
	helper : null,
	current : null,
	focused : false,
	oldTitle : null,
	focus : function(e)
	{
		jQuery.iTooltip.focused = true;
		jQuery.iTooltip.show(e, this);
	},
	hidefocused : function(e)
	{
		if (jQuery.iTooltip.current != this)
			return ;
		jQuery.iTooltip.focused = false;
		jQuery.iTooltip.hide(e, this);
	},
	show : function(e, el)
	{
		if (!el) {
			el = this;
		}
		if (jQuery.iTooltip.current != null)
			return ;
		
		jQuery.iTooltip.current = el;
		pos = jQuery.extend(
			jQuery.iUtil.getPosition(el),
			jQuery.iUtil.getSize(el)
		);
		jEl = jQuery(el);
		title = jEl.attr('title');
		href = jEl.attr('href');
		if (title) {
			jQuery.iTooltip.oldTitle = title;
			jEl.attr('title',' ');
			jQuery.iTooltip.helper.empty()
				.append('<strong>' + title + '</strong>' + (href ? '<div>' + href + '</div>' : ''))
				.css(
					{
						top: 	pos.y + pos.h + 10 + 'px',
						left:	pos.x + 'px',
						display: 'block'
					}
				);
			if(el.tE.ttClass){
				jQuery.iTooltip.helper.addClass(el.tE.ttClass);
			}
		}
	},
	hide : function(e, el)
	{
		if (!el) {
			el = this;
		}
		if (jQuery.iTooltip.focused != true && jQuery.iTooltip.current == el) {
			jQuery.iTooltip.current = null;
			jQuery.iTooltip.helper.css('display','none');
			if(el.tE.ttClass){
				jQuery.iTooltip.helper.removeClass(el.tE.ttClass);
			}
			jQuery(el).attr('title',jQuery.iTooltip.oldTitle);
			jQuery.iTooltip.oldTitle = null;
		}
	},
	build : function(c, o)
	{
		if (!jQuery.iTooltip.helper)
		{
			jQuery('body').append('<div id="tooltipHelper"></div>');
			jQuery.iTooltip.helper = jQuery('#tooltipHelper');
			jQuery.iTooltip.helper.css(
				{
					position:	'absolute',
					zIndex:		3000,
					display: 	'none'
				}
			);
		}
		return this.each(
			function(){
				if(jQuery.attr(this,'title')) {
					var el = jQuery(this);
					if (c && c.constructor == String) {
						this.ttClass = c;
					}
					el.bind(
						'mouseover',
						jQuery.iTooltip.show
					);
					el.bind(
						'focus',
						jQuery.iTooltip.focus
					);
					el.bind(
						'mouseout',
						jQuery.iTooltip.hide
					);
					el.bind(
						'blur',
						jQuery.iTooltip.hidefocused
					);
					el.get(0).tE = this;
				}
			}
		);
	}
};
jQuery.fn.ToolTip = jQuery.iTooltip.build;
