diff --git a/openseadragon.js b/openseadragon.js index c53f6d6f..5e8f8387 100644 --- a/openseadragon.js +++ b/openseadragon.js @@ -1,3 +1,5 @@ +/*globals OpenSeadragon */ + /** * @version OpenSeadragon 0.9.92 * @@ -239,7 +241,7 @@ * * @returns {OpenSeadragon.Viewer} */ -OpenSeadragon = window.OpenSeadragon || function( options ){ +window.OpenSeadragon = window.OpenSeadragon || function( options ){ return new OpenSeadragon.Viewer( options ); @@ -1869,6 +1871,7 @@ OpenSeadragon = window.OpenSeadragon || function( options ){ }( OpenSeadragon )); +/*globals OpenSeadragon */ (function($){ @@ -1956,7 +1959,7 @@ $.EventHandler.prototype = { if ( handler ) { if ( !eventArgs ) { - eventArgs = new Object(); + eventArgs = {}; } handler( this, eventArgs ); @@ -1965,6 +1968,7 @@ $.EventHandler.prototype = { }; }( OpenSeadragon )); +/*globals OpenSeadragon */ (function( $ ){ @@ -2287,7 +2291,7 @@ $.EventHandler.prototype = { delegate.tracking = true; ACTIVE[ tracker.hash ] = tracker; } - }; + } /** * Stops tracking mouse events on this element. @@ -2322,7 +2326,7 @@ $.EventHandler.prototype = { delegate.tracking = false; delete ACTIVE[ tracker.hash ]; } - }; + } /** * @private @@ -2330,7 +2334,7 @@ $.EventHandler.prototype = { */ function hasMouse( tracker ) { return THIS[ tracker.hash ].insideElement; - }; + } /** * Begin capturing mouse events on this element. @@ -2376,7 +2380,7 @@ $.EventHandler.prototype = { } delegate.capturing = true; } - }; + } /** @@ -2423,7 +2427,7 @@ $.EventHandler.prototype = { } delegate.capturing = false; } - }; + } /** @@ -2437,7 +2441,7 @@ $.EventHandler.prototype = { handler( ACTIVE[ otherHash ], event ); } } - }; + } /** @@ -2456,7 +2460,7 @@ $.EventHandler.prototype = { $.cancelEvent( event ); } } - }; + } /** @@ -2475,7 +2479,7 @@ $.EventHandler.prototype = { $.cancelEvent( event ); } } - }; + } /** @@ -2495,7 +2499,7 @@ $.EventHandler.prototype = { $.cancelEvent( event ); } } - }; + } /** @@ -2542,7 +2546,7 @@ $.EventHandler.prototype = { $.cancelEvent( event ); } } - }; + } /** @@ -2589,7 +2593,7 @@ $.EventHandler.prototype = { $.cancelEvent( event ); } } - }; + } /** @@ -2635,7 +2639,7 @@ $.EventHandler.prototype = { // add us to the list CAPTURING.push( tracker ); } - }; + } /** * @private @@ -2665,7 +2669,7 @@ $.EventHandler.prototype = { } event.preventDefault(); - }; + } /** @@ -2702,7 +2706,7 @@ $.EventHandler.prototype = { if ( insideElementPress && insideElementRelease ) { handleMouseClick( tracker, event ); } - }; + } /** @@ -2724,7 +2728,7 @@ $.EventHandler.prototype = { //$.console.debug("pinch end"); } event.preventDefault(); - }; + } /** @@ -2761,7 +2765,7 @@ $.EventHandler.prototype = { ); $.stopEvent( event ); - }; + } /** @@ -2778,7 +2782,7 @@ $.EventHandler.prototype = { onMouseUp( tracker, event ); } releaseMouse( tracker ); - }; + } /** @@ -2789,7 +2793,7 @@ $.EventHandler.prototype = { if ( tracker.clickHandler ) { $.cancelEvent( event ); } - }; + } /** @@ -2828,7 +2832,7 @@ $.EventHandler.prototype = { $.cancelEvent( event ); } } - }; + } /** @@ -2861,7 +2865,7 @@ $.EventHandler.prototype = { $.cancelEvent( event ); } } - }; + } /** @@ -2888,7 +2892,7 @@ $.EventHandler.prototype = { $.cancelEvent( event ); } } - }; + } /** @@ -2932,7 +2936,7 @@ $.EventHandler.prototype = { } } event.preventDefault(); - }; + } /** * Only triggered once by the deepest element that initially received @@ -2950,7 +2954,7 @@ $.EventHandler.prototype = { } $.stopEvent( event ); - }; + } /** * @private @@ -2958,7 +2962,7 @@ $.EventHandler.prototype = { */ function getMouseAbsolute( event ) { return $.getMousePosition( event ); - }; + } /** * @private @@ -2969,7 +2973,7 @@ $.EventHandler.prototype = { offset = $.getElementPosition( element ); return mouse.minus( offset ); - }; + } /** * @private @@ -2986,7 +2990,7 @@ $.EventHandler.prototype = { } } return elementA == elementB; - }; + } /** * @private @@ -2994,7 +2998,7 @@ $.EventHandler.prototype = { */ function onGlobalMouseDown() { IS_BUTTON_DOWN = true; - }; + } /** * @private @@ -3002,7 +3006,7 @@ $.EventHandler.prototype = { */ function onGlobalMouseUp() { IS_BUTTON_DOWN = false; - }; + } (function () { @@ -3016,6 +3020,7 @@ $.EventHandler.prototype = { })(); }( OpenSeadragon )); +/*globals OpenSeadragon */ (function( $ ){ @@ -3121,6 +3126,8 @@ $.Control.prototype = { }; }( OpenSeadragon )); +/*globals OpenSeadragon */ + (function( $ ){ //id hash for private properties; @@ -3178,8 +3185,8 @@ $.Control.prototype = { * @function */ addControl: function ( element, anchor ) { - var element = $.getElement( element ), - div = null; + element = $.getElement( element ); + var div = null; if ( getControlIndex( this, element ) >= 0 ) { return; // they're trying to add a duplicate control @@ -3210,8 +3217,8 @@ $.Control.prototype = { element.style.paddingLeft = "0px"; element.style.paddingTop = "0px"; break; - case $.ControlAnchor.NONE: default: + case $.ControlAnchor.NONE: div = this.container; element.style.margin = "0px"; element.style.padding = "0px"; @@ -3230,8 +3237,8 @@ $.Control.prototype = { * @return {OpenSeadragon.ControlDock} Chainable. */ removeControl: function ( element ) { - var element = $.getElement( element ), - i = getControlIndex( this, element ); + element = $.getElement( element ); + var i = getControlIndex( this, element ); if ( i >= 0 ) { this.controls[ i ].destroy(); @@ -3302,9 +3309,11 @@ $.Control.prototype = { } return -1; - }; + } -}( OpenSeadragon ));(function( $ ){ +}( OpenSeadragon ));/*globals OpenSeadragon */ + +(function( $ ){ // dictionary from hash to private properties var THIS = {}, @@ -3883,7 +3892,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype, abortControlsAutoHide( this ); } else { beginControlsAutoHide( this ); - }; + } }, @@ -4366,7 +4375,7 @@ function scheduleUpdate( viewer, updateFunc, prevUpdateTime ){ return window.setTimeout( function(){ updateFunc( viewer ); }, deltaTime ); -}; +} //provides a sequence in the fade animation @@ -4374,7 +4383,7 @@ function scheduleControlsFade( viewer ) { window.setTimeout( function(){ updateControlsFade( viewer ); }, 20); -}; +} //initiates an animation to hide the controls @@ -4390,7 +4399,7 @@ function beginControlsAutoHide( viewer ) { window.setTimeout( function(){ scheduleControlsFade( viewer ); }, viewer.controlsFadeDelay ); -}; +} //determines if fade animation is done or continues the animation @@ -4416,7 +4425,7 @@ function updateControlsFade( viewer ) { scheduleControlsFade( viewer ); } } -}; +} //stop the fade animation on the controls and show them @@ -4426,7 +4435,7 @@ function abortControlsAutoHide( viewer ) { for ( i = viewer.controls.length - 1; i >= 0; i-- ) { viewer.controls[ i ].setOpacity( 1.0 ); } -}; +} @@ -4435,12 +4444,12 @@ function abortControlsAutoHide( viewer ) { /////////////////////////////////////////////////////////////////////////////// function onFocus(){ abortControlsAutoHide( this ); -}; +} function onBlur(){ beginControlsAutoHide( this ); -}; +} function onCanvasClick( tracker, position, quick, shift ) { var zoomPreClick, @@ -4454,7 +4463,7 @@ function onCanvasClick( tracker, position, quick, shift ) { ); this.viewport.applyConstraints(); } -}; +} function onCanvasDrag( tracker, position, delta, shift ) { if ( this.viewport ) { @@ -4470,13 +4479,13 @@ function onCanvasDrag( tracker, position, delta, shift ) { ) ); } -}; +} function onCanvasRelease( tracker, position, insideElementPress, insideElementRelease ) { if ( insideElementPress && this.viewport ) { this.viewport.applyConstraints(); } -}; +} function onCanvasScroll( tracker, position, scroll, shift ) { var factor; @@ -4490,7 +4499,7 @@ function onCanvasScroll( tracker, position, scroll, shift ) { } //cancels event return false; -}; +} function onContainerExit( tracker, position, buttonDownElement, buttonDownAny ) { if ( !buttonDownElement ) { @@ -4499,7 +4508,7 @@ function onContainerExit( tracker, position, buttonDownElement, buttonDownAny ) beginControlsAutoHide( this ); } } -}; +} function onContainerRelease( tracker, position, insideElementPress, insideElementRelease ) { if ( !insideElementRelease ) { @@ -4508,12 +4517,12 @@ function onContainerRelease( tracker, position, insideElementPress, insideElemen beginControlsAutoHide( this ); } } -}; +} function onContainerEnter( tracker, position, buttonDownElement, buttonDownAny ) { THIS[ this.hash ].mouseInside = true; abortControlsAutoHide( this ); -}; +} /////////////////////////////////////////////////////////////////////////////// @@ -4531,7 +4540,7 @@ function updateMulti( viewer ) { beginTime = +new Date(); updateOnce( viewer ); scheduleUpdate( viewer, arguments.callee, beginTime ); -}; +} function updateOnce( viewer ) { @@ -4588,7 +4597,7 @@ function updateOnce( viewer ) { THIS[ viewer.hash ].animating = animated; //viewer.profiler.endUpdate(); -}; +} @@ -4597,7 +4606,7 @@ function updateOnce( viewer ) { /////////////////////////////////////////////////////////////////////////////// function resolveUrl( prefix, url ) { return prefix ? prefix + url : url; -}; +} @@ -4606,7 +4615,7 @@ function beginZoomingIn() { THIS[ this.hash ].zoomFactor = this.zoomPerSecond; THIS[ this.hash ].zooming = true; scheduleZoom( this ); -}; +} function beginZoomingOut() { @@ -4614,17 +4623,17 @@ function beginZoomingOut() { THIS[ this.hash ].zoomFactor = 1.0 / this.zoomPerSecond; THIS[ this.hash ].zooming = true; scheduleZoom( this ); -}; +} function endZooming() { THIS[ this.hash ].zooming = false; -}; +} function scheduleZoom( viewer ) { window.setTimeout( $.delegate( viewer, doZoom ), 10 ); -}; +} function doZoom() { @@ -4642,7 +4651,7 @@ function doZoom() { THIS[ this.hash ].lastZoomTime = currentTime; scheduleZoom( this ); } -}; +} function doSingleZoomIn() { @@ -4653,7 +4662,7 @@ function doSingleZoomIn() { ); this.viewport.applyConstraints(); } -}; +} function doSingleZoomOut() { @@ -4664,20 +4673,20 @@ function doSingleZoomOut() { ); this.viewport.applyConstraints(); } -}; +} function lightUp() { this.buttons.emulateEnter(); this.buttons.emulateExit(); -}; +} function onHome() { if ( this.viewport ) { this.viewport.goHome(); } -}; +} function onFullPage() { @@ -4690,22 +4699,24 @@ function onFullPage() { if ( this.viewport ) { this.viewport.applyConstraints(); } -}; +} function onPrevious(){ var previous = THIS[ this.hash ].sequence - 1; this.goToPage( previous ); -}; +} function onNext(){ var next = THIS[ this.hash ].sequence + 1; this.goToPage( next ); -}; +} }( OpenSeadragon )); +/*globals OpenSeadragon */ + (function( $ ){ /** @@ -4772,10 +4783,17 @@ $.Navigator = function( options ){ style.fontSize = '0px'; style.overflow = 'hidden'; style.border = '2px solid #900'; + //TODO: IE doesnt like this property being set //try{ style.outline = '2px auto #909'; }catch(e){/*ignore*/} + style.background = 'transparent'; - style.float = 'left'; //Webkit + + // We use square bracket notation on the statement below, because float is a keyword. + // This is important for the Google Closure compliler, if nothing else. + /*jshint sub:true */ + style['float'] = 'left'; //Webkit + style.cssFloat = 'left'; //Firefox style.styleFloat = 'left'; //IE style.zIndex = 999999999; @@ -4836,16 +4854,18 @@ $.Navigator = function( options ){ case 119://w case 87://W case 38://up arrow - shiftKey ? - _this.viewer.viewport.zoomBy(1.1): + if (shiftKey) + _this.viewer.viewport.zoomBy(1.1); + else _this.viewer.viewport.panBy(new $.Point(0, -0.05)); _this.viewer.viewport.applyConstraints(); return false; case 115://s case 83://S case 40://down arrow - shiftKey ? - _this.viewer.viewport.zoomBy(0.9): + if (shiftKey) + _this.viewer.viewport.zoomBy(0.9); + else _this.viewer.viewport.panBy(new $.Point(0, 0.05)); _this.viewer.viewport.applyConstraints(); return false; @@ -4939,7 +4959,7 @@ $.extend( $.Navigator.prototype, $.EventHandler.prototype, $.Viewer.prototype, { */ function onCanvasClick( tracker, position, quick, shift ) { this.displayRegion.focus(); -}; +} /** @@ -4961,7 +4981,7 @@ function onCanvasDrag( tracker, position, delta, shift ) { ) ); } -}; +} /** @@ -4973,7 +4993,7 @@ function onCanvasRelease( tracker, position, insideElementPress, insideElementRe if ( insideElementPress && this.viewer.viewport ) { this.viewer.viewport.applyConstraints(); } -}; +} /** @@ -4994,7 +5014,7 @@ function onCanvasScroll( tracker, position, scroll, shift ) { } //cancels event return false; -}; +} }( OpenSeadragon )); @@ -5089,6 +5109,7 @@ $.extend( $, { }); }( OpenSeadragon )); +/*globals OpenSeadragon */ (function( $ ){ @@ -5231,6 +5252,7 @@ $.Point.prototype = { }; }( OpenSeadragon )); +/*globals OpenSeadragon */ (function( $ ){ @@ -5609,7 +5631,7 @@ function processResponse( xhr ){ data = responseText; } return data; -}; +} /** @@ -5968,6 +5990,7 @@ function configureFromObject( tileSource, configuration ){ }; }( OpenSeadragon )); +/*globals OpenSeadragon */ (function( $ ){ @@ -6162,7 +6185,7 @@ function filterFiles( files ){ return a.height - b.height; }); -}; +} /** * @private @@ -6196,8 +6219,8 @@ function configureFromXML( tileSource, xmlDoc ){ conf.levels .push({ url: level.getAttribute( "url" ), - width: parseInt( level.getAttribute( "width" ) ), - height: parseInt( level.getAttribute( "height" ) ) + width: parseInt( level.getAttribute( "width" ), 10 ), + height: parseInt( level.getAttribute( "height" ), 10 ) }); } @@ -6215,7 +6238,7 @@ function configureFromXML( tileSource, xmlDoc ){ } throw new Error( 'Unknown element ' + rootName ); -}; +} /** * @private @@ -6226,9 +6249,10 @@ function configureFromObject( tileSource, configuration ){ return configuration.levels; -}; +} }( OpenSeadragon )); +/*globals OpenSeadragon */ (function( $ ){ @@ -6340,7 +6364,7 @@ $.extend( $.TileSourceCollection.prototype, $.TileSource.prototype, { }( OpenSeadragon )); - +/*globals OpenSeadragon */ (function( $ ){ @@ -6589,7 +6613,7 @@ function scheduleFade( button ) { window.setTimeout(function(){ updateFade( button ); }, 20 ); -}; +} function updateFade( button ) { var currentTime, @@ -6611,7 +6635,7 @@ function updateFade( button ) { scheduleFade( button ); } } -}; +} function beginFading( button ) { button.shouldFade = true; @@ -6619,14 +6643,14 @@ function beginFading( button ) { window.setTimeout( function(){ scheduleFade( button ); }, button.fadeDelay ); -}; +} function stopFading( button ) { button.shouldFade = false; if( button.imgGroup ){ $.setElementOpacity( button.imgGroup, 1.0, true ); } -}; +} function inTo( button, newState ) { @@ -6655,7 +6679,7 @@ function inTo( button, newState ) { } button.currentState = $.ButtonState.DOWN; } -}; +} function outTo( button, newState ) { @@ -6685,11 +6709,12 @@ function outTo( button, newState ) { beginFading( button ); button.currentState = $.ButtonState.REST; } -}; +} }( OpenSeadragon )); +/*globals OpenSeadragon */ (function( $ ){ /** @@ -6800,6 +6825,7 @@ $.ButtonGroup.prototype = { }( OpenSeadragon )); +/*globals OpenSeadragon */ (function( $ ){ @@ -7437,7 +7463,8 @@ function onKeyPress( tracker, keyCode, shiftKey ){ -}( OpenSeadragon )); +}( OpenSeadragon ));/*globals OpenSeadragon */ + (function( $ ){ /** @@ -7460,11 +7487,12 @@ $.DisplayRect = function( x, y, width, height, minLevel, maxLevel ) { this.minLevel = minLevel; this.maxLevel = maxLevel; -} +}; $.extend( $.DisplayRect.prototype, $.Rect.prototype ); }( OpenSeadragon )); +/*globals OpenSeadragon */ (function( $ ){ @@ -7572,7 +7600,7 @@ $.Spring.prototype = { ( this.target.time - this.start.time ) ); } -} +}; /** * @private @@ -7580,9 +7608,10 @@ $.Spring.prototype = { function transform( stiffness, x ) { return ( 1.0 - Math.exp( stiffness * -x ) ) / ( 1.0 - Math.exp( -stiffness ) ); -}; +} }( OpenSeadragon )); +/*globals OpenSeadragon */ (function( $ ){ @@ -7781,6 +7810,7 @@ $.Tile.prototype = { }; }( OpenSeadragon )); +/*globals OpenSeadragon */ (function( $ ){ @@ -7865,8 +7895,8 @@ $.Tile.prototype = { case $.OverlayPlacement.LEFT: position.y -= size.y / 2; break; - case $.OverlayPlacement.CENTER: default: + case $.OverlayPlacement.CENTER: position.x -= size.x / 2; position.y -= size.y / 2; break; @@ -7953,6 +7983,7 @@ $.Tile.prototype = { }; }( OpenSeadragon )); +/*globals OpenSeadragon */ (function( $ ){ @@ -8440,7 +8471,7 @@ function updateViewport( drawer ) { // because we haven't finished drawing, so drawer.updateAgain = true; } -}; +} function updateLevel( drawer, haveDrawn, level, levelOpacity, levelVisibility, viewportTL, viewportBR, currentTime, best ){ @@ -8486,7 +8517,7 @@ function updateLevel( drawer, haveDrawn, level, levelOpacity, levelVisibility, v } } return best; -}; +} function updateTile( drawer, drawLevel, haveDrawn, x, y, level, levelOpacity, levelVisibility, viewportCenter, numberOfTiles, currentTime, best){ @@ -8546,7 +8577,7 @@ function updateTile( drawer, drawLevel, haveDrawn, x, y, level, levelOpacity, le } return best; -}; +} function getTile( x, y, level, tileSource, tilesMatrix, time, numTiles, normHeight ) { var xMod, @@ -8587,7 +8618,7 @@ function getTile( x, y, level, tileSource, tilesMatrix, time, numTiles, normHeig tile.lastTouchTime = time; return tile; -}; +} function loadTile( drawer, tile, time ) { @@ -8602,7 +8633,7 @@ function loadTile( drawer, tile, time ) { } ); } -}; +} function onTileLoad( drawer, tile, time, image ) { var insertionIndex, @@ -8672,7 +8703,7 @@ function onTileLoad( drawer, tile, time, image ) { drawer.tilesLoaded[ insertionIndex ] = tile; drawer.updateAgain = true; -}; +} function positionTile( tile, overlap, viewport, viewportCenter, levelVisibility ){ @@ -8693,7 +8724,7 @@ function positionTile( tile, overlap, viewport, viewportCenter, levelVisibility tile.size = sizeC; tile.distance = tileDistance; tile.visibility = levelVisibility; -}; +} function blendTile( drawer, tile, x, y, level, levelOpacity, currentTime ){ @@ -8723,13 +8754,13 @@ function blendTile( drawer, tile, x, y, level, levelOpacity, currentTime ){ } return false; -}; +} function clearTiles( drawer ) { drawer.tilesMatrix = {}; drawer.tilesLoaded = []; -}; +} /** * @private @@ -8772,7 +8803,7 @@ function providesCoverage( coverage, level, x, y ) { coverage[ level ][ x ][ y ] === undefined || coverage[ level ][ x ][ y ] === true ); -}; +} /** * @private @@ -8792,7 +8823,7 @@ function isCovered( coverage, level, x, y ) { providesCoverage( coverage, level + 1, 2 * x + 1, 2 * y + 1 ) ); } -}; +} /** * @private @@ -8813,7 +8844,7 @@ function setCoverage( coverage, level, x, y, covers ) { } coverage[ level ][ x ][ y ] = covers; -}; +} /** * @private @@ -8824,7 +8855,7 @@ function setCoverage( coverage, level, x, y, covers ) { */ function resetCoverage( coverage, level ) { coverage[ level ] = {}; -}; +} /** * @private @@ -8841,7 +8872,7 @@ function getOverlayIndex( overlays, element ) { } return -1; -}; +} /** * @private @@ -8863,7 +8894,7 @@ function compareTiles( previousBest, tile ) { } return previousBest; -}; +} function finishLoadingImage( image, callback, successful, jobid ){ @@ -8878,7 +8909,7 @@ function finishLoadingImage( image, callback, successful, jobid ){ callback( image.src, successful ? image : null); }, 1 ); -}; +} function drawOverlays( viewport, overlays, container ){ @@ -8887,7 +8918,7 @@ function drawOverlays( viewport, overlays, container ){ for ( i = 0; i < length; i++ ) { drawOverlay( viewport, overlays[ i ], container ); } -}; +} function drawOverlay( viewport, overlay, container ){ @@ -8900,7 +8931,7 @@ function drawOverlay( viewport, overlay, container ){ true ); overlay.drawHTML( container ); -}; +} function drawTiles( drawer, lastDrawn ){ var i, @@ -8993,7 +9024,7 @@ function drawTiles( drawer, lastDrawn ){ tile.beingDrawn = true; } } -}; +} function drawDebugInfo( drawer, tile, count, i ){ @@ -9052,10 +9083,11 @@ function drawDebugInfo( drawer, tile, count, i ){ tile.position.y + 70 ); } -}; +} }( OpenSeadragon )); +/*globals OpenSeadragon */ (function( $ ){ diff --git a/src/button.js b/src/button.js index 3eb47196..7f3703fc 100644 --- a/src/button.js +++ b/src/button.js @@ -1,4 +1,4 @@ - +/*globals OpenSeadragon */ (function( $ ){ @@ -247,7 +247,7 @@ function scheduleFade( button ) { window.setTimeout(function(){ updateFade( button ); }, 20 ); -}; +} function updateFade( button ) { var currentTime, @@ -269,7 +269,7 @@ function updateFade( button ) { scheduleFade( button ); } } -}; +} function beginFading( button ) { button.shouldFade = true; @@ -277,14 +277,14 @@ function beginFading( button ) { window.setTimeout( function(){ scheduleFade( button ); }, button.fadeDelay ); -}; +} function stopFading( button ) { button.shouldFade = false; if( button.imgGroup ){ $.setElementOpacity( button.imgGroup, 1.0, true ); } -}; +} function inTo( button, newState ) { @@ -313,7 +313,7 @@ function inTo( button, newState ) { } button.currentState = $.ButtonState.DOWN; } -}; +} function outTo( button, newState ) { @@ -343,7 +343,7 @@ function outTo( button, newState ) { beginFading( button ); button.currentState = $.ButtonState.REST; } -}; +} diff --git a/src/buttongroup.js b/src/buttongroup.js index c6a4e1d0..06b6bf49 100644 --- a/src/buttongroup.js +++ b/src/buttongroup.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ /** diff --git a/src/control.js b/src/control.js index 970e6004..76f791af 100644 --- a/src/control.js +++ b/src/control.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ diff --git a/src/controldock.js b/src/controldock.js index f5e63b0d..26c9ad4e 100644 --- a/src/controldock.js +++ b/src/controldock.js @@ -1,3 +1,5 @@ +/*globals OpenSeadragon */ + (function( $ ){ //id hash for private properties; @@ -55,8 +57,8 @@ * @function */ addControl: function ( element, anchor ) { - var element = $.getElement( element ), - div = null; + element = $.getElement( element ); + var div = null; if ( getControlIndex( this, element ) >= 0 ) { return; // they're trying to add a duplicate control @@ -87,8 +89,8 @@ element.style.paddingLeft = "0px"; element.style.paddingTop = "0px"; break; - case $.ControlAnchor.NONE: default: + case $.ControlAnchor.NONE: div = this.container; element.style.margin = "0px"; element.style.padding = "0px"; @@ -107,8 +109,8 @@ * @return {OpenSeadragon.ControlDock} Chainable. */ removeControl: function ( element ) { - var element = $.getElement( element ), - i = getControlIndex( this, element ); + element = $.getElement( element ); + var i = getControlIndex( this, element ); if ( i >= 0 ) { this.controls[ i ].destroy(); @@ -179,6 +181,6 @@ } return -1; - }; + } }( OpenSeadragon )); \ No newline at end of file diff --git a/src/displayrectangle.js b/src/displayrectangle.js index 8e011377..90d3d91d 100644 --- a/src/displayrectangle.js +++ b/src/displayrectangle.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ @@ -21,7 +22,7 @@ $.DisplayRect = function( x, y, width, height, minLevel, maxLevel ) { this.minLevel = minLevel; this.maxLevel = maxLevel; -} +}; $.extend( $.DisplayRect.prototype, $.Rect.prototype ); diff --git a/src/drawer.js b/src/drawer.js index 26e7ecd3..af61110d 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ @@ -485,7 +486,7 @@ function updateViewport( drawer ) { // because we haven't finished drawing, so drawer.updateAgain = true; } -}; +} function updateLevel( drawer, haveDrawn, level, levelOpacity, levelVisibility, viewportTL, viewportBR, currentTime, best ){ @@ -531,7 +532,7 @@ function updateLevel( drawer, haveDrawn, level, levelOpacity, levelVisibility, v } } return best; -}; +} function updateTile( drawer, drawLevel, haveDrawn, x, y, level, levelOpacity, levelVisibility, viewportCenter, numberOfTiles, currentTime, best){ @@ -591,7 +592,7 @@ function updateTile( drawer, drawLevel, haveDrawn, x, y, level, levelOpacity, le } return best; -}; +} function getTile( x, y, level, tileSource, tilesMatrix, time, numTiles, normHeight ) { var xMod, @@ -632,7 +633,7 @@ function getTile( x, y, level, tileSource, tilesMatrix, time, numTiles, normHeig tile.lastTouchTime = time; return tile; -}; +} function loadTile( drawer, tile, time ) { @@ -647,7 +648,7 @@ function loadTile( drawer, tile, time ) { } ); } -}; +} function onTileLoad( drawer, tile, time, image ) { var insertionIndex, @@ -717,7 +718,7 @@ function onTileLoad( drawer, tile, time, image ) { drawer.tilesLoaded[ insertionIndex ] = tile; drawer.updateAgain = true; -}; +} function positionTile( tile, overlap, viewport, viewportCenter, levelVisibility ){ @@ -738,7 +739,7 @@ function positionTile( tile, overlap, viewport, viewportCenter, levelVisibility tile.size = sizeC; tile.distance = tileDistance; tile.visibility = levelVisibility; -}; +} function blendTile( drawer, tile, x, y, level, levelOpacity, currentTime ){ @@ -768,13 +769,13 @@ function blendTile( drawer, tile, x, y, level, levelOpacity, currentTime ){ } return false; -}; +} function clearTiles( drawer ) { drawer.tilesMatrix = {}; drawer.tilesLoaded = []; -}; +} /** * @private @@ -817,7 +818,7 @@ function providesCoverage( coverage, level, x, y ) { coverage[ level ][ x ][ y ] === undefined || coverage[ level ][ x ][ y ] === true ); -}; +} /** * @private @@ -837,7 +838,7 @@ function isCovered( coverage, level, x, y ) { providesCoverage( coverage, level + 1, 2 * x + 1, 2 * y + 1 ) ); } -}; +} /** * @private @@ -858,7 +859,7 @@ function setCoverage( coverage, level, x, y, covers ) { } coverage[ level ][ x ][ y ] = covers; -}; +} /** * @private @@ -869,7 +870,7 @@ function setCoverage( coverage, level, x, y, covers ) { */ function resetCoverage( coverage, level ) { coverage[ level ] = {}; -}; +} /** * @private @@ -886,7 +887,7 @@ function getOverlayIndex( overlays, element ) { } return -1; -}; +} /** * @private @@ -908,7 +909,7 @@ function compareTiles( previousBest, tile ) { } return previousBest; -}; +} function finishLoadingImage( image, callback, successful, jobid ){ @@ -923,7 +924,7 @@ function finishLoadingImage( image, callback, successful, jobid ){ callback( image.src, successful ? image : null); }, 1 ); -}; +} function drawOverlays( viewport, overlays, container ){ @@ -932,7 +933,7 @@ function drawOverlays( viewport, overlays, container ){ for ( i = 0; i < length; i++ ) { drawOverlay( viewport, overlays[ i ], container ); } -}; +} function drawOverlay( viewport, overlay, container ){ @@ -945,7 +946,7 @@ function drawOverlay( viewport, overlay, container ){ true ); overlay.drawHTML( container ); -}; +} function drawTiles( drawer, lastDrawn ){ var i, @@ -1038,7 +1039,7 @@ function drawTiles( drawer, lastDrawn ){ tile.beingDrawn = true; } } -}; +} function drawDebugInfo( drawer, tile, count, i ){ @@ -1097,7 +1098,7 @@ function drawDebugInfo( drawer, tile, count, i ){ tile.position.y + 70 ); } -}; +} }( OpenSeadragon )); diff --git a/src/eventhandler.js b/src/eventhandler.js index 95714ca0..02f91842 100644 --- a/src/eventhandler.js +++ b/src/eventhandler.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function($){ @@ -85,7 +86,7 @@ $.EventHandler.prototype = { if ( handler ) { if ( !eventArgs ) { - eventArgs = new Object(); + eventArgs = {}; } handler( this, eventArgs ); diff --git a/src/legacytilesource.js b/src/legacytilesource.js index 52cdcd6c..564c04ec 100644 --- a/src/legacytilesource.js +++ b/src/legacytilesource.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ @@ -192,7 +193,7 @@ function filterFiles( files ){ return a.height - b.height; }); -}; +} /** * @private @@ -226,8 +227,8 @@ function configureFromXML( tileSource, xmlDoc ){ conf.levels .push({ url: level.getAttribute( "url" ), - width: parseInt( level.getAttribute( "width" ) ), - height: parseInt( level.getAttribute( "height" ) ) + width: parseInt( level.getAttribute( "width" ), 10 ), + height: parseInt( level.getAttribute( "height" ), 10 ) }); } @@ -245,7 +246,7 @@ function configureFromXML( tileSource, xmlDoc ){ } throw new Error( 'Unknown element ' + rootName ); -}; +} /** * @private @@ -256,6 +257,6 @@ function configureFromObject( tileSource, configuration ){ return configuration.levels; -}; +} }( OpenSeadragon )); diff --git a/src/mousetracker.js b/src/mousetracker.js index 7c944069..1e5e8181 100644 --- a/src/mousetracker.js +++ b/src/mousetracker.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ @@ -320,7 +321,7 @@ delegate.tracking = true; ACTIVE[ tracker.hash ] = tracker; } - }; + } /** * Stops tracking mouse events on this element. @@ -355,7 +356,7 @@ delegate.tracking = false; delete ACTIVE[ tracker.hash ]; } - }; + } /** * @private @@ -363,7 +364,7 @@ */ function hasMouse( tracker ) { return THIS[ tracker.hash ].insideElement; - }; + } /** * Begin capturing mouse events on this element. @@ -409,7 +410,7 @@ } delegate.capturing = true; } - }; + } /** @@ -456,7 +457,7 @@ } delegate.capturing = false; } - }; + } /** @@ -470,7 +471,7 @@ handler( ACTIVE[ otherHash ], event ); } } - }; + } /** @@ -489,7 +490,7 @@ $.cancelEvent( event ); } } - }; + } /** @@ -508,7 +509,7 @@ $.cancelEvent( event ); } } - }; + } /** @@ -528,7 +529,7 @@ $.cancelEvent( event ); } } - }; + } /** @@ -575,7 +576,7 @@ $.cancelEvent( event ); } } - }; + } /** @@ -622,7 +623,7 @@ $.cancelEvent( event ); } } - }; + } /** @@ -668,7 +669,7 @@ // add us to the list CAPTURING.push( tracker ); } - }; + } /** * @private @@ -698,7 +699,7 @@ } event.preventDefault(); - }; + } /** @@ -735,7 +736,7 @@ if ( insideElementPress && insideElementRelease ) { handleMouseClick( tracker, event ); } - }; + } /** @@ -757,7 +758,7 @@ //$.console.debug("pinch end"); } event.preventDefault(); - }; + } /** @@ -794,7 +795,7 @@ ); $.stopEvent( event ); - }; + } /** @@ -811,7 +812,7 @@ onMouseUp( tracker, event ); } releaseMouse( tracker ); - }; + } /** @@ -822,7 +823,7 @@ if ( tracker.clickHandler ) { $.cancelEvent( event ); } - }; + } /** @@ -861,7 +862,7 @@ $.cancelEvent( event ); } } - }; + } /** @@ -894,7 +895,7 @@ $.cancelEvent( event ); } } - }; + } /** @@ -921,7 +922,7 @@ $.cancelEvent( event ); } } - }; + } /** @@ -965,7 +966,7 @@ } } event.preventDefault(); - }; + } /** * Only triggered once by the deepest element that initially received @@ -983,7 +984,7 @@ } $.stopEvent( event ); - }; + } /** * @private @@ -991,7 +992,7 @@ */ function getMouseAbsolute( event ) { return $.getMousePosition( event ); - }; + } /** * @private @@ -1002,7 +1003,7 @@ offset = $.getElementPosition( element ); return mouse.minus( offset ); - }; + } /** * @private @@ -1019,7 +1020,7 @@ } } return elementA == elementB; - }; + } /** * @private @@ -1027,7 +1028,7 @@ */ function onGlobalMouseDown() { IS_BUTTON_DOWN = true; - }; + } /** * @private @@ -1035,7 +1036,7 @@ */ function onGlobalMouseUp() { IS_BUTTON_DOWN = false; - }; + } (function () { diff --git a/src/navigator.js b/src/navigator.js index cb06141a..ac2daec2 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -1,3 +1,5 @@ +/*globals OpenSeadragon */ + (function( $ ){ /** @@ -64,10 +66,17 @@ $.Navigator = function( options ){ style.fontSize = '0px'; style.overflow = 'hidden'; style.border = '2px solid #900'; + //TODO: IE doesnt like this property being set //try{ style.outline = '2px auto #909'; }catch(e){/*ignore*/} + style.background = 'transparent'; - style.float = 'left'; //Webkit + + // We use square bracket notation on the statement below, because float is a keyword. + // This is important for the Google Closure compliler, if nothing else. + /*jshint sub:true */ + style['float'] = 'left'; //Webkit + style.cssFloat = 'left'; //Firefox style.styleFloat = 'left'; //IE style.zIndex = 999999999; @@ -128,16 +137,18 @@ $.Navigator = function( options ){ case 119://w case 87://W case 38://up arrow - shiftKey ? - _this.viewer.viewport.zoomBy(1.1): + if (shiftKey) + _this.viewer.viewport.zoomBy(1.1); + else _this.viewer.viewport.panBy(new $.Point(0, -0.05)); _this.viewer.viewport.applyConstraints(); return false; case 115://s case 83://S case 40://down arrow - shiftKey ? - _this.viewer.viewport.zoomBy(0.9): + if (shiftKey) + _this.viewer.viewport.zoomBy(0.9); + else _this.viewer.viewport.panBy(new $.Point(0, 0.05)); _this.viewer.viewport.applyConstraints(); return false; @@ -231,7 +242,7 @@ $.extend( $.Navigator.prototype, $.EventHandler.prototype, $.Viewer.prototype, { */ function onCanvasClick( tracker, position, quick, shift ) { this.displayRegion.focus(); -}; +} /** @@ -253,7 +264,7 @@ function onCanvasDrag( tracker, position, delta, shift ) { ) ); } -}; +} /** @@ -265,7 +276,7 @@ function onCanvasRelease( tracker, position, insideElementPress, insideElementRe if ( insideElementPress && this.viewer.viewport ) { this.viewer.viewport.applyConstraints(); } -}; +} /** @@ -286,7 +297,7 @@ function onCanvasScroll( tracker, position, scroll, shift ) { } //cancels event return false; -}; +} }( OpenSeadragon )); diff --git a/src/openseadragon.js b/src/openseadragon.js index f9616037..93df8b76 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -1,3 +1,5 @@ +/*globals OpenSeadragon */ + /** * @version OpenSeadragon @VERSION@ * @@ -239,7 +241,7 @@ * * @returns {OpenSeadragon.Viewer} */ -OpenSeadragon = window.OpenSeadragon || function( options ){ +window.OpenSeadragon = window.OpenSeadragon || function( options ){ return new OpenSeadragon.Viewer( options ); diff --git a/src/overlay.js b/src/overlay.js index 11557bcb..c30d0fe4 100644 --- a/src/overlay.js +++ b/src/overlay.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ @@ -82,8 +83,8 @@ case $.OverlayPlacement.LEFT: position.y -= size.y / 2; break; - case $.OverlayPlacement.CENTER: default: + case $.OverlayPlacement.CENTER: position.x -= size.x / 2; position.y -= size.y / 2; break; diff --git a/src/point.js b/src/point.js index 7dbef722..e68dee0b 100644 --- a/src/point.js +++ b/src/point.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ diff --git a/src/profiler.js b/src/profiler.js index 86debc04..d01fc19c 100644 --- a/src/profiler.js +++ b/src/profiler.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ diff --git a/src/rectangle.js b/src/rectangle.js index 0df617a6..f25eabf4 100644 --- a/src/rectangle.js +++ b/src/rectangle.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ diff --git a/src/spring.js b/src/spring.js index 2500720e..2d7b290b 100644 --- a/src/spring.js +++ b/src/spring.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ @@ -105,7 +106,7 @@ $.Spring.prototype = { ( this.target.time - this.start.time ) ); } -} +}; /** * @private @@ -113,6 +114,6 @@ $.Spring.prototype = { function transform( stiffness, x ) { return ( 1.0 - Math.exp( stiffness * -x ) ) / ( 1.0 - Math.exp( -stiffness ) ); -}; +} }( OpenSeadragon )); diff --git a/src/tile.js b/src/tile.js index 8b1b5b20..6525ab32 100644 --- a/src/tile.js +++ b/src/tile.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ diff --git a/src/tilesource.js b/src/tilesource.js index 9c8fac83..a5a5eb99 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ @@ -376,7 +377,7 @@ function processResponse( xhr ){ data = responseText; } return data; -}; +} /** diff --git a/src/tilesourcecollection.js b/src/tilesourcecollection.js index 2537321e..0102d54a 100644 --- a/src/tilesourcecollection.js +++ b/src/tilesourcecollection.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){ diff --git a/src/viewer.js b/src/viewer.js index 50d965a2..eaa92033 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1,3 +1,5 @@ +/*globals OpenSeadragon */ + (function( $ ){ // dictionary from hash to private properties @@ -577,7 +579,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype, abortControlsAutoHide( this ); } else { beginControlsAutoHide( this ); - }; + } }, @@ -1060,7 +1062,7 @@ function scheduleUpdate( viewer, updateFunc, prevUpdateTime ){ return window.setTimeout( function(){ updateFunc( viewer ); }, deltaTime ); -}; +} //provides a sequence in the fade animation @@ -1068,7 +1070,7 @@ function scheduleControlsFade( viewer ) { window.setTimeout( function(){ updateControlsFade( viewer ); }, 20); -}; +} //initiates an animation to hide the controls @@ -1084,7 +1086,7 @@ function beginControlsAutoHide( viewer ) { window.setTimeout( function(){ scheduleControlsFade( viewer ); }, viewer.controlsFadeDelay ); -}; +} //determines if fade animation is done or continues the animation @@ -1110,7 +1112,7 @@ function updateControlsFade( viewer ) { scheduleControlsFade( viewer ); } } -}; +} //stop the fade animation on the controls and show them @@ -1120,7 +1122,7 @@ function abortControlsAutoHide( viewer ) { for ( i = viewer.controls.length - 1; i >= 0; i-- ) { viewer.controls[ i ].setOpacity( 1.0 ); } -}; +} @@ -1129,12 +1131,12 @@ function abortControlsAutoHide( viewer ) { /////////////////////////////////////////////////////////////////////////////// function onFocus(){ abortControlsAutoHide( this ); -}; +} function onBlur(){ beginControlsAutoHide( this ); -}; +} function onCanvasClick( tracker, position, quick, shift ) { var zoomPreClick, @@ -1148,7 +1150,7 @@ function onCanvasClick( tracker, position, quick, shift ) { ); this.viewport.applyConstraints(); } -}; +} function onCanvasDrag( tracker, position, delta, shift ) { if ( this.viewport ) { @@ -1164,13 +1166,13 @@ function onCanvasDrag( tracker, position, delta, shift ) { ) ); } -}; +} function onCanvasRelease( tracker, position, insideElementPress, insideElementRelease ) { if ( insideElementPress && this.viewport ) { this.viewport.applyConstraints(); } -}; +} function onCanvasScroll( tracker, position, scroll, shift ) { var factor; @@ -1184,7 +1186,7 @@ function onCanvasScroll( tracker, position, scroll, shift ) { } //cancels event return false; -}; +} function onContainerExit( tracker, position, buttonDownElement, buttonDownAny ) { if ( !buttonDownElement ) { @@ -1193,7 +1195,7 @@ function onContainerExit( tracker, position, buttonDownElement, buttonDownAny ) beginControlsAutoHide( this ); } } -}; +} function onContainerRelease( tracker, position, insideElementPress, insideElementRelease ) { if ( !insideElementRelease ) { @@ -1202,12 +1204,12 @@ function onContainerRelease( tracker, position, insideElementPress, insideElemen beginControlsAutoHide( this ); } } -}; +} function onContainerEnter( tracker, position, buttonDownElement, buttonDownAny ) { THIS[ this.hash ].mouseInside = true; abortControlsAutoHide( this ); -}; +} /////////////////////////////////////////////////////////////////////////////// @@ -1225,7 +1227,7 @@ function updateMulti( viewer ) { beginTime = +new Date(); updateOnce( viewer ); scheduleUpdate( viewer, arguments.callee, beginTime ); -}; +} function updateOnce( viewer ) { @@ -1282,7 +1284,7 @@ function updateOnce( viewer ) { THIS[ viewer.hash ].animating = animated; //viewer.profiler.endUpdate(); -}; +} @@ -1291,7 +1293,7 @@ function updateOnce( viewer ) { /////////////////////////////////////////////////////////////////////////////// function resolveUrl( prefix, url ) { return prefix ? prefix + url : url; -}; +} @@ -1300,7 +1302,7 @@ function beginZoomingIn() { THIS[ this.hash ].zoomFactor = this.zoomPerSecond; THIS[ this.hash ].zooming = true; scheduleZoom( this ); -}; +} function beginZoomingOut() { @@ -1308,17 +1310,17 @@ function beginZoomingOut() { THIS[ this.hash ].zoomFactor = 1.0 / this.zoomPerSecond; THIS[ this.hash ].zooming = true; scheduleZoom( this ); -}; +} function endZooming() { THIS[ this.hash ].zooming = false; -}; +} function scheduleZoom( viewer ) { window.setTimeout( $.delegate( viewer, doZoom ), 10 ); -}; +} function doZoom() { @@ -1336,7 +1338,7 @@ function doZoom() { THIS[ this.hash ].lastZoomTime = currentTime; scheduleZoom( this ); } -}; +} function doSingleZoomIn() { @@ -1347,7 +1349,7 @@ function doSingleZoomIn() { ); this.viewport.applyConstraints(); } -}; +} function doSingleZoomOut() { @@ -1358,20 +1360,20 @@ function doSingleZoomOut() { ); this.viewport.applyConstraints(); } -}; +} function lightUp() { this.buttons.emulateEnter(); this.buttons.emulateExit(); -}; +} function onHome() { if ( this.viewport ) { this.viewport.goHome(); } -}; +} function onFullPage() { @@ -1384,19 +1386,19 @@ function onFullPage() { if ( this.viewport ) { this.viewport.applyConstraints(); } -}; +} function onPrevious(){ var previous = THIS[ this.hash ].sequence - 1; this.goToPage( previous ); -}; +} function onNext(){ var next = THIS[ this.hash ].sequence + 1; this.goToPage( next ); -}; +} }( OpenSeadragon )); diff --git a/src/viewport.js b/src/viewport.js index bb9179fd..de2bef45 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -1,3 +1,4 @@ +/*globals OpenSeadragon */ (function( $ ){