All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.resources.scripts.vendor.plugins.ui.jquery.tipsy.js Maven / Gradle / Ivy

Go to download

Pluggable data management solution for Java web applications developed in a "Rapid" manner

There is a newer version: 1.2.0.RC1
Show newest version
(function ( $ ) {
	$.fn.tipsy = function ( options ) {

		options = $.extend( {}, $.fn.tipsy.defaults, options );

		return this.each( function () {

			var opts = $.fn.tipsy.elementOptions( this, options );

			$( this ).hover( function () {

				$.data( this, 'cancel.tipsy', true );

				var tip = $.data( this, 'active.tipsy' );
				if ( !tip ) {
					tip = $( '
' ); tip.css( {position: 'absolute', zIndex: 100000} ); $.data( this, 'active.tipsy', tip ); } if ( $( this ).attr( 'title' ) || typeof($( this ).attr( 'original-title' )) != 'string' ) { $( this ).attr( 'original-title', $( this ).attr( 'title' ) || '' ).removeAttr( 'title' ); } var title; if ( typeof opts.title == 'string' ) { title = $( this ).attr( opts.title == 'title' ? 'original-title' : opts.title ); } else if ( typeof opts.title == 'function' ) { title = opts.title.call( this ); } tip.find( '.tipsy-inner' )[opts.html ? 'html' : 'text']( title || opts.fallback ); var pos = $.extend( {}, $( this ).offset(), {width: this.offsetWidth, height: this.offsetHeight} ); tip.get( 0 ).className = 'tipsy'; // reset classname in case of dynamic gravity tip.remove().css( {top: 0, left: 0, visibility: 'hidden', display: 'block'} ).appendTo( document.body ); var actualWidth = tip[0].offsetWidth, actualHeight = tip[0].offsetHeight; var gravity = (typeof opts.gravity == 'function') ? opts.gravity.call( this ) : opts.gravity; switch ( gravity.charAt( 0 ) ) { case 'n': tip.css( {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2} ).addClass( 'tipsy-north' ); break; case 's': tip.css( {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2} ).addClass( 'tipsy-south' ); break; case 'e': tip.css( {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth} ).addClass( 'tipsy-east' ); break; case 'w': tip.css( {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width} ).addClass( 'tipsy-west' ); break; } if ( opts.fade ) { tip.css( {opacity: 0, display: 'block', visibility: 'visible'} ).animate( {opacity: 0.8} ); } else { tip.css( {visibility: 'visible'} ); } }, function () { $.data( this, 'cancel.tipsy', false ); var self = this; setTimeout( function () { if ( $.data( this, 'cancel.tipsy' ) ) { return; } var tip = $.data( self, 'active.tipsy' ); if ( opts.fade ) { tip.stop().fadeOut( function () { $( this ).remove(); } ); } else { tip.remove(); } }, 100 ); } ); } ); }; // Overwrite this method to provide options on a per-element basis. // For example, you could store the gravity in a 'tipsy-gravity' attribute: // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' }); // (remember - do not modify 'options' in place!) $.fn.tipsy.elementOptions = function ( ele, options ) { return $.metadata ? $.extend( {}, options, $( ele ).metadata() ) : options; }; $.fn.tipsy.defaults = { fade: false, fallback: '', gravity: 'n', html: false, title: 'title' }; $.fn.tipsy.autoNS = function () { return $( this ).offset().top > ($( document ).scrollTop() + $( window ).height() / 2) ? 's' : 'n'; }; $.fn.tipsy.autoWE = function () { return $( this ).offset().left > ($( document ).scrollLeft() + $( window ).width() / 2) ? 'e' : 'w'; }; })( jQuery );




© 2015 - 2024 Weber Informatics LLC | Privacy Policy