dom = {},
// Detect support for CSS 3D transforms
- supports3DTransforms = document.body.style['perspectiveProperty'] !== undefined ||
- document.body.style['WebkitPerspective'] !== undefined ||
+ supports3DTransforms = document.body.style['WebkitPerspective'] !== undefined ||
document.body.style['MozPerspective'] !== undefined ||
document.body.style['msPerspective'] !== undefined ||
- document.body.style['OPerspective'] !== undefined,
+ document.body.style['OPerspective'] !== undefined ||
+ document.body.style['perspective'] !== undefined,
- supports2DTransforms = document.body.style['transformProperty'] !== undefined ||
- document.body.style['WebkitTransform'] !== undefined ||
+ supports2DTransforms = document.body.style['WebkitTransform'] !== undefined ||
document.body.style['MozTransform'] !== undefined ||
document.body.style['msTransform'] !== undefined ||
- document.body.style['OTransform'] !== undefined,
+ document.body.style['OTransform'] !== undefined ||
+ document.body.style['transform'] !== undefined,
+
+ // Detect support for elem.classList
+ supportsClassList = !!document.body.classList;
// Throttles mouse wheel navigation
mouseWheelTimeout = 0,
*/
function initialize( options ) {
- if( !supports2DTransforms && !supports3DTransforms ) {
+ if( ( !supports2DTransforms && !supports3DTransforms ) || !supportsClassList ) {
document.body.setAttribute( 'class', 'no-transforms' );
- // If the browser doesn't support transforms we won't be
+ // If the browser doesn't support core features we won't be
// using JavaScript to control the presentation
return;
}
// Copy options over to our config object
extend( config, options );
+ // Updates the presentation to match the current configuration values
+ configure();
+
+ // Read the initial hash
+ readURL();
+
+ // Set up hiding of the browser address bar
+ if( navigator.userAgent.match( /(iphone|ipod|android)/i ) ) {
+ // Give the page some scrollable overflow
+ document.documentElement.style.overflow = 'scroll';
+ document.body.style.height = '120%';
+
+ // Events that should trigger the address bar to hide
+ window.addEventListener( 'load', removeAddressBar, false );
+ window.addEventListener( 'orientationchange', removeAddressBar, false );
+ }
+
+ }
+
+ function configure() {
// Fall back on the 2D transform theme 'linear'
if( supports3DTransforms === false ) {
config.transition = 'linear';
// Add some 3D magic to our anchors
linkify();
}
-
- // Read the initial hash
- readURL();
-
- // Set up hiding of the browser address bar
- if( navigator.userAgent.match( /(iphone|ipod|android)/i ) ) {
- // Give the page some scrollable overflow
- document.documentElement.style.overflow = 'scroll';
- document.body.style.height = '120%';
-
- // Events that should trigger the address bar to hide
- window.addEventListener( 'load', removeAddressBar, false );
- window.addEventListener( 'orientationchange', removeAddressBar, false );
- }
-
}
function addEventListeners() {
}
}
+ /**
+ * Measures the distance in pixels between point a
+ * and point b.
+ *
+ * @param {Object} a point with x/y properties
+ * @param {Object} b point with x/y properties
+ */
function distanceBetween( a, b ) {
var dx = a.x - b.x,
dy = a.y - b.y;