docs: function() {
  		
  		var self = this;
  		
  		// in case we're resetting the triggers
  		self._$origin.off('.'+ self.__namespace +'-triggerOpen');
  		
  		// if the device is touch capable, even if only mouse triggers
  		// are asked, we need to listen to touch events to know if the mouse
  		// events are actually emulated (so we can ignore them)
  		if (env.hasTouchCapability) {
  			
  			self._$origin.on(
  				'touchstart.'+ self.__namespace +'-triggerOpen ' +
  				'touchend.'+ self.__namespace +'-triggerOpen ' +
  				'touchcancel.'+ self.__namespace +'-triggerOpen',
  				function(event){
  					self._touchRecordEvent(event);
  				}
  			);
  		}
  		
  		// mouse click and touch tap work the same way
  		if (	self.__options.triggerOpen.click
  			||	(self.__options.triggerOpen.tap && env.hasTouchCapability)
  		) {
  			
  			var eventNames = '';
  			if (self.__options.triggerOpen.click) {
  				eventNames += 'click.'+ self.__namespace +'-triggerOpen ';
  			}
  			if (self.__options.triggerOpen.tap && env.hasTouchCapability) {
  				eventNames += 'touchend.'+ self.__namespace +'-triggerOpen';
  			}
  			
  			self._$origin.on(eventNames, function(event) {
  				if (self._touchIsMeaningfulEvent(event)) {
  					self._open(event);
  				}
  			});
  		}
  		
  		// mouseenter and touch start work the same way
  		if (	self.__options.triggerOpen.mouseenter
  			||	(self.__options.triggerOpen.touchstart && env.hasTouchCapability)
  		) {
  			
  			var eventNames = '';
  			if (self.__options.triggerOpen.mouseenter) {
  				eventNames += 'mouseenter.'+ self.__namespace +'-triggerOpen ';
  			}
  			if (self.__options.triggerOpen.touchstart && env.hasTouchCapability) {
  				eventNames += 'touchstart.'+ self.__namespace +'-triggerOpen';
  			}
  			
  			self._$origin.on(eventNames, function(event) {
  				if (	self._touchIsTouchEvent(event)
  					||	!self._touchIsEmulatedEvent(event)
  				) {
  					self.__pointerIsOverOrigin = true;
  					self._openShortly(event);
  				}
  			});
  		}
  		
  		// info for the mouseleave/touchleave close triggers when they use a delay
  		if (	self.__options.triggerClose.mouseleave
  			||	(self.__options.triggerClose.touchleave && env.hasTouchCapability)
  		) {
  			
  			var eventNames = '';
  			if (self.__options.triggerClose.mouseleave) {
  				eventNames += 'mouseleave.'+ self.__namespace +'-triggerOpen ';
  			}
  			if (self.__options.triggerClose.touchleave && env.hasTouchCapability) {
  				eventNames += 'touchend.'+ self.__namespace +'-triggerOpen touchcancel.'+ self.__namespace +'-triggerOpen';
  			}
  			
  			self._$origin.on(eventNames, function(event) {
  				
  				if (self._touchIsMeaningfulEvent(event)) {
  					self.__pointerIsOverOrigin = false;
  				}
  			});
  		}
  		
  		return self;
  	}