/** * BWS tooltip function */ (function($) { "use strict"; $( document ).ready( function() { jQuery.bwsTooltip = function( pointer_options ) { var pointer_buttons = pointer_options['buttons']; /* extend pointer options - add close button */ pointer_options = $.extend( pointer_options, { buttons: function(event, t) { var button = ''; /* check and add dismiss-type buttons */ for ( var but in pointer_buttons ) { if ( typeof pointer_buttons[ but ]['type'] != 'undefined' && pointer_buttons[ but ]['type'] == 'dismiss' && typeof pointer_buttons[ but ]['text'] != 'undefined' && pointer_buttons[ but ]['text'] != '' ) { button += '' + pointer_buttons[ but ]['text'] + ''; } } button = jQuery( button ); button.on( 'click.pointer', function () { t.element.pointer( 'close' ); } ); return button; }, /* add ajax dismiss functionality */ close : $.proxy( function () { if ( pointer_options['actions']['onload'] == true ) { $.post( ajaxurl, this ); } }, { pointer: pointer_options['tooltip_id'], action: 'dismiss-wp-pointer' } ) } ); /* function to display pointer */ function displayPointer( cssSelector ) { cssSelector.pointer( pointer_options ).pointer( { pointerClass: 'wp-pointer ' + pointer_options["tooltip_id"], content: pointer_options['content'], position: { edge: pointer_options['position']['edge'], align: pointer_options['position']['align'], }, } ).pointer( 'open' ); /* display buttons that are not type of dismiss */ for ( var but in pointer_buttons ) { if ( typeof pointer_buttons[ but ]['type'] != 'undefined' && pointer_buttons[ but ]['type'] != 'dismiss' && typeof pointer_buttons[ but ]['text'] != 'undefined' && pointer_buttons[ but ]['text'] != '' ) { $( '.' + pointer_options['tooltip_id'] + ' .button-secondary' ).first().before( '' + pointer_buttons[ but ]['text'] + '' ); }; } /* adjust position of pointer */ var topPos, leftPos, pointerZindex; topPos = parseInt( $( "." + pointer_options["tooltip_id"] ).css( "top" ) ) + parseInt( pointer_options['position']['pos-top'] ); leftPos = parseInt( $( "." + pointer_options["tooltip_id"] ).css( "left" ) ) + parseInt( pointer_options['position']['pos-left'] ); if ( pointer_options['position']['align'] == 'left' ) { leftPos += cssSelector.outerWidth() / 2; }; $( "." + pointer_options["tooltip_id"] ).css( { "top": topPos + "px", "left": leftPos + "px" } ); /* adjust z-index if need */ pointerZindex = parseInt( $( "." + pointer_options["tooltip_id"] ).css( "z-index" ) ); if ( pointerZindex != pointer_options['position']['zindex'] ) { $( "." + pointer_options["tooltip_id"] ).css( { "z-index": pointer_options['position']['zindex'] } ); } } /* display pointer for the first time */ if ( pointer_options['actions']['onload'] ) { if ( pointer_options['set_timeout'] > 0 ) { var settime = parseInt( pointer_options['set_timeout'] ); setTimeout( function() { displayPointer( $( pointer_options['css_selector'] ) ); }, settime ); } else { displayPointer( $( pointer_options['css_selector'] ) ); } } /* display pointer when clicked on selector */ if ( pointer_options['actions']['click'] ) { $( pointer_options['css_selector'] ).click( function () { displayPointer( $( this ) ); } ); } }; } ) })( jQuery );