define( [
    './core',
    './var/support',
    './var/document',
    './core/init', // Needed for hasOwn support test
	// This is listed as a dependency for build order, but it's still optional in builds
    './core/ready'
], function( jQuery, support, document ) {

// Support: IE<9
// Iteration over object's inherited properties before its own
    var i;
    for ( i in jQuery( support ) ) {
        break;
    }
    support.ownFirst = i === '0';

// Note: most support tests are defined in their respective modules.
// false until the test is run
    support.inlineBlockNeedsLayout = false;

// Execute ASAP in case we need to set body.style.zoom
    jQuery( function() {

	// Minified: var a,b,c,d
        var val, div, body, container;

        body = document.getElementsByTagName( 'body' )[ 0 ];
        if ( !body || !body.style ) {

		// Return for frameset docs that don't have a body
            return;
        }

	// Setup
        div = document.createElement( 'div' );
        container = document.createElement( 'div' );
        container.style.cssText = 'position:absolute;border:0;width:0;height:0;top:0;left:-9999px';
        body.appendChild( container ).appendChild( div );

        if ( typeof div.style.zoom !== 'undefined' ) {

		// Support: IE<8
		// Check if natively block-level elements act like inline-block
		// elements when setting their display to 'inline' and giving
		// them layout
            div.style.cssText = 'display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1';

            support.inlineBlockNeedsLayout = val = div.offsetWidth === 3;
            if ( val ) {

			// Prevent IE 6 from affecting layout for positioned elements #11048
			// Prevent IE from shrinking the body in IE 7 mode #12869
			// Support: IE<8
                body.style.zoom = 1;
            }
        }

        body.removeChild( container );
    } );

    return support;
} );
