| define( [ | 
 | 	"../core", | 
 | 	"../var/document", | 
 | 	"../data/var/dataPriv", | 
 | 	"../data/var/acceptData", | 
 | 	"../var/hasOwn", | 
 | 	"../var/isFunction", | 
 | 	"../var/isWindow", | 
 | 	"../event" | 
 | ], function( jQuery, document, dataPriv, acceptData, hasOwn, isFunction, isWindow ) { | 
 |  | 
 | "use strict"; | 
 |  | 
 | var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, | 
 | 	stopPropagationCallback = function( e ) { | 
 | 		e.stopPropagation(); | 
 | 	}; | 
 |  | 
 | jQuery.extend( jQuery.event, { | 
 |  | 
 | 	trigger: function( event, data, elem, onlyHandlers ) { | 
 |  | 
 | 		var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, | 
 | 			eventPath = [ elem || document ], | 
 | 			type = hasOwn.call( event, "type" ) ? event.type : event, | 
 | 			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; | 
 |  | 
 | 		cur = lastElement = tmp = elem = elem || document; | 
 |  | 
 | 		// Don't do events on text and comment nodes | 
 | 		if ( elem.nodeType === 3 || elem.nodeType === 8 ) { | 
 | 			return; | 
 | 		} | 
 |  | 
 | 		// focus/blur morphs to focusin/out; ensure we're not firing them right now | 
 | 		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { | 
 | 			return; | 
 | 		} | 
 |  | 
 | 		if ( type.indexOf( "." ) > -1 ) { | 
 |  | 
 | 			// Namespaced trigger; create a regexp to match event type in handle() | 
 | 			namespaces = type.split( "." ); | 
 | 			type = namespaces.shift(); | 
 | 			namespaces.sort(); | 
 | 		} | 
 | 		ontype = type.indexOf( ":" ) < 0 && "on" + type; | 
 |  | 
 | 		// Caller can pass in a jQuery.Event object, Object, or just an event type string | 
 | 		event = event[ jQuery.expando ] ? | 
 | 			event : | 
 | 			new jQuery.Event( type, typeof event === "object" && event ); | 
 |  | 
 | 		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) | 
 | 		event.isTrigger = onlyHandlers ? 2 : 3; | 
 | 		event.namespace = namespaces.join( "." ); | 
 | 		event.rnamespace = event.namespace ? | 
 | 			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : | 
 | 			null; | 
 |  | 
 | 		// Clean up the event in case it is being reused | 
 | 		event.result = undefined; | 
 | 		if ( !event.target ) { | 
 | 			event.target = elem; | 
 | 		} | 
 |  | 
 | 		// Clone any incoming data and prepend the event, creating the handler arg list | 
 | 		data = data == null ? | 
 | 			[ event ] : | 
 | 			jQuery.makeArray( data, [ event ] ); | 
 |  | 
 | 		// Allow special events to draw outside the lines | 
 | 		special = jQuery.event.special[ type ] || {}; | 
 | 		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { | 
 | 			return; | 
 | 		} | 
 |  | 
 | 		// Determine event propagation path in advance, per W3C events spec (trac-9951) | 
 | 		// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724) | 
 | 		if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { | 
 |  | 
 | 			bubbleType = special.delegateType || type; | 
 | 			if ( !rfocusMorph.test( bubbleType + type ) ) { | 
 | 				cur = cur.parentNode; | 
 | 			} | 
 | 			for ( ; cur; cur = cur.parentNode ) { | 
 | 				eventPath.push( cur ); | 
 | 				tmp = cur; | 
 | 			} | 
 |  | 
 | 			// Only add window if we got to document (e.g., not plain obj or detached DOM) | 
 | 			if ( tmp === ( elem.ownerDocument || document ) ) { | 
 | 				eventPath.push( tmp.defaultView || tmp.parentWindow || window ); | 
 | 			} | 
 | 		} | 
 |  | 
 | 		// Fire handlers on the event path | 
 | 		i = 0; | 
 | 		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { | 
 | 			lastElement = cur; | 
 | 			event.type = i > 1 ? | 
 | 				bubbleType : | 
 | 				special.bindType || type; | 
 |  | 
 | 			// jQuery handler | 
 | 			handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && | 
 | 				dataPriv.get( cur, "handle" ); | 
 | 			if ( handle ) { | 
 | 				handle.apply( cur, data ); | 
 | 			} | 
 |  | 
 | 			// Native handler | 
 | 			handle = ontype && cur[ ontype ]; | 
 | 			if ( handle && handle.apply && acceptData( cur ) ) { | 
 | 				event.result = handle.apply( cur, data ); | 
 | 				if ( event.result === false ) { | 
 | 					event.preventDefault(); | 
 | 				} | 
 | 			} | 
 | 		} | 
 | 		event.type = type; | 
 |  | 
 | 		// If nobody prevented the default action, do it now | 
 | 		if ( !onlyHandlers && !event.isDefaultPrevented() ) { | 
 |  | 
 | 			if ( ( !special._default || | 
 | 				special._default.apply( eventPath.pop(), data ) === false ) && | 
 | 				acceptData( elem ) ) { | 
 |  | 
 | 				// Call a native DOM method on the target with the same name as the event. | 
 | 				// Don't do default actions on window, that's where global variables be (trac-6170) | 
 | 				if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { | 
 |  | 
 | 					// Don't re-trigger an onFOO event when we call its FOO() method | 
 | 					tmp = elem[ ontype ]; | 
 |  | 
 | 					if ( tmp ) { | 
 | 						elem[ ontype ] = null; | 
 | 					} | 
 |  | 
 | 					// Prevent re-triggering of the same event, since we already bubbled it above | 
 | 					jQuery.event.triggered = type; | 
 |  | 
 | 					if ( event.isPropagationStopped() ) { | 
 | 						lastElement.addEventListener( type, stopPropagationCallback ); | 
 | 					} | 
 |  | 
 | 					elem[ type ](); | 
 |  | 
 | 					if ( event.isPropagationStopped() ) { | 
 | 						lastElement.removeEventListener( type, stopPropagationCallback ); | 
 | 					} | 
 |  | 
 | 					jQuery.event.triggered = undefined; | 
 |  | 
 | 					if ( tmp ) { | 
 | 						elem[ ontype ] = tmp; | 
 | 					} | 
 | 				} | 
 | 			} | 
 | 		} | 
 |  | 
 | 		return event.result; | 
 | 	}, | 
 |  | 
 | 	// Piggyback on a donor event to simulate a different one | 
 | 	// Used only for `focus(in | out)` events | 
 | 	simulate: function( type, elem, event ) { | 
 | 		var e = jQuery.extend( | 
 | 			new jQuery.Event(), | 
 | 			event, | 
 | 			{ | 
 | 				type: type, | 
 | 				isSimulated: true | 
 | 			} | 
 | 		); | 
 |  | 
 | 		jQuery.event.trigger( e, null, elem ); | 
 | 	} | 
 |  | 
 | } ); | 
 |  | 
 | jQuery.fn.extend( { | 
 |  | 
 | 	trigger: function( type, data ) { | 
 | 		return this.each( function() { | 
 | 			jQuery.event.trigger( type, data, this ); | 
 | 		} ); | 
 | 	}, | 
 | 	triggerHandler: function( type, data ) { | 
 | 		var elem = this[ 0 ]; | 
 | 		if ( elem ) { | 
 | 			return jQuery.event.trigger( type, data, elem, true ); | 
 | 		} | 
 | 	} | 
 | } ); | 
 |  | 
 | return jQuery; | 
 | } ); |