docs: function(delay, e) {
                // Disable popover if ns-popover value is false
                if ($parse(attrs.nsPopover)(scope) === false) {
                  return;
                }
  
                $timeout.cancel(displayer_.id_);
  
                if (!isDef(delay)) {
                  delay = 0;
                }
  
                // hide any popovers being displayed
                if (options.group) {
                  $rootScope.$broadcast('ns:popover:hide', options.group);
                }
  
                displayer_.id_ = $timeout(function() {
                  if (true === $popover.isOpen) {
                    return;
                  }
  
                  $popover.isOpen = true;
                  $popover.css('display', 'block');
  
                  // position the popover accordingly to the defined placement around the
                  // |elm|.
                  var elmRect = getBoundingClientRect(elm[0]);
  
                  // If the mouse-relative options is specified we need to adjust the
                  // element client rect to the current mouse coordinates.
                  if (options.mouseRelative) {
                    elmRect = adjustRect(elmRect, options.mouseRelativeX, options.mouseRelativeY, e);
                  }
  
                  move($popover, placement_, align_, elmRect, $triangle);
                  addEventListeners();
  
                  // Hide the popover without delay on the popover click events.
                  if (true === options.hideOnInsideClick) {
                    $popover.on('click', insideClickHandler);
                  }
  
                  // Hide the popover without delay on outside click events.
                  if (true === options.hideOnOutsideClick) {
                    $document.on('click', outsideClickHandler);
                  }
  
                  // Hide the popover without delay on the button click events.
                  if (true === options.hideOnButtonClick) {
                    elm.on('click', buttonClickHandler);
                  }
  
                  // Call the open callback
                  options.onOpen(scope);
                }, delay*1000);
              }