{"version":3,"sources":["jsdelivr-header.js","/npm/papaya-viewer@1.0.1455/src/js/main.js"],"names":[],"mappings":"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","file":"/npm/papaya-viewer@1.0.1455/src/js/main.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/papaya-viewer@1.0.1455/src/js/main.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\n/*jslint browser: true, node: true */\n/*global $, PAPAYA_VIEWER_CSS, PAPAYA_DEFAULT_TOOLBAR_ID, PAPAYA_DEFAULT_VIEWER_ID, PAPAYA_DEFAULT_DISPLAY_ID,\n PAPAYA_TOOLBAR_CSS, PAPAYA_DISPLAY_CSS, PAPAYA_DEFAULT_SLIDER_ID, PAPAYA_DEFAULT_CONTAINER_ID, PAPAYA_SLIDER_CSS,\n PAPAYA_UTILS_UNSUPPORTED_CSS, PAPAYA_UTILS_UNSUPPORTED_MESSAGE_CSS, PAPAYA_CONTAINER_CLASS_NAME,\n PAPAYA_CONTAINER_FULLSCREEN, PAPAYA_CONTAINER_CLASS_NAME, PAPAYA_UTILS_CHECKFORJS_CSS, PAPAYA_SPACING,\n papayaRoundFast, PAPAYA_PADDING, PAPAYA_CONTAINER_PADDING_TOP, PAPAYA_CONTAINER_COLLAPSABLE_EXEMPT,\n PAPAYA_CONTAINER_COLLAPSABLE, PAPAYA_MANGO_INSTALLED, PAPAYA_KIOSK_CONTROLS_CSS, PAPAYA_CONTROL_INCREMENT_BUTTON_CSS,\n PAPAYA_CONTROL_SLIDER_CSS, PAPAYA_CONTROL_GOTO_CENTER_BUTTON_CSS, PAPAYA_CONTROL_GOTO_ORIGIN_BUTTON_CSS,\n PAPAYA_CONTROL_SWAP_BUTTON_CSS, PAPAYA_CONTROL_DIRECTION_SLIDER, PAPAYA_CONTROL_MAIN_SLIDER,\n PAPAYA_CONTROL_MAIN_INCREMENT_BUTTON_CSS, PAPAYA_CONTROL_MAIN_INCREMENT_BUTTON_CSS,\n PAPAYA_CONTROL_MAIN_DECREMENT_BUTTON_CSS, PAPAYA_CONTROL_MAIN_SWAP_BUTTON_CSS, PAPAYA_CONTROL_BAR_LABELS_CSS,\n PAPAYA_CONTROL_MAIN_GOTO_CENTER_BUTTON_CSS, PAPAYA_CONTROL_MAIN_GOTO_ORIGIN_BUTTON_CSS\n */\n\n\"use strict\";\n\n/*** Imports ***/\nvar papaya = papaya || {};\n\n\n/*** Global Fields ***/\nvar papayaContainers = [];\nvar papayaLoadableImages = papayaLoadableImages || [];\nvar papayaDroppedFiles = [];\n\n\n/*** Constructor ***/\npapaya.Container = papaya.Container || function (containerHtml) {\n    this.containerHtml = containerHtml;\n    this.containerIndex = null;\n    this.toolbarHtml = null;\n    this.viewerHtml = null;\n    this.displayHtml = null;\n    this.titlebarHtml = null;\n    this.sliderControlHtml = null;\n    this.viewer = null;\n    this.display = null;\n    this.toolbar = null;\n    this.preferences = null;\n    this.params = [];\n    this.loadingImageIndex = 0;\n    this.loadingSurfaceIndex = 0;\n    this.nestedViewer = false;\n    this.collapsable = false;\n    this.orthogonal = true;\n    this.orthogonalTall = false;\n    this.orthogonalDynamic = false;\n    this.kioskMode = false;\n    this.noNewFiles = false;\n    this.showControls = true;\n    this.showControlBar = false;\n    this.showImageButtons = true;\n    this.fullScreenPadding = true;\n    this.combineParametric = false;\n    this.dropTimeout = null;\n    this.showRuler = false;\n    this.syncOverlaySeries = true;\n    this.surfaceParams = {};\n    this.contextManager = null;\n    this.allowScroll = true;\n    this.loadingComplete = null;\n    this.resetComponents();\n};\n\n\n/*** Static Pseudo-constants ***/\n\npapaya.Container.LICENSE_TEXT = \"<p>THIS PRODUCT IS NOT FOR CLINICAL USE.<br /><br />\" +\n    \"This software is available for use, as is, free of charge.  The software and data derived from this software \" +\n    \"may not be used for clinical purposes.<br /><br />\" +\n    \"The authors of this software make no representations or warranties about the suitability of the software, \" +\n    \"either express or implied, including but not limited to the implied warranties of merchantability, fitness for a \" +\n    \"particular purpose, non-infringement, or conformance to a specification or standard. The authors of this software \" +\n    \"shall not be liable for any damages suffered by licensee as a result of using or modifying this software or its \" +\n    \"derivatives.<br /><br />\" +\n    \"By using this software, you agree to be bounded by the terms of this license.  If you do not agree to the terms \" +\n    \"of this license, do not use this software.</p>\";\n\npapaya.Container.KEYBOARD_REF_TEXT = \"<span style='color:#B5CBD3'>[Spacebar]</span> Cycle the main slice view in a clockwise rotation.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>[Page Up]</span> or <span style='color:#B5CBD3'>[']</span> Increment the axial slice.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>[Page Down]</span> or <span style='color:#B5CBD3'>[/]</span> Decrement the axial slice.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>[Arrow Up]</span> and <span style='color:#B5CBD3'>[Arrow Down]</span> Increment/decrement the coronal slice.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>[Arrow Right]</span> and <span style='color:#B5CBD3'>[Arrow Left]</span> Increment/decrement the sagittal slice.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>[g]</span> and <span style='color:#B5CBD3'>[v]</span> Increment/decrement main slice.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>[<]</span> or <span style='color:#B5CBD3'>[,]</span> Decrement the series point.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>[>]</span> or <span style='color:#B5CBD3'>[.]</span> Increment the series point.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>[o]</span> Navigate viewer to the image origin.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>[c]</span> Navigate viewer to the center of the image.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>[a]</span> Toggle main crosshairs on/off.\";\n\npapaya.Container.MOUSE_REF_TEXT = \"<span style='color:#B5CBD3'>(Left-click and drag)</span> Change current coordinate.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>[Alt](Left-click and drag)</span> Zoom in and out.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>[Alt](Double left-click)</span> Reset zoom.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>[Alt][Shift](Left-click and drag)</span> Pan zoomed image.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>(Right-click and drag)</span> Window level controls.<br /><br />\" +\n    \"<span style='color:#B5CBD3'>(Scroll wheel)</span> See Preferences.<br /><br />\";\n\npapaya.Container.DICOM_SUPPORT = true;\n\n\n/*** Static Fields ***/\n\npapaya.Container.syncViewers = false;\npapaya.Container.syncViewersWorld = false;\npapaya.Container.allowPropagation = false;\npapaya.Container.papayaLastHoveredViewer = null;\npapaya.Container.ignorePatterns = [/^[.]/];\npapaya.Container.atlas = null;\npapaya.Container.atlasWorldSpace = true;\n\n\n/*** Static Methods ***/\n\npapaya.Container.restartViewer = function (index, refs, forceUrl, forceEncode, forceBinary) {\n    papayaContainers[index].viewer.restart(refs, forceUrl, forceEncode, forceBinary);\n};\n\n\n\npapaya.Container.resetViewer = function (index, params) {\n    if (!params) {\n        params = papayaContainers[index].params;\n\n        if (params.loadedImages) {\n            params.images = params.loadedImages;\n        }\n\n        if (params.loadedEncodedImages) {\n            params.encodedImages = params.loadedEncodedImages;\n        }\n\n        if (params.loadedBinaryImages) {\n            params.binaryImages = params.loadedBinaryImages;\n        }\n\n\n        if (params.loadedSurfaces) {\n            params.surfaces = params.loadedSurfaces;\n        }\n\n        if (params.loadedEncodedSurfaces) {\n            params.encodedSurfaces = params.loadedEncodedSurfaces;\n        }\n\n        if (params.loadedFiles) {\n            params.files = params.loadedFiles;\n        }\n    }\n\n    papayaContainers[index].viewer.resetViewer();\n    papayaContainers[index].toolbar.updateImageButtons();\n    papayaContainers[index].reset();\n    papayaContainers[index].params = params;\n    papayaContainers[index].readGlobalParams();\n    papayaContainers[index].rebuildContainer(params, index);\n    papayaContainers[index].viewer.processParams(params);\n};\n\n\n\npapaya.Container.removeImage = function (index, imageIndex) {\n    if (imageIndex < 1) {\n        console.log(\"Cannot remove the base image.  Try papaya.Container.resetViewer() instead.\");\n    }\n\n    papayaContainers[index].viewer.removeOverlay(imageIndex);\n};\n\n\n\npapaya.Container.hideImage = function (index, imageIndex) {\n    papayaContainers[index].viewer.screenVolumes[imageIndex].hidden = true;\n    papayaContainers[index].viewer.drawViewer(true, false);\n};\n\n\n\npapaya.Container.showImage = function (index, imageIndex) {\n    papayaContainers[index].viewer.screenVolumes[imageIndex].hidden = false;\n    papayaContainers[index].viewer.drawViewer(true, false);\n};\n\n\n\npapaya.Container.addImage = function (index, imageRef, imageParams) {\n    var imageRefs;\n\n    if (imageParams) {\n        papayaContainers[index].params = $.extend({}, papayaContainers[index].params, imageParams);\n    }\n\n    if (!(imageRef instanceof Array)) {\n        imageRefs = [];\n        imageRefs[0] = imageRef;\n    } else {\n        imageRefs = imageRef;\n    }\n\n    if (papayaContainers[index].params.images) {\n        papayaContainers[index].viewer.loadImage(imageRefs, true, false, false);\n    } else if(papayaContainers[index].params.binaryImages) {\n        papayaContainers[index].viewer.loadImage(imageRefs, false, false, true);\n    } else if (papayaContainers[index].params.encodedImages) {\n        papayaContainers[index].viewer.loadImage(imageRefs, false, true, false);\n    }\n};\n\n\n\npapaya.Container.findParameters = function (containerHTML) {\n    var viewerHTML, paramsName, loadedParams = null;\n\n    paramsName = containerHTML.data(\"params\");\n\n    if (!paramsName) {\n        viewerHTML = containerHTML.find(\".\" + PAPAYA_VIEWER_CSS);\n\n        if (viewerHTML) {\n            paramsName = viewerHTML.data(\"params\");\n        }\n    }\n\n    /*\n     if (paramsName) {\n     loadedParams = window[paramsName];\n     }\n     */\n\n    if (paramsName) {\n        if (typeof paramsName === 'object') {\n            loadedParams = paramsName;\n        }\n        else if (window[paramsName]) {\n            loadedParams = window[paramsName];\n        }\n    }\n\n    if (loadedParams) {\n        papaya.utilities.UrlUtils.getQueryParams(loadedParams);\n    }\n\n    return loadedParams;\n};\n\n\n\npapaya.Container.fillContainerHTML = function (containerHTML, isDefault, params, replaceIndex) {\n    var toolbarHTML, viewerHTML, displayHTML, index;\n\n    if (isDefault) {\n        toolbarHTML = containerHTML.find(\"#\" + PAPAYA_DEFAULT_TOOLBAR_ID);\n        viewerHTML = containerHTML.find(\"#\" + PAPAYA_DEFAULT_VIEWER_ID);\n        displayHTML = containerHTML.find(\"#\" + PAPAYA_DEFAULT_DISPLAY_ID);\n\n        if (toolbarHTML) {\n            toolbarHTML.addClass(PAPAYA_TOOLBAR_CSS);\n        } else {\n            containerHTML.prepend(\"<div class='\" + PAPAYA_TOOLBAR_CSS + \"' id='\" +\n                PAPAYA_DEFAULT_TOOLBAR_ID + \"'></div>\");\n        }\n\n        if (viewerHTML) {\n            viewerHTML.addClass(PAPAYA_VIEWER_CSS);\n        } else {\n            $(\"<div class='\" + PAPAYA_VIEWER_CSS + \"' id='\" +\n                PAPAYA_DEFAULT_VIEWER_ID + \"'></div>\").insertAfter($(\"#\" + PAPAYA_DEFAULT_TOOLBAR_ID));\n        }\n\n        if (displayHTML) {\n            displayHTML.addClass(PAPAYA_DISPLAY_CSS);\n        } else {\n            $(\"<div class='\" + PAPAYA_DISPLAY_CSS + \"' id='\" +\n                PAPAYA_DEFAULT_DISPLAY_ID + \"'></div>\").insertAfter($(\"#\" + PAPAYA_DEFAULT_VIEWER_ID));\n        }\n\n        console.log(\"This method of adding a Papaya container is deprecated.  \" +\n            \"Try simply <div class='papaya' data-params='params'></div> instead...\");\n    } else {\n        if (replaceIndex !== undefined) {\n            index = replaceIndex;\n        } else {\n            index = papayaContainers.length;\n        }\n\n        containerHTML.attr(\"id\", PAPAYA_DEFAULT_CONTAINER_ID + index);\n\n        if (!params || (params.kioskMode === undefined) || !params.kioskMode) {\n            containerHTML.append(\"<div id='\" + (PAPAYA_DEFAULT_TOOLBAR_ID + index) +\n            \"' class='\" + PAPAYA_TOOLBAR_CSS + \"'></div>\");\n        }\n\n        containerHTML.append(\"<div id='\" + (PAPAYA_DEFAULT_VIEWER_ID + index) +\n            \"' class='\" + PAPAYA_VIEWER_CSS + \"'></div>\");\n        containerHTML.append(\"<div id='\" + (PAPAYA_DEFAULT_DISPLAY_ID + index) +\n            \"' class='\" + PAPAYA_DISPLAY_CSS + \"'></div>\");\n\n        if (params && params.showControlBar && ((params.showControls === undefined) || params.showControls)) {\n            containerHTML.append(\n                \"<div id='\" + PAPAYA_KIOSK_CONTROLS_CSS + index + \"' class='\" + PAPAYA_KIOSK_CONTROLS_CSS + \"'>\" +\n                \"<div id='\" + (PAPAYA_DEFAULT_SLIDER_ID + index) + \"main\" + \"' class='\" + PAPAYA_SLIDER_CSS + \" \" + PAPAYA_CONTROL_MAIN_SLIDER + \"'>\" +\n                \"<span class='\" + PAPAYA_CONTROL_BAR_LABELS_CSS+ \"'>Slice: </span>\" + \" <button type='button' class='\" + PAPAYA_CONTROL_INCREMENT_BUTTON_CSS + \"'>+</button>\" + \" <button type='button' class='\" + PAPAYA_CONTROL_INCREMENT_BUTTON_CSS + \"'>-</button> \"  +\n                \"</div>\" +\n\n                \"<div id='\" + (PAPAYA_DEFAULT_SLIDER_ID + index) + \"axial\" + \"' class='\" + PAPAYA_SLIDER_CSS + \" \" + PAPAYA_CONTROL_DIRECTION_SLIDER + \"'>\" +\n                \"<span class='\" + PAPAYA_CONTROL_BAR_LABELS_CSS+ \"'>Axial: </span>\" + \" <button type='button' class='\" + PAPAYA_CONTROL_INCREMENT_BUTTON_CSS + \"'>+</button>\" + \" <button type='button' class='\" + PAPAYA_CONTROL_INCREMENT_BUTTON_CSS + \"'>-</button> \" +\n                \"</div>\" +\n\n                \"<div id='\" + (PAPAYA_DEFAULT_SLIDER_ID + index) + \"coronal\" + \"' class='\" + PAPAYA_SLIDER_CSS + \" \" + PAPAYA_CONTROL_DIRECTION_SLIDER + \"'>\" +\n                \"<span class='\" + PAPAYA_CONTROL_BAR_LABELS_CSS+ \"'>Coronal: </span>\" + \" <button type='button' class='\" + PAPAYA_CONTROL_INCREMENT_BUTTON_CSS + \"'>+</button>\"+ \" <button type='button' class='\" + PAPAYA_CONTROL_INCREMENT_BUTTON_CSS + \"'>-</button> \"  +\n                \"</div>\" +\n\n                \"<div id='\" + (PAPAYA_DEFAULT_SLIDER_ID + index) + \"sagittal\" + \"' class='\" + PAPAYA_SLIDER_CSS + \" \" + PAPAYA_CONTROL_DIRECTION_SLIDER + \"'>\" +\n                \"<span class='\" + PAPAYA_CONTROL_BAR_LABELS_CSS+ \"'>Sagittal: </span>\" + \" <button type='button' class='\" + PAPAYA_CONTROL_INCREMENT_BUTTON_CSS + \"'>+</button>\"+ \" <button type='button' class='\" + PAPAYA_CONTROL_INCREMENT_BUTTON_CSS + \"'>-</button> \"  +\n                \"</div>\" +\n\n                \"<div id='\" + (PAPAYA_DEFAULT_SLIDER_ID + index) + \"series\" + \"' class='\" + PAPAYA_SLIDER_CSS + \" \" + PAPAYA_CONTROL_DIRECTION_SLIDER + \"'>\" +\n                \"<span class='\" + PAPAYA_CONTROL_BAR_LABELS_CSS+ \"'>Series: </span>\" + \" <button type='button' class='\" + PAPAYA_CONTROL_INCREMENT_BUTTON_CSS + \"'>&lt;</button>\"+ \" <button type='button' class='\" + PAPAYA_CONTROL_INCREMENT_BUTTON_CSS + \"'>&gt;</button> \"  +\n                \"</div>\" +\n                \"&nbsp;&nbsp;&nbsp;\" +\n                \"<button type='button' \" + ((params.kioskMode && ((params.showImageButtons === undefined) || params.showImageButtons)) ? \"\" : \"style='float:right;margin-left:5px;' \") + \"class='\" + PAPAYA_CONTROL_SWAP_BUTTON_CSS + \"'>Swap View</button> \" +\n                \"<button type='button' \" + ((params.kioskMode && ((params.showImageButtons === undefined) || params.showImageButtons)) ? \"\" : \"style='float:right;margin-left:5px;' \") + \"class='\" + PAPAYA_CONTROL_GOTO_CENTER_BUTTON_CSS + \"'>Go To Center</button> \" +\n                \"<button type='button' \" + ((params.kioskMode && ((params.showImageButtons === undefined) || params.showImageButtons)) ? \"\" : \"style='float:right;margin-left:5px;' \") + \"class='\" + PAPAYA_CONTROL_GOTO_ORIGIN_BUTTON_CSS + \"'>Go To Origin</button> \" +\n                \"</div>\");\n\n            $(\".\" + PAPAYA_CONTROL_INCREMENT_BUTTON_CSS).prop('disabled', true);\n            $(\".\" + PAPAYA_CONTROL_SWAP_BUTTON_CSS).prop('disabled', true);\n            $(\".\" + PAPAYA_CONTROL_GOTO_CENTER_BUTTON_CSS).prop('disabled', true);\n            $(\".\" + PAPAYA_CONTROL_GOTO_ORIGIN_BUTTON_CSS).prop('disabled', true);\n        } else if (params && ((params.showControls === undefined ) || params.showControls)) {\n            containerHTML.append(\"<button type='button' id='\"+ (PAPAYA_CONTROL_MAIN_INCREMENT_BUTTON_CSS + index) + \"' class='\" + PAPAYA_CONTROL_MAIN_INCREMENT_BUTTON_CSS + \"'>+</button> \");\n            containerHTML.append(\"<button type='button' id='\"+ (PAPAYA_CONTROL_MAIN_DECREMENT_BUTTON_CSS + index) + \"' class='\" + PAPAYA_CONTROL_MAIN_DECREMENT_BUTTON_CSS + \"'>-</button> \");\n            containerHTML.append(\"<button type='button' id='\"+ (PAPAYA_CONTROL_MAIN_SWAP_BUTTON_CSS + index) + \"' class='\" + PAPAYA_CONTROL_MAIN_SWAP_BUTTON_CSS + \"'>Swap View</button> \");\n            containerHTML.append(\"<button type='button' id='\"+ (PAPAYA_CONTROL_MAIN_GOTO_CENTER_BUTTON_CSS + index) + \"' class='\" + PAPAYA_CONTROL_MAIN_GOTO_CENTER_BUTTON_CSS + \"'>Go To Center</button> \");\n            containerHTML.append(\"<button type='button' id='\"+ (PAPAYA_CONTROL_MAIN_GOTO_ORIGIN_BUTTON_CSS + index) + \"' class='\" + PAPAYA_CONTROL_MAIN_GOTO_ORIGIN_BUTTON_CSS + \"'>Go To Origin</button> \");\n\n            $(\"#\" + PAPAYA_CONTROL_MAIN_INCREMENT_BUTTON_CSS + index).css({display: \"none\"});\n            $(\"#\" + PAPAYA_CONTROL_MAIN_DECREMENT_BUTTON_CSS + index).css({display: \"none\"});\n            $(\"#\" + PAPAYA_CONTROL_MAIN_SWAP_BUTTON_CSS + index).css({display: \"none\"});\n            $(\"#\" + PAPAYA_CONTROL_MAIN_GOTO_CENTER_BUTTON_CSS + index).css({display: \"none\"});\n            $(\"#\" + PAPAYA_CONTROL_MAIN_GOTO_ORIGIN_BUTTON_CSS + index).css({display: \"none\"});\n        }\n    }\n\n    return viewerHTML;\n};\n\n\n\npapaya.Container.buildContainer = function (containerHTML, params, replaceIndex) {\n\n    var container, message, viewerHtml, loadUrl, index, imageRefs = null;\n\n    message = papaya.utilities.PlatformUtils.checkForBrowserCompatibility();\n    viewerHtml = containerHTML.find(\".\" + PAPAYA_VIEWER_CSS);\n\n    if (message !== null) {\n        papaya.Container.removeCheckForJSClasses(containerHTML, viewerHtml);\n        containerHTML.addClass(PAPAYA_UTILS_UNSUPPORTED_CSS);\n        viewerHtml.addClass(PAPAYA_UTILS_UNSUPPORTED_MESSAGE_CSS);\n        viewerHtml.html(message);\n    } else {\n        if (replaceIndex !== undefined) {\n            index = replaceIndex;\n        } else {\n            index = papayaContainers.length;\n        }\n\n        container = new papaya.Container(containerHTML);\n        container.containerIndex = index;\n        container.preferences = new papaya.viewer.Preferences();\n        papaya.Container.removeCheckForJSClasses(containerHTML, viewerHtml);\n\n        if (params) {\n            container.params = $.extend(container.params, params);\n        }\n\n        container.nestedViewer = (containerHTML.parent()[0].tagName.toUpperCase() !== 'BODY');\n        container.readGlobalParams();\n\n        if (container.isDesktopMode()) {\n            container.preferences.readPreferences();\n        }\n\n        container.buildViewer(container.params);\n        container.buildDisplay();\n\n        if (container.showControlBar) {\n            container.buildSliderControl();\n        }\n\n        container.buildToolbar();\n\n        container.setUpDnD();\n\n        loadUrl = viewerHtml.data(\"load-url\");\n\n        if (loadUrl) {\n            imageRefs = loadUrl;\n            if (!(imageRefs instanceof Array)) {\n                imageRefs = [];\n                imageRefs[0] = loadUrl;\n            }\n\n            container.viewer.loadImage(imageRefs, true, false, false);\n        } else if (container.params.images) {\n            imageRefs = container.params.images[0];\n            if (!(imageRefs instanceof Array)) {\n                imageRefs = [];\n                imageRefs[0] = container.params.images[0];\n            }\n\n            container.viewer.loadImage(imageRefs, true, false, false);\n        } else if (container.params.encodedImages) {\n            imageRefs = container.params.encodedImages[0];\n            if (!(imageRefs instanceof Array)) {\n                imageRefs = [];\n                imageRefs[0] = container.params.encodedImages[0];\n            }\n\n            container.viewer.loadImage(imageRefs, false, true, false);\n        } else if(container.params.binaryImages) {\n            imageRefs = container.params.binaryImages[0];\n            container.viewer.loadImage(imageRefs, false, false, true);\n        } else if (container.params.files) {\n            imageRefs = container.params.files[0];\n            if (!(imageRefs instanceof Array)) {\n                imageRefs = [];\n                imageRefs[0] = container.params.files[0];\n            }\n\n            container.viewer.loadImage(imageRefs, false, false, false);\n        } else {\n            container.viewer.finishedLoading();\n        }\n\n        container.resizeViewerComponents(false);\n\n        if (!container.nestedViewer) {\n            containerHTML.parent().height(\"100%\");\n            containerHTML.parent().width(\"100%\");\n        }\n\n        papayaContainers[index] = container;\n\n        papaya.Container.showLicense(container, params);\n    }\n};\n\n\n\npapaya.Container.prototype.rebuildContainer = function (params, index) {\n    this.containerHtml.empty();\n    papaya.Container.fillContainerHTML(this.containerHtml, false, params, index);\n    papaya.Container.buildContainer(this.containerHtml, params, index);\n\n    if ((papayaContainers.length === 1) && !papayaContainers[0].nestedViewer) {\n        $(\"html\").addClass(PAPAYA_CONTAINER_FULLSCREEN);\n        $(\"body\").addClass(PAPAYA_CONTAINER_FULLSCREEN);\n        papaya.Container.setToFullPage();\n    }\n};\n\n\n\npapaya.Container.buildAllContainers = function () {\n    var defaultContainer, params;\n\n    defaultContainer = $(\"#\" + PAPAYA_DEFAULT_CONTAINER_ID);\n\n    if (defaultContainer.length > 0) {\n        papaya.Container.fillContainerHTML(defaultContainer, true);\n        params = papaya.Container.findParameters(defaultContainer);\n        papaya.Container.buildContainer(defaultContainer, params);\n    } else {\n        $(\".\" + PAPAYA_CONTAINER_CLASS_NAME).each(function () {\n            params = papaya.Container.findParameters($(this));\n\n            if (params === null) {\n                params = [];\n            }\n\n            if (params.fullScreen === true) {\n                params.fullScreenPadding = false;\n                params.kioskMode = true;\n                params.showControlBar = false;\n                $('body').css({\"background-color\":\"black\"});\n            }\n\n            papaya.Container.fillContainerHTML($(this), false, params);\n            papaya.Container.buildContainer($(this), params);\n        });\n    }\n\n    if ((papayaContainers.length === 1) && !papayaContainers[0].nestedViewer) {\n        $(\"html\").addClass(PAPAYA_CONTAINER_FULLSCREEN);\n        $(\"body\").addClass(PAPAYA_CONTAINER_FULLSCREEN);\n        papaya.Container.setToFullPage();\n\n        papayaContainers[0].resizeViewerComponents(true);\n    }\n};\n\n\n\npapaya.Container.startPapaya = function () {\n    setTimeout(function () {  // setTimeout necessary in Chrome\n        window.scrollTo(0, 0);\n    }, 0);\n\n    papaya.Container.DICOM_SUPPORT = (typeof(daikon) !== \"undefined\");\n\n    papaya.Container.buildAllContainers();\n};\n\n\n\npapaya.Container.resizePapaya = function (ev, force) {\n    var ctr;\n\n    papaya.Container.updateOrthogonalState();\n\n    if ((papayaContainers.length === 1) && !papayaContainers[0].nestedViewer) {\n        if (!papaya.utilities.PlatformUtils.smallScreen || force) {\n            papayaContainers[0].resizeViewerComponents(true);\n        }\n    } else {\n        for (ctr = 0; ctr < papayaContainers.length; ctr += 1) {\n            papayaContainers[ctr].resizeViewerComponents(true);\n        }\n    }\n\n    setTimeout(function () {  // setTimeout necessary in Chrome\n        window.scrollTo(0, 0);\n    }, 0);\n};\n\n\n\npapaya.Container.addViewer = function (parentName, params, callback) {\n    var container, parent;\n\n    parent = $(\"#\" + parentName);\n    container = $('<div class=\"papaya\"></div>');\n\n    parent.html(container);\n\n    // remove parent click handler\n    parent[0].onclick = '';\n    parent.off(\"click\");\n\n    papaya.Container.fillContainerHTML(container, false, params);\n    papaya.Container.buildContainer(container, params);\n\n    if (callback) {\n        callback();\n    }\n};\n\n\n\npapaya.Container.removeCheckForJSClasses = function (containerHtml, viewerHtml) {\n    // old way, here for backwards compatibility\n    viewerHtml.removeClass(PAPAYA_CONTAINER_CLASS_NAME);\n    viewerHtml.removeClass(PAPAYA_UTILS_CHECKFORJS_CSS);\n\n    // new way\n    containerHtml.removeClass(PAPAYA_CONTAINER_CLASS_NAME);\n    containerHtml.removeClass(PAPAYA_UTILS_CHECKFORJS_CSS);\n};\n\n\n\npapaya.Container.setToFullPage = function () {\n    document.body.style.marginTop = 0;\n    document.body.style.marginBottom = 0;\n    document.body.style.marginLeft = 'auto';\n    document.body.style.marginRight = 'auto';\n    document.body.style.padding = 0;\n    document.body.style.overflow = 'hidden';\n    document.body.style.width = \"100%\";\n    document.body.style.height = \"100%\";\n};\n\n\n\npapaya.Container.getLicense = function () {\n    return papaya.Container.LICENSE_TEXT;\n};\n\n\n\npapaya.Container.getKeyboardReference = function () {\n    return papaya.Container.KEYBOARD_REF_TEXT;\n};\n\n\n\npapaya.Container.getMouseReference = function () {\n    return papaya.Container.MOUSE_REF_TEXT;\n};\n\n\n\npapaya.Container.setLicenseRead = function () {\n    papaya.utilities.UrlUtils.createCookie(papaya.viewer.Preferences.COOKIE_PREFIX + \"eula\", \"Yes\",\n        papaya.viewer.Preferences.COOKIE_EXPIRY_DAYS);\n};\n\n\n\npapaya.Container.isLicenseRead = function () {\n    var value = papaya.utilities.UrlUtils.readCookie(papaya.viewer.Preferences.COOKIE_PREFIX + \"eula\");\n    return (value && (value === 'Yes'));\n};\n\n\n\npapaya.Container.showLicense = function (container, params) {\n    var showEula = (params && params.showEULA !== undefined) && params.showEULA;\n\n    if (showEula && !papaya.Container.isLicenseRead()) {\n        var dialog = new papaya.ui.Dialog(container, \"License\", papaya.ui.Toolbar.LICENSE_DATA,\n            papaya.Container, null, papaya.Container.setLicenseRead, null, true);\n        dialog.showDialog();\n    }\n};\n\n\n\npapaya.Container.updateOrthogonalState = function () {\n    var ctr;\n\n    for (ctr = 0; ctr < papayaContainers.length; ctr += 1) {\n        if (papayaContainers[ctr].orthogonal &&\n            ((papaya.utilities.PlatformUtils.mobile || papayaContainers[ctr].orthogonalDynamic))) {\n            if ($(window).height() > $(window).width()) {\n                papayaContainers[ctr].orthogonalTall = true;\n            } else {\n                papayaContainers[ctr].orthogonalTall = false;\n            }\n        }\n    }\n};\n\n\n\npapaya.Container.reorientPapaya = function () {\n    var ctr;\n\n    for (ctr = 0; ctr < papayaContainers.length; ctr += 1) {\n        papayaContainers[ctr].toolbar.closeAllMenus();\n    }\n\n    papaya.Container.updateOrthogonalState();\n    papaya.Container.resizePapaya(null, true);\n};\n\n\n\n/*** Prototype Methods ***/\n\npapaya.Container.prototype.resetComponents = function () {\n    this.containerHtml.css({height: \"auto\"});\n    this.containerHtml.css({width: \"auto\"});\n    this.containerHtml.css({margin: \"auto\"});\n    $('head').append(\"<style>div#papayaViewer:before{ content:'' }</style>\");\n};\n\n\n\npapaya.Container.prototype.hasSurface = function () {\n    return (this.viewer && (this.viewer.surfaces.length > 0));\n};\n\n\n\n\npapaya.Container.prototype.getViewerDimensions = function () {\n    var parentWidth, height, width, ratio, maxHeight, maxWidth;\n\n    parentWidth = this.containerHtml.parent().width() - (this.fullScreenPadding ? (2 * PAPAYA_PADDING) : 0);\n    ratio = (this.orthogonal ? (this.hasSurface() ? 1.333 : 1.5) : 1);\n\n    if (this.orthogonalTall || !this.orthogonal) {\n        height = (this.collapsable ? window.innerHeight : this.containerHtml.parent().height()) - (papaya.viewer.Display.SIZE + (this.kioskMode ? 0 : (papaya.ui.Toolbar.SIZE +\n            PAPAYA_SPACING)) + PAPAYA_SPACING + (this.fullScreenPadding && !this.nestedViewer ? (2 * PAPAYA_CONTAINER_PADDING_TOP) : 0)) -\n            (this.showControlBar ? 2*papaya.ui.Toolbar.SIZE : 0);\n\n        width = papayaRoundFast(height / ratio);\n    } else {\n\n        width = parentWidth;\n        height = papayaRoundFast(width / ratio);\n    }\n\n    if (!this.nestedViewer || this.collapsable) {\n\n        if (this.orthogonalTall) {\n\n            maxWidth = window.innerWidth - (this.fullScreenPadding ? (2 * PAPAYA_PADDING) : 0);\n            if (width > maxWidth) {\n                width = maxWidth;\n                height = papayaRoundFast(width * ratio);\n            }\n        } else {\n\n            maxHeight = window.innerHeight - (papaya.viewer.Display.SIZE + (this.kioskMode ? 0 : (papaya.ui.Toolbar.SIZE +\n                PAPAYA_SPACING)) + PAPAYA_SPACING + (this.fullScreenPadding ? (2 * PAPAYA_CONTAINER_PADDING_TOP) : 0)) -\n                (this.showControlBar ? 2*papaya.ui.Toolbar.SIZE : 0);\n            if (height > maxHeight) {\n                height = maxHeight;\n                width = papayaRoundFast(height * ratio);\n            }\n\n        }\n    }\n\n    return [width, height];\n};\n\n\n\npapaya.Container.prototype.getViewerPadding = function () {\n    var parentWidth, viewerDims, padding;\n\n    parentWidth = this.containerHtml.parent().width() - (this.fullScreenPadding ? (2 * PAPAYA_PADDING) : 0);\n    viewerDims = this.getViewerDimensions();\n    padding = ((parentWidth - viewerDims[0]) / 2);\n\n    return padding;\n};\n\n\n\npapaya.Container.prototype.readGlobalParams = function() {\n    this.kioskMode = (this.params.kioskMode === true) || papaya.utilities.PlatformUtils.smallScreen;\n    this.combineParametric = (this.params.combineParametric === true);\n\n    if (this.params.loadingComplete) {\n        this.loadingComplete = this.params.loadingComplete;\n    }\n\n    if (this.params.showControls !== undefined) {  // default is true\n        this.showControls = this.params.showControls;\n    }\n\n    if (this.params.noNewFiles !== undefined) {  // default is false\n        this.noNewFiles = this.params.noNewFiles;\n    }\n\n    if (this.params.showImageButtons !== undefined) {  // default is true\n        this.showImageButtons = this.params.showImageButtons;\n    }\n\n    if (papaya.utilities.PlatformUtils.smallScreen) {\n        this.showImageButtons = false;\n    }\n\n    if (this.params.fullScreenPadding !== undefined) {  // default is true\n        this.fullScreenPadding = this.params.fullScreenPadding;\n    }\n\n    if (this.params.orthogonal !== undefined) {  // default is true\n        this.orthogonal = this.params.orthogonal;\n    }\n\n    this.surfaceParams.showSurfacePlanes = (this.params.showSurfacePlanes === true);\n    this.surfaceParams.showSurfaceCrosshairs = (this.params.showSurfaceCrosshairs === true);\n    this.surfaceParams.surfaceBackground = this.params.surfaceBackground;\n\n    this.orthogonalTall = this.orthogonal && (this.params.orthogonalTall === true);\n    this.orthogonalDynamic = this.orthogonal && (this.params.orthogonalDynamic === true);\n\n    if (this.params.allowScroll !== undefined) {  // default is true\n        this.allowScroll = this.params.allowScroll;\n    }\n\n    if (papaya.utilities.PlatformUtils.mobile || this.orthogonalDynamic) {\n        if (this.orthogonal) {\n            if ($(window).height() > $(window).width()) {\n                this.orthogonalTall = true;\n            } else {\n                this.orthogonalTall = false;\n            }\n        }\n    }\n\n    if (this.params.syncOverlaySeries !== undefined) {  // default is true\n        this.syncOverlaySeries = this.params.syncOverlaySeries;\n    }\n\n    if (this.params.showControlBar !== undefined) {  // default is true\n        this.showControlBar = this.showControls && this.params.showControlBar;\n    }\n\n    if (this.params.contextManager !== undefined) {\n        this.contextManager = this.params.contextManager;\n    }\n\n    if (this.params.fullScreen === true) {\n        this.fullScreenPadding = this.params.fullScreenPadding = false;\n        this.kioskMode = this.params.kioskMode = true;\n        this.showControlBar = this.params.showControlBar = false;\n        $('body').css(\"background-color:'black'\");\n    }\n};\n\n\n\npapaya.Container.prototype.reset = function () {\n    this.loadingImageIndex = 0;\n    this.loadingSurfaceIndex = 0;\n    this.nestedViewer = false;\n    this.collapsable = false;\n    this.orthogonal = true;\n    this.orthogonalTall = false;\n    this.orthogonalDynamic = false;\n    this.kioskMode = false;\n    this.noNewFiles = false;\n    this.showControls = true;\n    this.showControlBar = false;\n    this.fullScreenPadding = true;\n    this.combineParametric = false;\n    this.showRuler = false;\n};\n\n\n\npapaya.Container.prototype.resizeViewerComponents = function (resize) {\n    var dims, padding, diff = 0;\n\n    this.toolbar.closeAllMenus();\n\n    dims = this.getViewerDimensions();\n    padding = this.getViewerPadding();\n\n    this.toolbarHtml.css({width: dims[0] + \"px\"});\n    this.toolbarHtml.css({height: papaya.ui.Toolbar.SIZE + \"px\"});\n    this.toolbarHtml.css({paddingLeft: padding + \"px\"});\n    this.toolbarHtml.css({paddingBottom: PAPAYA_SPACING + \"px\"});\n\n    this.viewerHtml.css({width: dims[0] + \"px\"});\n    this.viewerHtml.css({height: dims[1] + \"px\"});\n    this.viewerHtml.css({paddingLeft: padding + \"px\"});\n\n    if (resize) {\n        this.viewer.resizeViewer(dims);\n    }\n\n    this.displayHtml.css({height: papaya.viewer.Display.SIZE + \"px\"});\n    this.displayHtml.css({paddingLeft: padding + \"px\"});\n    this.displayHtml.css({paddingTop: PAPAYA_SPACING + \"px\"});\n    this.display.canvas.width = dims[0];\n\n    if (this.showControls && this.showControlBar) {\n        this.sliderControlHtml.css({width: dims[0] + \"px\"});\n        this.sliderControlHtml.css({height: papaya.viewer.Display.SIZE + \"px\"});\n\n        if (this.kioskMode) {\n            diff += 0;\n        } else {\n            diff += -50;\n        }\n\n        if (this.viewer.hasSeries) {\n            diff += 200;\n        } else {\n            diff += 0;\n        }\n\n        if (dims[0] < (775 + diff)) {\n            $(\".\" + PAPAYA_CONTROL_GOTO_CENTER_BUTTON_CSS).css({display: \"none\"});\n            $(\".\" + PAPAYA_CONTROL_GOTO_ORIGIN_BUTTON_CSS).css({display: \"none\"});\n        } else {\n            $(\".\" + PAPAYA_CONTROL_GOTO_CENTER_BUTTON_CSS).css({display: \"inline\"});\n            $(\".\" + PAPAYA_CONTROL_GOTO_ORIGIN_BUTTON_CSS).css({display: \"inline\"});\n        }\n\n        if (dims[0] < (600 + diff)) {\n            $(\".\" + PAPAYA_CONTROL_DIRECTION_SLIDER).css({display: \"none\"});\n            $(\".\" + PAPAYA_CONTROL_MAIN_SLIDER).css({display: \"inline\"});\n        } else {\n            $(\".\" + PAPAYA_CONTROL_DIRECTION_SLIDER).css({display: \"inline\"});\n            $(\".\" + PAPAYA_CONTROL_MAIN_SLIDER).css({display: \"none\"});\n        }\n\n        if (this.viewer.hasSeries && (dims[0] < (450 + diff))) {\n            $(\".\" + PAPAYA_CONTROL_MAIN_SLIDER).css({display: \"none\"});\n        }\n\n        if (dims[0] < 200) {\n            $(\".\" + PAPAYA_CONTROL_SWAP_BUTTON_CSS).css({display: \"none\"});\n        } else {\n            $(\".\" + PAPAYA_CONTROL_SWAP_BUTTON_CSS).css({display: \"inline\"});\n        }\n\n        if (this.viewer.hasSeries) {\n            $(\".\" + PAPAYA_CONTROL_DIRECTION_SLIDER).eq(3).css({display: \"inline\"});\n        } else {\n            $(\".\" + PAPAYA_CONTROL_DIRECTION_SLIDER).eq(3).css({display: \"none\"});\n        }\n    } else if (this.showControls && this.viewer.initialized) {\n        if (dims[0] < 600) {\n            $(\"#\" + PAPAYA_CONTROL_MAIN_GOTO_CENTER_BUTTON_CSS + this.containerIndex).css({display: \"none\"});\n            $(\"#\" + PAPAYA_CONTROL_MAIN_GOTO_ORIGIN_BUTTON_CSS + this.containerIndex).css({display: \"none\"});\n        } else if (!this.viewer.controlsHidden) {\n            $(\"#\" + PAPAYA_CONTROL_MAIN_GOTO_CENTER_BUTTON_CSS + this.containerIndex).css({display: \"inline\"});\n            $(\"#\" + PAPAYA_CONTROL_MAIN_GOTO_ORIGIN_BUTTON_CSS + this.containerIndex).css({display: \"inline\"});\n        }\n    }\n\n    if (this.isDesktopMode()) {\n        if (dims[0] < 600) {\n            this.titlebarHtml.css({visibility: \"hidden\"});\n        } else {\n            this.titlebarHtml.css({visibility: \"visible\"});\n        }\n    }\n\n    if ((!this.nestedViewer || this.collapsable) && this.fullScreenPadding) {\n        this.containerHtml.css({paddingTop: PAPAYA_CONTAINER_PADDING_TOP + \"px\"});\n    } else {\n        this.containerHtml.css({paddingTop: \"0\"});\n    }\n\n    if (this.fullScreenPadding) {\n        this.containerHtml.css({paddingLeft: PAPAYA_PADDING + \"px\"});\n        this.containerHtml.css({paddingRight: PAPAYA_PADDING + \"px\"});\n    }\n\n    if (this.viewer.initialized) {\n        this.viewer.drawViewer(false, true);\n    } else {\n        this.viewer.drawEmptyViewer();\n        this.display.drawEmptyDisplay();\n    }\n\n    this.titlebarHtml.css({width: dims[0] + \"px\", top: (0)});\n};\n\n\n\npapaya.Container.prototype.updateViewerSize = function () {\n    this.toolbar.closeAllMenus();\n    this.viewer.resizeViewer(this.getViewerDimensions());\n    this.viewer.updateOffsetRect();\n};\n\n\n\npapaya.Container.prototype.buildViewer = function (params) {\n    var dims;\n\n    this.viewerHtml = this.containerHtml.find(\".\" + PAPAYA_VIEWER_CSS);\n    papaya.Container.removeCheckForJSClasses(this.containerHtml, this.viewerHtml);\n    this.viewerHtml.html(\"\");  // remove noscript message\n    dims = this.getViewerDimensions();\n    this.viewer = new papaya.viewer.Viewer(this, dims[0], dims[1], params);\n    this.viewerHtml.append($(this.viewer.canvas));\n    this.preferences.viewer = this.viewer;\n};\n\n\n\npapaya.Container.prototype.buildDisplay = function () {\n    var dims;\n\n    this.displayHtml = this.containerHtml.find(\".\" + PAPAYA_DISPLAY_CSS);\n    dims = this.getViewerDimensions();\n    this.display = new papaya.viewer.Display(this, dims[0]);\n    this.displayHtml.append($(this.display.canvas));\n};\n\n\n\npapaya.Container.prototype.buildSliderControl = function () {\n    this.sliderControlHtml = this.containerHtml.find(\".\" + PAPAYA_KIOSK_CONTROLS_CSS);\n};\n\n\n\npapaya.Container.prototype.buildToolbar = function () {\n    this.toolbarHtml = this.containerHtml.find(\".\" + PAPAYA_TOOLBAR_CSS);\n    this.toolbar = new papaya.ui.Toolbar(this);\n    this.toolbar.buildToolbar();\n    this.toolbar.updateImageButtons();\n};\n\n\n\npapaya.Container.prototype.readFile = function(fileEntry, callback) {\n    fileEntry.file(function(callback, file){\n        if (callback) {\n            if (file.name.charAt(0) !== '.') {\n                callback(file);\n            }\n        }\n    }.bind(this, callback));\n};\n\n\n\npapaya.Container.prototype.readDir = function(itemEntry) {\n    this.readDirNextEntries(itemEntry.createReader());\n};\n\n\n\npapaya.Container.prototype.readDirNextEntries = function(dirReader) {\n    var container = this;\n\n    dirReader.readEntries(function(entries) {\n        var len = entries.length,\n            ctr, entry;\n\n        if (len > 0) {\n            for (ctr = 0; ctr < len; ctr += 1) {\n                entry = entries[ctr];\n                if (entry.isFile) {\n                    container.readFile(entry, papaya.utilities.ObjectUtils.bind(container, container.addDroppedFile));\n                }\n            }\n\n            container.readDirNextEntries(dirReader);\n        }\n    });\n};\n\n\n\npapaya.Container.prototype.setUpDnD = function () {\n    var container = this;\n\n    this.containerHtml[0].ondragover = function () {\n        container.viewer.draggingOver = true;\n        if (!container.viewer.initialized) {\n            container.viewer.drawEmptyViewer();\n        }\n\n        return false;\n    };\n\n    this.containerHtml[0].ondragleave = function () {\n        container.viewer.draggingOver = false;\n        if (!container.viewer.initialized) {\n            container.viewer.drawEmptyViewer();\n        }\n        return false;\n    };\n\n    this.containerHtml[0].ondragend = function () {\n        container.viewer.draggingOver = false;\n        if (!container.viewer.initialized) {\n            container.viewer.drawEmptyViewer();\n        }\n        return false;\n    };\n\n    this.containerHtml[0].ondrop = function (evt) {\n        evt.preventDefault();\n\n        var dataTransfer = evt.dataTransfer;\n\n        container.display.drawProgress(0.1, \"Loading\");\n\n        if (dataTransfer) {\n            if (dataTransfer.items && (dataTransfer.items.length > 0)) {\n                var items = dataTransfer.items,\n                    len = items.length,\n                    ctr, entry;\n\n                for (ctr = 0; ctr<len; ctr += 1) {\n                    entry = items[ctr];\n\n                    if (entry.getAsEntry) {\n                        entry = entry.getAsEntry();\n                    } else if(entry.webkitGetAsEntry) {\n                        entry = entry.webkitGetAsEntry();\n                    }\n\n                    if (entry.isFile) {\n                        container.readFile(entry, papaya.utilities.ObjectUtils.bind(container,\n                            container.addDroppedFile));\n                    } else if (entry.isDirectory) {\n                        container.readDir(entry);\n                    }\n                }\n            }\n\n            //else if (dataTransfer.mozGetDataAt) {  // permission denied :-(\n            //    console.log(dataTransfer.mozGetDataAt('application/x-moz-file', 0));\n            //}\n\n            else if (dataTransfer.files && (dataTransfer.files.length > 0)) {\n                container.viewer.loadImage(evt.dataTransfer.files);\n            }\n        }\n\n        return false;\n    };\n};\n\n\n\npapaya.Container.prototype.addDroppedFile = function (file) {\n    clearTimeout(this.dropTimeout);\n    papayaDroppedFiles.push(file);\n    this.dropTimeout = setTimeout(papaya.utilities.ObjectUtils.bind(this, this.droppedFilesFinishedLoading), 100);\n};\n\n\n\npapaya.Container.prototype.droppedFilesFinishedLoading = function () {\n    if (papaya.surface.Surface.findSurfaceType(papayaDroppedFiles[0].name) !== papaya.surface.Surface.SURFACE_TYPE_UNKNOWN) {\n        this.viewer.loadSurface(papayaDroppedFiles);\n    } else {\n        this.viewer.loadImage(papayaDroppedFiles);\n    }\n\n    papayaDroppedFiles = [];\n};\n\n\n\npapaya.Container.prototype.clearParams = function () {\n    this.params = [];\n};\n\n\n\npapaya.Container.prototype.loadNext = function () {\n    if (this.hasImageToLoad()) {\n        this.loadNextImage();\n    } else if (this.hasSurfaceToLoad()) {\n        this.loadNextSurface();\n    } else if (this.hasAtlasToLoad()) {\n        this.viewer.loadAtlas();\n    }\n};\n\n\n\npapaya.Container.prototype.hasMoreToLoad = function () {\n    return (this.hasImageToLoad() || this.hasSurfaceToLoad() || this.hasAtlasToLoad());\n};\n\n\n\npapaya.Container.prototype.hasImageToLoad = function () {\n    if (this.params.images) {\n        return (this.loadingImageIndex < this.params.images.length);\n    } else if(this.params.binaryImages) {\n        return (this.loadingImageIndex < this.params.binaryImages.length);\n    } else if (this.params.encodedImages) {\n        return (this.loadingImageIndex < this.params.encodedImages.length);\n    } else if (this.params.files) {\n        return (this.loadingImageIndex < this.params.files.length);\n    }\n\n    return false;\n};\n\n\n\npapaya.Container.prototype.hasAtlasToLoad = function () {\n    return (papaya.Container.atlas == null) && this.viewer.hasDefinedAtlas();\n};\n\n\npapaya.Container.prototype.hasSurfaceToLoad = function () {\n    if (!papaya.utilities.PlatformUtils.isWebGLSupported()) {\n        console.log(\"Warning: This browser version is not able to load surfaces.\");\n        return false;\n    }\n\n    if (this.params.surfaces) {\n        return (this.loadingSurfaceIndex < this.params.surfaces.length);\n    } else if (this.params.encodedSurfaces) {\n        return (this.loadingSurfaceIndex < this.params.encodedSurfaces.length);\n    }\n\n    return false;\n};\n\n\n\npapaya.Container.prototype.loadNextSurface = function () {\n    var loadingNext = false, imageRefs;\n\n    if (this.params.surfaces) {\n        if (this.loadingSurfaceIndex < this.params.surfaces.length) {\n            loadingNext = true;\n            imageRefs = this.params.surfaces[this.loadingSurfaceIndex];\n            this.loadingSurfaceIndex += 1;\n            this.viewer.loadSurface(imageRefs, true, false);\n        } else {\n            this.params.loadedSurfaces = this.params.surfaces;\n            this.params.surfaces = [];\n        }\n    } else if (this.params.encodedSurfaces) {\n        if (this.loadingSurfaceIndex < this.params.encodedSurfaces.length) {\n            loadingNext = true;\n            imageRefs = this.params.encodedSurfaces[this.loadingSurfaceIndex];\n\n            if (!(imageRefs instanceof Array)) {\n                imageRefs = [];\n                imageRefs[0] = this.params.encodedSurfaces[this.loadingSurfaceIndex];\n            }\n\n            this.viewer.loadSurface(imageRefs, false, true);\n            this.loadingSurfaceIndex += 1;\n        } else {\n            this.params.loadedEncodedSurfaces = this.params.encodedSurfaces;\n            this.params.encodedSurfaces = [];\n        }\n    }\n\n    return loadingNext;\n};\n\n\n\npapaya.Container.prototype.loadNextImage = function () {\n    var loadingNext = false, imageRefs;\n\n    if (this.params.images) {\n        if (this.loadingImageIndex < this.params.images.length) {\n            loadingNext = true;\n            imageRefs = this.params.images[this.loadingImageIndex];\n\n            if (!(imageRefs instanceof Array)) {\n                imageRefs = [];\n                imageRefs[0] = this.params.images[this.loadingImageIndex];\n            }\n\n            this.viewer.loadImage(imageRefs, true, false, false);\n            this.loadingImageIndex += 1;\n        } else {\n            this.params.loadedImages = this.params.images;\n            this.params.images = [];\n        }\n    } else if(this.params.binaryImages) {\n        if (this.loadingImageIndex < this.params.binaryImages.length) {\n            loadingNext = true;\n            imageRefs = this.params.binaryImages[this.loadingImageIndex];\n\n            if (!(imageRefs instanceof Array)) {\n                imageRefs = [];\n                imageRefs[0] = this.params.binaryImages[this.loadingImageIndex];\n            }\n\n            this.viewer.loadImage(imageRefs, false, false, true);\n            this.loadingImageIndex += 1;\n        } else {\n            this.params.loadedEncodedImages = this.params.binaryImages;\n            this.params.binaryImages = [];\n        }\n    } else if (this.params.encodedImages) {\n        if (this.loadingImageIndex < this.params.encodedImages.length) {\n            loadingNext = true;\n            imageRefs = this.params.encodedImages[this.loadingImageIndex];\n\n            if (!(imageRefs instanceof Array)) {\n                imageRefs = [];\n                imageRefs[0] = this.params.encodedImages[this.loadingImageIndex];\n            }\n\n            this.viewer.loadImage(imageRefs, false, true, false);\n            this.loadingImageIndex += 1;\n        } else {\n            this.params.loadedEncodedImages = this.params.encodedImages;\n            this.params.encodedImages = [];\n        }\n    } else if (this.params.files) {\n        if (this.loadingImageIndex < this.params.files.length) {\n            loadingNext = true;\n            imageRefs = this.params.files[this.loadingImageIndex];\n\n            if (!(imageRefs instanceof Array)) {\n                imageRefs = [];\n                imageRefs[0] = this.params.files[this.loadingImageIndex];\n            }\n\n            this.viewer.loadImage(imageRefs, false, false, false);\n            this.loadingImageIndex += 1;\n        } else {\n            this.params.loadedFiles = this.params.files;\n            this.params.files = [];\n        }\n    }\n\n    return loadingNext;\n};\n\n\n\npapaya.Container.prototype.readyForDnD = function () {\n    return !this.kioskMode && ((this.params.images === undefined) ||\n        (this.loadingImageIndex >= this.params.images.length)) &&\n        ((this.params.binaryImages === undefined) ||\n        (this.loadingImageIndex >= this.params.binaryImages.length)) &&\n        ((this.params.encodedImages === undefined) ||\n        (this.loadingImageIndex >= this.params.encodedImages.length)) &&\n        ((this.params.encodedSurfaces === undefined) ||\n        (this.loadingSurfaceIndex >= this.params.encodedSurfaces.length));\n};\n\n\n\npapaya.Container.prototype.findLoadableImage = function (name, surface) {\n    var ctr;\n\n    for (ctr = 0; ctr < papayaLoadableImages.length; ctr += 1) {\n        if (surface) {\n            if (papayaLoadableImages[ctr].surface) {\n                if (papayaLoadableImages[ctr].name == name) {  // needs to be ==, not ===\n                    return papayaLoadableImages[ctr];\n                }\n            }\n        } else {\n            if (papayaLoadableImages[ctr].name == name) {  // needs to be ==, not ===\n                return papayaLoadableImages[ctr];\n            }\n        }\n    }\n\n    if (window[name] !== undefined) {\n        return {encode:name};\n    }\n\n    return null;\n};\n\n\n\npapaya.Container.prototype.findLoadableImages = function (refs, surface) {\n    var ctr, loadable, loadables = [];\n\n    if (!Array.isArray(refs)) {\n        refs = [refs];\n    }\n\n    if (refs) {\n        for (ctr = 0; ctr < refs.length; ctr++) {\n            loadable = this.findLoadableImage(refs[ctr], surface);\n\n            if (loadable) {\n                loadables.push(loadable);\n            }\n        }\n    }\n\n    if (loadables.length > 0) {\n        return loadables;\n    }\n\n    return null;\n};\n\n\n\npapaya.Container.prototype.expandViewer = function () {\n    var container = this;\n\n    if (this.nestedViewer) {\n        this.nestedViewer = false;\n        this.collapsable = true;\n        this.tempScrollTop = $(window).scrollTop();\n\n        $(\":hidden\").addClass(PAPAYA_CONTAINER_COLLAPSABLE_EXEMPT);\n        $(document.body).children().hide();\n        this.containerHtml.show();\n\n        this.originalStyle = {};\n        this.originalStyle.width = document.body.style.width;\n        this.originalStyle.height = document.body.style.height;\n        this.originalStyle.marginTop = document.body.style.marginTop;\n        this.originalStyle.marginRight = document.body.style.marginRight;\n        this.originalStyle.marginBottom = document.body.style.marginBottom;\n        this.originalStyle.marginLeft = document.body.style.marginLeft;\n        this.originalStyle.paddingTop = document.body.style.paddingTop;\n        this.originalStyle.paddingRight = document.body.style.paddingRight;\n        this.originalStyle.paddingBottom = document.body.style.paddingBottom;\n        this.originalStyle.paddingLeft = document.body.style.paddingLeft;\n        this.originalStyle.overflow = document.body.style.overflow;\n\n        papaya.Container.setToFullPage();\n\n        this.containerHtml.after('<div style=\"display:none\" class=\"' + PAPAYA_CONTAINER_COLLAPSABLE + '\"></div>');\n        $(document.body).prepend(this.containerHtml);\n\n        this.resizeViewerComponents(true);\n        this.viewer.updateOffsetRect();\n        this.updateViewerSize();\n\n        setTimeout(function () {\n            window.scrollTo(0, 0);\n            container.viewer.addScroll();\n        }, 0);\n    }\n};\n\n\npapaya.Container.prototype.collapseViewer = function () {\n    var ctr, container;\n\n    container = this;\n\n    if (this.collapsable) {\n        this.nestedViewer = true;\n        this.collapsable = false;\n\n        document.body.style.width = this.originalStyle.width;\n        document.body.style.height = this.originalStyle.height;\n        document.body.style.marginTop = this.originalStyle.marginTop;\n        document.body.style.marginRight = this.originalStyle.marginRight;\n        document.body.style.marginBottom = this.originalStyle.marginBottom;\n        document.body.style.marginLeft = this.originalStyle.marginLeft;\n        document.body.style.paddingTop = this.originalStyle.paddingTop;\n        document.body.style.paddingRight = this.originalStyle.paddingRight;\n        document.body.style.paddingBottom = this.originalStyle.paddingBottom;\n        document.body.style.paddingLeft = this.originalStyle.paddingLeft;\n        document.body.style.overflow = this.originalStyle.overflow;\n\n        $(\".\" + PAPAYA_CONTAINER_COLLAPSABLE).replaceWith(this.containerHtml);\n        $(document.body).children(\":not(.\" + PAPAYA_CONTAINER_COLLAPSABLE_EXEMPT + \")\").show();\n        $(\".\" + PAPAYA_CONTAINER_COLLAPSABLE_EXEMPT).removeClass(PAPAYA_CONTAINER_COLLAPSABLE_EXEMPT);\n\n        this.resizeViewerComponents(true);\n\n        for (ctr = 0; ctr < papayaContainers.length; ctr += 1) {\n            papayaContainers[ctr].updateViewerSize();\n            papayaContainers[ctr].viewer.drawViewer(true);\n        }\n\n        setTimeout(function () {\n            $(window).scrollTop(container.tempScrollTop);\n            container.viewer.removeScroll();\n        }, 0);\n    }\n};\n\n\n\npapaya.Container.prototype.isNestedViewer = function () {\n    return (this.nestedViewer || this.collapsable);\n};\n\n\n\npapaya.Container.prototype.isDesktopMode = function () {\n    return !this.kioskMode;\n};\n\n\n\npapaya.Container.prototype.hasLoadedDTI = function () {\n    return this.viewer.hasLoadedDTI();\n};\n\n\n\npapaya.Container.prototype.disableScrollWheel = function () {\n    return (this.isNestedViewer() || papaya.utilities.PlatformUtils.ios);\n};\n\n\n\npapaya.Container.prototype.canOpenInMango = function () {\n    return this.params.canOpenInMango;\n};\n\n\n\npapaya.Container.prototype.isExpandable = function () {\n    return this.params.expandable && this.isNestedViewer();\n};\n\n\n\npapaya.Container.prototype.isParametricCombined = function (index) {\n    return this.combineParametric && this.viewer.hasParametricPair(index);\n};\n\n\n\npapaya.Container.prototype.isNonParametricCombined = function (index) {\n    return !this.isParametricCombined(index);\n};\n\n\n\npapaya.Container.prototype.coordinateChanged = function (viewer) {\n    var ctr, coorWorld,\n        coor = viewer.currentCoord;\n\n    if (!viewer.ignoreSync) {\n        if (papaya.Container.syncViewersWorld) {\n            for (ctr = 0; ctr < papayaContainers.length; ctr += 1) {\n                if ((papayaContainers[ctr].viewer !== viewer) && !papayaContainers[ctr].viewer.ignoreSync) {\n                    coorWorld = new papaya.core.Coordinate();\n                    papayaContainers[ctr].viewer.gotoWorldCoordinate(viewer.getWorldCoordinateAtIndex(coor.x, coor.y, coor.z, coorWorld), true);\n                }\n            }\n        } else if (papaya.Container.syncViewers) {\n            for (ctr = 0; ctr < papayaContainers.length; ctr += 1) {\n                if ((papayaContainers[ctr].viewer !== viewer) && !papayaContainers[ctr].viewer.ignoreSync) {\n                    papayaContainers[ctr].viewer.gotoCoordinate(coor, true);\n                }\n            }\n        }\n    }\n\n    if (viewer.surfaceView) {\n        viewer.surfaceView.updateActivePlanes();\n    }\n\n    if (this.contextManager && this.contextManager.clearContext) {\n        this.contextManager.clearContext();\n    }\n};\n\n\n\npapaya.Container.prototype.canCurrentOverlayLoadNegatives = function () {\n    var overlay = this.viewer.currentScreenVolume;\n    return (!overlay.negative && (overlay.negativeScreenVol === null));\n};\n\n\n\npapaya.Container.prototype.canCurrentOverlayLoadMod = function () {\n    var overlay = this.viewer.currentScreenVolume;\n    return (overlay.dti && (overlay.dtiVolumeMod === null));\n};\n\n\n\npapaya.Container.prototype.canCurrentOverlayModulate = function () {\n    var overlay = this.viewer.currentScreenVolume;\n    return (overlay.dti && (overlay.dtiVolumeMod !== null));\n};\n\n\n\n/*** Window Events ***/\n\nwindow.addEventListener('resize', papaya.Container.resizePapaya, false);\nwindow.addEventListener(\"orientationchange\", papaya.Container.reorientPapaya, false);\nwindow.addEventListener(\"load\", papaya.Container.startPapaya, false);\nwindow.addEventListener('message', function (msg) {\n    if (msg.data === PAPAYA_MANGO_INSTALLED) {\n        papaya.mangoinstalled = true;\n    }\n}, false);\n"]}