integration/back-office/lib/jquery-ui/ui/jquery.ui.tooltip.js
author Anthony Ly <anthonyly.com@gmail.com>
Tue, 14 May 2013 18:17:07 +0200
changeset 1 b95aebb070b5
permissions -rw-r--r--
first commit back office front metadatacomposer
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     1
/*!
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     2
 * jQuery UI Tooltip 1.10.3
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     3
 * http://jqueryui.com
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     4
 *
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     5
 * Copyright 2013 jQuery Foundation and other contributors
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     6
 * Released under the MIT license.
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     7
 * http://jquery.org/license
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     8
 *
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     9
 * http://api.jqueryui.com/tooltip/
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    10
 *
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    11
 * Depends:
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    12
 *	jquery.ui.core.js
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    13
 *	jquery.ui.widget.js
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    14
 *	jquery.ui.position.js
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    15
 */
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    16
(function( $ ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    17
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    18
var increments = 0;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    19
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    20
function addDescribedBy( elem, id ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    21
	var describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    22
	describedby.push( id );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    23
	elem
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    24
		.data( "ui-tooltip-id", id )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    25
		.attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    26
}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    27
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    28
function removeDescribedBy( elem ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    29
	var id = elem.data( "ui-tooltip-id" ),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    30
		describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    31
		index = $.inArray( id, describedby );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    32
	if ( index !== -1 ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    33
		describedby.splice( index, 1 );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    34
	}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    35
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    36
	elem.removeData( "ui-tooltip-id" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    37
	describedby = $.trim( describedby.join( " " ) );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    38
	if ( describedby ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    39
		elem.attr( "aria-describedby", describedby );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    40
	} else {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    41
		elem.removeAttr( "aria-describedby" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    42
	}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    43
}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    44
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    45
$.widget( "ui.tooltip", {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    46
	version: "1.10.3",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    47
	options: {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    48
		content: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    49
			// support: IE<9, Opera in jQuery <1.7
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    50
			// .text() can't accept undefined, so coerce to a string
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    51
			var title = $( this ).attr( "title" ) || "";
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    52
			// Escape title, since we're going from an attribute to raw HTML
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    53
			return $( "<a>" ).text( title ).html();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    54
		},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    55
		hide: true,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    56
		// Disabled elements have inconsistent behavior across browsers (#8661)
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    57
		items: "[title]:not([disabled])",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    58
		position: {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    59
			my: "left top+15",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    60
			at: "left bottom",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    61
			collision: "flipfit flip"
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    62
		},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    63
		show: true,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    64
		tooltipClass: null,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    65
		track: false,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    66
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    67
		// callbacks
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    68
		close: null,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    69
		open: null
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    70
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    71
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    72
	_create: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    73
		this._on({
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    74
			mouseover: "open",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    75
			focusin: "open"
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    76
		});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    77
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    78
		// IDs of generated tooltips, needed for destroy
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    79
		this.tooltips = {};
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    80
		// IDs of parent tooltips where we removed the title attribute
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    81
		this.parents = {};
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    82
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    83
		if ( this.options.disabled ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    84
			this._disable();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    85
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    86
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    87
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    88
	_setOption: function( key, value ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    89
		var that = this;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    90
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    91
		if ( key === "disabled" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    92
			this[ value ? "_disable" : "_enable" ]();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    93
			this.options[ key ] = value;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    94
			// disable element style changes
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    95
			return;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    96
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    97
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    98
		this._super( key, value );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    99
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   100
		if ( key === "content" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   101
			$.each( this.tooltips, function( id, element ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   102
				that._updateContent( element );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   103
			});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   104
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   105
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   106
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   107
	_disable: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   108
		var that = this;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   109
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   110
		// close open tooltips
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   111
		$.each( this.tooltips, function( id, element ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   112
			var event = $.Event( "blur" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   113
			event.target = event.currentTarget = element[0];
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   114
			that.close( event, true );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   115
		});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   116
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   117
		// remove title attributes to prevent native tooltips
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   118
		this.element.find( this.options.items ).addBack().each(function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   119
			var element = $( this );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   120
			if ( element.is( "[title]" ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   121
				element
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   122
					.data( "ui-tooltip-title", element.attr( "title" ) )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   123
					.attr( "title", "" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   124
			}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   125
		});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   126
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   127
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   128
	_enable: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   129
		// restore title attributes
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   130
		this.element.find( this.options.items ).addBack().each(function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   131
			var element = $( this );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   132
			if ( element.data( "ui-tooltip-title" ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   133
				element.attr( "title", element.data( "ui-tooltip-title" ) );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   134
			}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   135
		});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   136
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   137
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   138
	open: function( event ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   139
		var that = this,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   140
			target = $( event ? event.target : this.element )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   141
				// we need closest here due to mouseover bubbling,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   142
				// but always pointing at the same event target
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   143
				.closest( this.options.items );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   144
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   145
		// No element to show a tooltip for or the tooltip is already open
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   146
		if ( !target.length || target.data( "ui-tooltip-id" ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   147
			return;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   148
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   149
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   150
		if ( target.attr( "title" ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   151
			target.data( "ui-tooltip-title", target.attr( "title" ) );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   152
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   153
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   154
		target.data( "ui-tooltip-open", true );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   155
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   156
		// kill parent tooltips, custom or native, for hover
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   157
		if ( event && event.type === "mouseover" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   158
			target.parents().each(function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   159
				var parent = $( this ),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   160
					blurEvent;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   161
				if ( parent.data( "ui-tooltip-open" ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   162
					blurEvent = $.Event( "blur" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   163
					blurEvent.target = blurEvent.currentTarget = this;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   164
					that.close( blurEvent, true );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   165
				}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   166
				if ( parent.attr( "title" ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   167
					parent.uniqueId();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   168
					that.parents[ this.id ] = {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   169
						element: this,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   170
						title: parent.attr( "title" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   171
					};
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   172
					parent.attr( "title", "" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   173
				}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   174
			});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   175
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   176
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   177
		this._updateContent( target, event );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   178
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   179
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   180
	_updateContent: function( target, event ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   181
		var content,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   182
			contentOption = this.options.content,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   183
			that = this,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   184
			eventType = event ? event.type : null;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   185
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   186
		if ( typeof contentOption === "string" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   187
			return this._open( event, target, contentOption );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   188
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   189
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   190
		content = contentOption.call( target[0], function( response ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   191
			// ignore async response if tooltip was closed already
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   192
			if ( !target.data( "ui-tooltip-open" ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   193
				return;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   194
			}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   195
			// IE may instantly serve a cached response for ajax requests
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   196
			// delay this call to _open so the other call to _open runs first
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   197
			that._delay(function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   198
				// jQuery creates a special event for focusin when it doesn't
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   199
				// exist natively. To improve performance, the native event
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   200
				// object is reused and the type is changed. Therefore, we can't
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   201
				// rely on the type being correct after the event finished
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   202
				// bubbling, so we set it back to the previous value. (#8740)
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   203
				if ( event ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   204
					event.type = eventType;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   205
				}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   206
				this._open( event, target, response );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   207
			});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   208
		});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   209
		if ( content ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   210
			this._open( event, target, content );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   211
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   212
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   213
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   214
	_open: function( event, target, content ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   215
		var tooltip, events, delayedShow,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   216
			positionOption = $.extend( {}, this.options.position );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   217
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   218
		if ( !content ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   219
			return;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   220
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   221
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   222
		// Content can be updated multiple times. If the tooltip already
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   223
		// exists, then just update the content and bail.
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   224
		tooltip = this._find( target );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   225
		if ( tooltip.length ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   226
			tooltip.find( ".ui-tooltip-content" ).html( content );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   227
			return;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   228
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   229
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   230
		// if we have a title, clear it to prevent the native tooltip
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   231
		// we have to check first to avoid defining a title if none exists
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   232
		// (we don't want to cause an element to start matching [title])
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   233
		//
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   234
		// We use removeAttr only for key events, to allow IE to export the correct
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   235
		// accessible attributes. For mouse events, set to empty string to avoid
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   236
		// native tooltip showing up (happens only when removing inside mouseover).
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   237
		if ( target.is( "[title]" ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   238
			if ( event && event.type === "mouseover" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   239
				target.attr( "title", "" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   240
			} else {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   241
				target.removeAttr( "title" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   242
			}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   243
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   244
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   245
		tooltip = this._tooltip( target );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   246
		addDescribedBy( target, tooltip.attr( "id" ) );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   247
		tooltip.find( ".ui-tooltip-content" ).html( content );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   248
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   249
		function position( event ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   250
			positionOption.of = event;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   251
			if ( tooltip.is( ":hidden" ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   252
				return;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   253
			}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   254
			tooltip.position( positionOption );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   255
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   256
		if ( this.options.track && event && /^mouse/.test( event.type ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   257
			this._on( this.document, {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   258
				mousemove: position
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   259
			});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   260
			// trigger once to override element-relative positioning
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   261
			position( event );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   262
		} else {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   263
			tooltip.position( $.extend({
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   264
				of: target
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   265
			}, this.options.position ) );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   266
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   267
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   268
		tooltip.hide();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   269
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   270
		this._show( tooltip, this.options.show );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   271
		// Handle tracking tooltips that are shown with a delay (#8644). As soon
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   272
		// as the tooltip is visible, position the tooltip using the most recent
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   273
		// event.
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   274
		if ( this.options.show && this.options.show.delay ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   275
			delayedShow = this.delayedShow = setInterval(function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   276
				if ( tooltip.is( ":visible" ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   277
					position( positionOption.of );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   278
					clearInterval( delayedShow );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   279
				}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   280
			}, $.fx.interval );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   281
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   282
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   283
		this._trigger( "open", event, { tooltip: tooltip } );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   284
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   285
		events = {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   286
			keyup: function( event ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   287
				if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   288
					var fakeEvent = $.Event(event);
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   289
					fakeEvent.currentTarget = target[0];
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   290
					this.close( fakeEvent, true );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   291
				}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   292
			},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   293
			remove: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   294
				this._removeTooltip( tooltip );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   295
			}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   296
		};
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   297
		if ( !event || event.type === "mouseover" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   298
			events.mouseleave = "close";
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   299
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   300
		if ( !event || event.type === "focusin" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   301
			events.focusout = "close";
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   302
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   303
		this._on( true, target, events );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   304
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   305
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   306
	close: function( event ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   307
		var that = this,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   308
			target = $( event ? event.currentTarget : this.element ),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   309
			tooltip = this._find( target );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   310
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   311
		// disabling closes the tooltip, so we need to track when we're closing
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   312
		// to avoid an infinite loop in case the tooltip becomes disabled on close
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   313
		if ( this.closing ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   314
			return;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   315
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   316
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   317
		// Clear the interval for delayed tracking tooltips
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   318
		clearInterval( this.delayedShow );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   319
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   320
		// only set title if we had one before (see comment in _open())
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   321
		if ( target.data( "ui-tooltip-title" ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   322
			target.attr( "title", target.data( "ui-tooltip-title" ) );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   323
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   324
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   325
		removeDescribedBy( target );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   326
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   327
		tooltip.stop( true );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   328
		this._hide( tooltip, this.options.hide, function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   329
			that._removeTooltip( $( this ) );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   330
		});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   331
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   332
		target.removeData( "ui-tooltip-open" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   333
		this._off( target, "mouseleave focusout keyup" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   334
		// Remove 'remove' binding only on delegated targets
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   335
		if ( target[0] !== this.element[0] ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   336
			this._off( target, "remove" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   337
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   338
		this._off( this.document, "mousemove" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   339
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   340
		if ( event && event.type === "mouseleave" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   341
			$.each( this.parents, function( id, parent ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   342
				$( parent.element ).attr( "title", parent.title );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   343
				delete that.parents[ id ];
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   344
			});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   345
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   346
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   347
		this.closing = true;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   348
		this._trigger( "close", event, { tooltip: tooltip } );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   349
		this.closing = false;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   350
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   351
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   352
	_tooltip: function( element ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   353
		var id = "ui-tooltip-" + increments++,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   354
			tooltip = $( "<div>" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   355
				.attr({
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   356
					id: id,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   357
					role: "tooltip"
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   358
				})
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   359
				.addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " +
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   360
					( this.options.tooltipClass || "" ) );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   361
		$( "<div>" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   362
			.addClass( "ui-tooltip-content" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   363
			.appendTo( tooltip );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   364
		tooltip.appendTo( this.document[0].body );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   365
		this.tooltips[ id ] = element;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   366
		return tooltip;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   367
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   368
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   369
	_find: function( target ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   370
		var id = target.data( "ui-tooltip-id" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   371
		return id ? $( "#" + id ) : $();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   372
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   373
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   374
	_removeTooltip: function( tooltip ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   375
		tooltip.remove();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   376
		delete this.tooltips[ tooltip.attr( "id" ) ];
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   377
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   378
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   379
	_destroy: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   380
		var that = this;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   381
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   382
		// close open tooltips
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   383
		$.each( this.tooltips, function( id, element ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   384
			// Delegate to close method to handle common cleanup
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   385
			var event = $.Event( "blur" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   386
			event.target = event.currentTarget = element[0];
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   387
			that.close( event, true );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   388
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   389
			// Remove immediately; destroying an open tooltip doesn't use the
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   390
			// hide animation
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   391
			$( "#" + id ).remove();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   392
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   393
			// Restore the title
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   394
			if ( element.data( "ui-tooltip-title" ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   395
				element.attr( "title", element.data( "ui-tooltip-title" ) );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   396
				element.removeData( "ui-tooltip-title" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   397
			}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   398
		});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   399
	}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   400
});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   401
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   402
}( jQuery ) );