????
Current Path : C:/inetpub/vhost/bcvt.kontum.gov.vn/www/ |
Current File : C:/inetpub/vhost/bcvt.kontum.gov.vn/www/53-es5.js.map |
{"version":3,"sources":["webpack:///node_modules/arcgis-js-api/core/cookie.js","webpack:///node_modules/arcgis-js-api/identity/Credential.js","webpack:///node_modules/arcgis-js-api/identity/IdentityManager.js","webpack:///node_modules/arcgis-js-api/identity/IdentityManagerBase.js","webpack:///node_modules/arcgis-js-api/identity/IdentityManagerDialog.js","webpack:///node_modules/arcgis-js-api/identity/OAuthCredential.js","webpack:///node_modules/arcgis-js-api/identity/OAuthInfo.js","webpack:///node_modules/arcgis-js-api/identity/OAuthSignInHandler.js","webpack:///node_modules/arcgis-js-api/identity/ServerInfo.js","webpack:///node_modules/arcgis-js-api/identity/nls/identity.js","webpack:///node_modules/arcgis-js-api/identity/nls/vi/identity.js","webpack:///node_modules/dijit/BackgroundIframe.js","webpack:///node_modules/dijit/Destroyable.js","webpack:///node_modules/dijit/Dialog.js","webpack:///node_modules/dijit/DialogUnderlay.js","webpack:///node_modules/dijit/Tooltip.js","webpack:///node_modules/dijit/Viewport.js","webpack:///node_modules/dijit/_AttachMixin.js","webpack:///node_modules/dijit/_BidiMixin.js","webpack:///node_modules/dijit/_Container.js","webpack:///node_modules/dijit/_CssStateMixin.js","webpack:///node_modules/dijit/_DialogMixin.js","webpack:///node_modules/dijit/_FocusMixin.js","webpack:///node_modules/dijit/_OnDijitClickMixin.js","webpack:///node_modules/dijit/_TemplatedMixin.js","webpack:///node_modules/dijit/_Widget.js","webpack:///node_modules/dijit/_WidgetBase.js","webpack:///node_modules/dijit/_base/manager.js","webpack:///node_modules/dijit/a11y.js","webpack:///node_modules/dijit/a11yclick.js","webpack:///node_modules/dijit/focus.js","webpack:///node_modules/dijit/form/Button.js","webpack:///node_modules/dijit/form/Form.js","webpack:///node_modules/dijit/form/TextBox.js","webpack:///node_modules/dijit/form/ValidationTextBox.js","webpack:///node_modules/dijit/form/_ButtonMixin.js","webpack:///node_modules/dijit/form/_FormMixin.js","webpack:///node_modules/dijit/form/_FormValueMixin.js","webpack:///node_modules/dijit/form/_FormValueWidget.js","webpack:///node_modules/dijit/form/_FormWidget.js","webpack:///node_modules/dijit/form/_FormWidgetMixin.js","webpack:///node_modules/dijit/form/_TextBoxMixin.js","webpack:///node_modules/dijit/form/nls/validate.js","webpack:///node_modules/dijit/form/nls/vi/validate.js","webpack:///node_modules/dijit/hccss.js","webpack:///node_modules/dijit/layout/ContentPane.js","webpack:///node_modules/dijit/layout/_ContentPaneResizeMixin.js","webpack:///node_modules/dijit/layout/utils.js","webpack:///node_modules/dijit/main.js","webpack:///node_modules/dijit/nls/common.js","webpack:///node_modules/dijit/nls/loading.js","webpack:///node_modules/dijit/nls/vi/common.js","webpack:///node_modules/dijit/nls/vi/loading.js","webpack:///node_modules/dijit/place.js","webpack:///node_modules/dijit/registry.js","webpack:///node_modules/arcgis-js-api/identity/nls/identity.js?fdcb","webpack:///node_modules/dijit/form/nls/validate.js?4a5e","webpack:///node_modules/dijit/nls/common.js?bdd1","webpack:///node_modules/dijit/nls/loading.js?76aa","webpack:///node_modules/dijit/form/templates/Button.html","webpack:///node_modules/dijit/form/templates/TextBox.html","webpack:///node_modules/dijit/form/templates/ValidationTextBox.html","webpack:///node_modules/dijit/templates/Dialog.html","webpack:///node_modules/dijit/templates/Tooltip.html","webpack:///node_modules/dojo/_base/fx.js","webpack:///node_modules/dojo/_base/url.js","webpack:///node_modules/dojo/cache.js","webpack:///node_modules/dojo/date/stamp.js","webpack:///node_modules/dojo/dnd/Moveable.js","webpack:///node_modules/dojo/dnd/Mover.js","webpack:///node_modules/dojo/dnd/TimedMoveable.js","webpack:///node_modules/dojo/dnd/autoscroll.js","webpack:///node_modules/dojo/dnd/common.js","webpack:///node_modules/dojo/dom-class.js","webpack:///node_modules/dojo/domReady.js","webpack:///node_modules/dojo/hccss.js","webpack:///node_modules/dojo/html.js","webpack:///node_modules/dojo/parser.js","webpack:///node_modules/dojo/query.js","webpack:///node_modules/dojo/ready.js","webpack:///node_modules/dojo/request.js","webpack:///node_modules/dojo/selector/_loader.js","webpack:///node_modules/dojo/selector/lite.js","webpack:///node_modules/dojo/string.js","webpack:///node_modules/dojo/text.js","webpack:///node_modules/dojo/touch.js","webpack:///node_modules/dojo/uacss.js","webpack:///node_modules/dojo/window.js"],"names":["e","i","o","r","expires","t","Date","setTime","getTime","toUTCString","n","encodeURIComponent","f","p","document","cookie","Object","defineProperty","value","writeCookie","Credential","a","d","l","safeMixin","id","s","h","u","c","v","_","g","m","S","y","w","I","k","Url","owningSystemUrl","host","server","test","U","some","A","call","_portalConfig","esriGeowConfig","serverInfos","oAuthInfos","credentials","_soReqs","_xoReqs","_portals","defaultOAuthInfo","defaultTokenValidity","tokenValidity","signInPage","useSignInPage","normalizeWebTierAuth","_busy","_rejectOnPersistedPageShow","_oAuthHash","_gwTokenUrl","_agsRest","_agsPortal","_agsAdmin","_adminSvcs","_agolSuffix","_gwDomains","regex","tokenServiceUrl","_legacyFed","_regexSDirUrl","_regexServerType","_gwUser","_gwItem","_gwGroup","_rePortalTokenSvc","_createDefaultOAuthInfo","_hasTestedIfAppIsOnPortal","_getOAuthHash","window","addEventListener","_pageShowHandler","prototype","registerServers","filter","findServerInfo","concat","forEach","push","hasPortal","registerOAuthInfos","findOAuthInfo","portalUrl","registerToken","_sanitizeUrl","_isServerRsrc","_getServerInstanceRoot","hasServer","_getTokenSvcUrl","_findCredential","mixin","T","userId","token","ssl","scope","resources","emitTokenChange","refreshServerTokens","toJSON","fixJson","map","initialize","JSON","parse","declaredClass","length","appId","now","_hasSameServerInstance","findCredential","_getIdenticalSvcIdx","getCredential","error","prompt","createAbortController","createResolver","abort","signal","onAbort","reject","isAborted","promise","_isAdminResource","_doPortalSignIn","_getEsriAuthCookie","details","httpStatus","destroy","path","domain","endsWith","location","hostname","email","resolve","_restInfoPms","_selfReq","_findOAuthInfo","owningTenant","selfDfd","_getPortalSelf","replace","_enqueue","getResourceName","_isRESTService","generateToken","href","toLowerCase","shortLivedTokenValidity","isAdmin","serverUrl","customParameters","adminTokenServiceUrl","auth_tier","webTierAuth","scheme","hasSameOrigin","uri","port","query","request","username","password","expiration","referer","client","method","authMode","useProxy","_useProxy","responseType","ioArgs","withCredentials","then","data","validity","isBusy","checkSignInStatus","checkAppAccess","credential","force","client_id","valid","viewOnlyUserTypeApp","name","viewOnly","setRedirectionHandler","_redirectFunc","setProtocolErrorHandler","_protocolFunc","destroyCredentials","slice","emit","hash","charAt","substring","queryToObject","access_token","expires_in","state","hasOwnProperty","error_description","console","log","persisted","_errbackFunc","resource","_addResource","splice","_removeResource","_isIdProvider","_isPortalDomain","String","currentVersion","_getOrigin","indexOf","search","substr","_normalizeAGOLorgDomain","proxyUrl","normalize","urlToObject","_isIdenticalService","_getSuffix","authority","restBaseUrl","adminUrl","protocol","_hasPortalSession","navigator","cookieEnabled","_getAllCookies","portalApp","urlKey","customBaseUrl","isNaN","match","RegExp","escapeRegExpString","decodeURIComponent","_canUsePortalSignInWorkflow","top","_checkProtocol","trim","getProxyRule","resourceUrl","serverInfo","resUrl_","sinfo_","options_","admin_","refresh_","_oAuthDfd","oAuthWin_","focus","_doSignIn","creationTime","shift","baseUrl","signin","useSSL","returnUrlParamName","returnUrl","Number","_oAuthCred","localStorage","sessionStorage","isValid","oAuthState","storage","persist","save","_pendingDfd","oAuthSignIn","signIn","getDeepValue","user","allSSL","supportsOAuth","portalMode","portalToken","tokenExpiration","parseFloat","_generateOAuthInfo","popup","popupCallbackUrl","accountId","redirect_uri","makeAbsolute","clone","subclass","declared","IdentityManagerBase","tokenRefreshBuffer","refreshToken","_enqueued","clearTimeout","_refreshTimer","_startRefreshTimer","setTimeout","bind","property","EventedAccessor","substitute","b","constructor","_dialogContent","_nls","_loginDialog","dialog","_createLoginDialog","onCancel","open","hide","errMsg_","set","forbidden","show","dfd_","serverInfo_","signal_","resLink_","title","innerHTML","lblItem","serverLink_","txtPwd_","content","style","esriIdMgr_","onShow","domNode","classList","add","onHide","remove","keypressed_","charOrCode","ENTER","execute_","txtUser_","get","form_","validate","btnSubmit_","lblSigning","lblOk","_DialogLevelManager","generateDfd_","invalidUser","noAuthService","cancel_","byNode","getElementsByClassName","btnCancel_","connect","oAuthInfo","_init","minTimeUntilExpiration","_load","authNamespace","setItem","stringify","FormData","append","sendBeacon","XMLHttpRequest","send","getItem","forceLogin","locale","popupWindowFeatures","preserveUrlHash","fromJSON","json","write","JSONSupport","_oAuthIntervalId","_oAuthDialogContent","setOAuthRedirectionHandler","_oAuthRedirectFunc","closed","close","oAuthDialog","oinfo_","oAuthPopupConfirmation","_doOAuthSignIn","_createOAuthDialog","setOAuthResponseHash","clearInterval","hide_","response_type","force_login","objectToQuery","setInterval","authorizeParams","authorizeUrl","info","lblUser","lblPwd","lblCancel","errorMsg","require","dijit","config","domConstruct","domStyle","lang","on","has","userAgent","_frames","queue","pop","iframe","display","burl","toUrl","html","createElement","create","src","className","setAttribute","tabIndex","BackgroundIframe","node","Error","appendChild","resize","_conn","hitch","width","height","extend","offsetWidth","offsetHeight","parentNode","removeChild","array","aspect","declare","preserveDom","_destroyed","own","cleanupMethods","arguments","handle","destroyMethodName","odh","before","hdhs","onManualDestroy","hdh","cleanupMethod","after","Deferred","dom","domClass","domGeometry","fx","i18n","keys","ready","touch","winUtils","Moveable","TimedMoveable","manager","_Widget","_TemplatedMixin","_CssStateMixin","_FormMixin","_DialogMixin","DialogUnderlay","ContentPane","utils","template","resolvedDeferred","nop","_DialogBase","templateString","baseClass","cssStateNodes","closeButtonNode","_setTitleAttr","type","duration","defaultDuration","refocus","autofocus","_firstFocusItem","_lastFocusItem","draggable","_setDraggableAttr","val","_set","maxRatio","closable","_setClosableAttr","postMixInProperties","_nlsResources","getLocalization","inherited","postCreate","position","ownerDocumentBody","press","stopPropagation","_modalconnects","onLoad","_position","DialogLevelManager","isTop","_getFocusItems","_endDrag","nodePosition","viewport","getBox","ownerDocument","Math","min","max","x","_relativePosition","_setup","titleBar","_moveable","underlayAttrs","dialogId","split","join","_onKeyDown","_size","contains","bb","floor","left","_onKey","evt","keyCode","TAB","target","preventDefault","shiftKey","ESCAPE","_started","startup","_alreadyInitialized","_fadeOutDeferred","cancel","win","opacity","_onShow","fadeIn","_fadeInDeferred","stop","undefined","beforeBegin","onEnd","play","fadeOut","_scrollConnected","dim","_checkIfSingleChild","_shrunk","_singleChild","_singleChildOriginalStyle","cssText","containerNode","actionBarNode","setMarginBox","layoutNodes","region","centerSize","contentDim","marginBox2contentBox","layoutChildren","cb","overflow","_layoutChildren","getChildren","widget","titleNode","applyTextDir","_setTextDirAttr","textDir","_created","Dialog","_beginZIndex","ds","curNode","zIndex","pd","isDescendant","idx","elem","_dialogStack","watch","attr","oldNode","topDialog","requires","domAttr","Viewport","_modalConnects","_setDialogIdAttr","_setClassAttr","clazz","layout","is","os","bgIframe","attrs","underlay","_singleton","_underlay","mouse","place","MasterTooltip","aroundNode","rtl","onMouseEnter","onMouseLeave","status","_onDeck","align","pos","around","Tooltip","defaultPosition","aroundNodeCoords","aroundNodePos","corner","aroundCorner","connectorNode","isShowingNow","noop","orient","tooltipCorner","spaceAvailable","heightAvailable","widthAvailable","size","tooltipConnectorHeight","aroundNodePlacement","bottom","_onHide","apply","_setAutoTextDir","children","child","dir","showTooltip","_masterTT","hideTooltip","DORMANT","SHOW_TIMER","SHOWING","HIDE_TIMER","label","showDelay","hideDelay","connectId","selector","_setConnectIdAttr","newId","_connections","nested","_connectIds","isArrayLike","byId","delegatedEvent","eventType","self","enter","_onHover","leave","addTarget","removeTarget","buildRendering","ids","getContent","_setStateAttr","_hideTimer","_showTimer","_connectNode","defer","isLeftToRight","_onUnHover","_MasterTooltip","Evented","domReady","focusedNode","oldBox","_rlh","newBox","deviceXDPI","screen","getEffectiveBox","doc","box","tag","tagName","readOnly","orientation","rect","getBoundingClientRect","_WidgetBase","synthEvents","delegate","_keypress","a11yclick","_AttachMixin","_attachPoints","_attachEvents","_attachTemplateNodes","_beforeFillContent","rootNode","nodeType","_processTemplateNode","getAttribute","_attach","searchContainerNode","firstChild","nextSibling","baseNode","getAttrFunc","attachFunc","ret","_attachScope","attachScope","attachPoint","point","points","isArray","attachEvent","event","events","thisFunc","funcNameArr","func","_detachTemplateNodes","destroyRendering","dojoAttachEvent","dojoAttachPoint","bidi_const","LRM","LRE","PDF","RLM","RLE","getTextDir","text","_checkContextual","fdc","exec","element","innerText","textContent","enforceTextDirWithUcc","option","originalText","restoreOriginalText","origObj","displayNode","textDirNode","focusNode","textbox","kernel","addChild","insertIndex","refNode","hasChildren","_getSiblingOfChild","getIndexOfChild","registry","CssStateMixin","hovering","active","_applyAttributes","ap","_trackMouseState","_setStateClass","_cssMouseEvent","disabled","_mouseDown","newStateClasses","multiply","modifier","checkedState","checked","selected","_opened","focused","tn","stateNode","classHash","_stateClasses","newClasses","_subnodeCssMouseEvent","hover","isHovering","toggle","isActive","isFocused","_cssState","pointerHandler","relatedTarget","getEnclosingWidget","body","activeNode","over","out","release","a11y","actionBarTemplate","execute","onExecute","_onSubmit","elems","_getTabNavigable","lowest","first","last","highest","onFocus","onBlur","_onFocus","_onBlur","_focusManager","obj","cache","string","templatePath","_skipNodeCache","_stringRepl","tmpl","_this","key","getObject","_escapeValue","_rendered","sanitize","cached","getCachedTemplate","isString","toDom","cloneNode","_fillContent","srcNodeRef","source","dest","hasChildNodes","_templateCache","alwaysUseString","tmplts","_OnDijitClickMixin","_FocusMixin","connectToDomNode","aroundAdvice","originalConnect","onClick","onDblClick","onKeyDown","onKeyPress","onKeyUp","onMouseDown","onMouseMove","onMouseOut","onMouseOver","onMouseUp","params","_toConnect","_onMap","_setFocusedAttr","_focused","deprecated","args","getDescendants","onClose","Stateful","topic","Destroyable","_BidiMixin","isAsync","tagAttrs","getAttrs","nonEmptyAttrToDom","isEqual","_setIdAttr","_setLangAttr","_setDirAttr","_setTypeAttr","tooltip","_setOwnerDocumentAttr","attributeMap","_blankGif","blankGif","_introspect","ctor","_setterAttrs","proto","onMap","postscript","_connects","_supportingWidgets","getUniqueId","deleteSrcNodeRef","replaceChild","_get","classes","isFunction","destroyRecursive","_beingDestroyed","destroyDescendants","uninitialize","findWidgets","_setStyleAttr","mapNode","isObject","_attrToDom","commands","command","attrName","attribute","createTextNode","names","_getAttrNames","setter","result","Array","defaultNode","attrsForTag","_attrPairNames","apn","uc","toUpperCase","oldValue","_watchCallbacks","detail","prevValue","newValue","eventObj","callbackArgs","bubbles","cancelable","callback","widgetMethod","toString","getParent","disconnect","subscribe","unsubscribe","isBodyLtr","isFocusable","placeAt","reference","refWidget","ref","fcn","delay","timer","exports","_isElementShown","visibility","hasDefaultTabStop","nodeName","contentDocument","designMode","e1","contentWindow","e2","contentEditable","effectiveTabIndex","isTabNavigable","root","lowestTabindex","highestTabindex","radioSelected","radioName","shown","walkTree","parent","scopeName","tabindex","rn","rs","getFirstInTabbingOrder","getLastInTabbingOrder","clickKey","SPACE","dojoClick","lastKeyDownNode","ctrlKey","metaKey","altKey","_origType","click","listener","touchListener","isLeft","keyListener","move","lastFocusin","lastTouchOrFocusin","FocusManager","activeStack","check","prevNode","registerIframe","registerWin","targetWindow","effectiveNode","mdh","_onTouchNode","fih","_onFocusNode","foh","_onBlurNode","_clearFocusTimer","_clearActiveWidgetsTimer","_setStack","by","newStack","popupParent","frameElement","unshift","oldStack","lastOldIdx","lastNewIdx","_hasBeenBlurred","singleton","oldVal","newVal","_FormWidget","_ButtonMixin","Button","showLabel","iconClass","_setIconClassAttr","_setValueAttr","_setNameAttr","valueNode","_setLabelFromContainer","onLabelSet","_setShowLabelAttr","setLabel","_setLabelAttr","_ContentPaneResizeMixin","action","encType","accept","nameAttrSetting","_setEncTypeAttr","encoding","reset","faux","returnValue","currentTarget","onReset","_onReset","fp","getValues","onSubmit","submit","_FormValueWidget","_TextBoxMixin","TextBox","_singleNodeTemplate","_buttonInputDisabled","getComputedStyle","ff","fontFamily","inputs","getElementsByTagName","_setPlaceHolderAttr","_phspan","_updatePlaceHolder","_onInput","placeHolder","priorityChange","formattedValue","getDisplayedValue","setDisplayedValue","selectOnClick","selectionStart","selectionEnd","_isTextSelected","range","selection","createRange","parentElement","_setSelectionRange","start","createTextRange","collapse","moveStart","moveEnd","select","ValidationTextBox","required","promptMessage","invalidMessage","missingMessage","message","constraints","pattern","regExp","regExpGen","tooltipPosition","_deprecateRegExp","_setRegExpGenAttr","newFcn","_computeRegexp","_setRegExpAttr","_refreshState","validator","_isEmpty","_isValidSubset","_partialre","getErrorMessage","invalid","messages","missing","getPromptMessage","_maskValidSubsetError","isEmpty","isValidSubset","displayMessage","_setConstraintsAttr","_setPatternAttr","_lastRegExp","partialre","re","warn","_setDisabledAttr","_setRequiredAttr","_setMessageAttr","ButtonMixin","__onClick","_onClick","cancelled","defaultPrevented","form","setSelectable","labelNode","_getDescendantFormWidgets","res","didFocus","every","scrollIntoView","item","setValues","entry","widgets","values","multiple","_getValueAttr","setObject","ary","prev","onValidStateChange","_getState","states","_descendants","disconnectChildren","connectChildren","inStartup","_onChildChange","_onChangeDelayTimer","_FormWidgetMixin","_setReadOnlyAttr","_resetValue","_lastValueReported","_handleOnChange","undo","_FormValueMixin","_layoutHackIE7","pingNode","origFilter","clientHeight","ping","disconnectHandle","getMilliseconds","setDisabled","setValue","getValue","alt","_setTabIndexAttr","intermediateChanges","scrollOnFocus","attachPointNames","attachPointName","removeAttribute","focusHandle","mouseUpHandle","compare","val1","val2","onChange","_onChangeActive","_pendingOnChange","_onChangeHandle","uppercase","lowercase","propercase","maxLength","filteredValue","format","displayedValue","_getDisplayedValueAttr","_setDisplayedValueAttr","onInput","_lastInputEventValue","_processInput","_lastInputProducingEvent","handleEvent","SHIFT","ALT","CTRL","META","CAPS_LOCK","NUM_LOCK","SCROLL_LOCK","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_PLUS","NUMPAD_ENTER","NUMPAD_MINUS","NUMPAD_PERIOD","NUMPAD_DIVIDE","named","charCode","fromCharCode","_wasConsumed","DOWN_ARROW","UP_ARROW","LEFT_ARROW","RIGHT_ARROW","_blankValue","word","_setBlurValue","_selectOnClickHandle","once","selectInputText","setSelectionRange","rangeMessage","_Container","xhr","when","extractContent","parseOnLoad","parserScope","_scopeName","preventCache","preload","refreshOnShow","loadingMessage","errorMessage","isLoaded","onLoadDeferred","stopParser","markupFactory","_contentSetter","parseDeferred","isFulfilled","df","createDocumentFragment","parseResults","_startChildren","setHref","_setHrefAttr","_isShown","_hrefChanged","setContent","_setContentAttr","_setContent","_isDownloaded","_getContentAttr","_xhrDfd","fired","refresh","onDownloadStart","getArgs","url","handleAs","hand","ioMethod","returnedHtml","err","_onError","canceled","onDownloadEnd","_onLoadHandler","widgetId","_onUnloadHandler","onUnload","empty","cont","isFakeContent","preprocessContent","_ContentSetter","onContentError","errMess","setterParams","cleanContent","parseContent","_contentSetterParams","_scheduleLayout","consoleText","errText","onDownloadError","layoutUtils","doLayout","isLayoutContainer","_childOfLayoutWidget","_needLayout","candidateWidgets","otherVisibleNodes","changeSize","resultSize","_resizeCalled","_layout","_changeSize","_resultSize","_wasShown","cn","mb","getMarginBox","_contentBox","getContentBox","capitalize","newSize","cs","me","getMarginExtents","pb","getPadBorderExtents","toPixelValue","paddingLeft","paddingTop","container","changedRegionId","changedRegionSize","layoutAlign","elm","elmStyle","sizeSetting","dojo","buttonOk","buttonCancel","buttonSave","itemClose","loadingState","errorState","_place","choices","layoutNode","view","best","choice","right","oldDisplay","oldVis","startXpos","startYpos","startX","startY","endX","endY","side","reverse","at","corners","padding","anchor","positions","leftToRight","anchorBorder","getBorderExtents","anchorChildBorder","nodeBorder","nodeChildBorder","sawPosAbsolute","parentPos","pcs","bottomYCoord","rightXCoord","ltr","_widgetTypeCtr","toArray","ar","widgetType","skipNode","outAry","getChildrenHelper","_destroyAll","_curFocus","_prevFocus","_activeStack","_hash","loader","runner","__webpack_require__","dj","module","Color","_mixin","basefx","_Line","end","Animation","curve","repeat","rate","_percent","_startRepeatCount","_getStep","_p","_e","easing","_fire","debugAtAllCosts","gotoStart","_t","_delayTimer","_clearTimer","_stopTimer","_active","_paused","de","_play","_startTime","valueOf","_cycle","pause","gotoPercent","percent","andPlay","gotoEnd","_timer","curr","step","_startTimer","ctr","run","_makeFadeable","ns","_fade","fArgs","properties","props","anim","animateProperty","partial","_defaultEasing","sin","PI","PropLine","_properties","prop","tempColor","blendColors","toCss","units","pm","isColor","getStyle","_Animation","ore","ire","_Url","_a","relobj","uriobj","fragment","lastIndexOf","segs","j","stamp","fromISOString","formattedString","defaultTime","_isoRegExp","index","setFullYear","offset","zoneSign","getTimezoneOffset","toISOString","dateObject","options","formattedDate","getter","zulu","date","year","time","millis","milliseconds","timezoneOffset","absOffset","abs","dnd","Mover","touchActionPropertyName","setTouchAction","setTouchActionPropertyName","skip","mover","Ctor","isFormElement","_lastX","pageX","_lastY","pageY","onDragDetected","onSelectStart","onMoveStart","publish","onMoveStop","onFirstMove","onMove","leftTop","onMoving","onMoved","domGeom","autoscroll","marginBox","mouseButton","button","stopEvent","autoScrollStart","autoScroll","round","bs","bm","bc","oldOnMove","timeout","_leftTop","getViewport","V_TRIGGER_AUTOSCROLL","H_TRIGGER_AUTOSCROLL","V_AUTOSCROLL_VALUE","H_AUTOSCROLL_VALUE","maxScrollTop","Infinity","maxScrollLeft","scrollHeight","scrollWidth","dx","dy","clientX","scrollLeft","clientY","scrollTop","scrollBy","_validNodes","_validOverflow","autoScrollNodes","rx","ry","oldLeft","oldTop","overflowX","overflowY","getCopyKeyState","_uniqueId","_empty","cls","spaces","a1","str2array","fakeNode","containsClass","classStr","addClass","oldLen","len","removeClass","replaceClass","addClassStr","removeClassStr","toggleClass","condition","global","readyStates","fixReadyState","readyState","readyQ","recursiveGuard","processQ","load","req","_Q","_onQEmpty","stack","tests","detectReady","removeEventListener","poller","div","bkImg","backgroundImage","borderTopColor","borderRightColor","outerHTML","darray","parser","idCounter","_secureForInnerHtml","_emptyNode","_setNodeContent","startlen","onBegin","isResolved","_parse","tearDown","onExecError","noStart","results","op","dlang","dwindow","all","dates","don","myEval","eval","extendCnt","getNameMap","_nameCaseMap","_extendCnt","getCtor","types","contextRequire","ctorMap","_dojoParserCtorMap","ts","mixins","createSubclass","_clearCache","_ctorMap","_functionFromScript","script","attrData","preamble","suffix","argsStr","withStr","fnArgs","part","Function","instantiate","nodes","dojoType","dataDojoType","dataDojoMixins","list","mixinsValue","_instantiate","returnPromise","thelist","construct","scripts","onConstruct","instance","defaults","attributes","funcAttrs","jsname","extra","lcName","NaN","pVal","lcfname","propsThis","_noScript","aspects","calls","watches","ons","advice","scriptType","nf","onInstantiate","scan","mids","midsHash","dataDojoTextDir","findAncestorAttr","scriptsOnly","getEffective","grandparent","current","childScripts","instantiateChildren","_require","vars","_scanAmd","deferred","instances","parsedNodes","_instances","otherwise","defaultEngine","aps","apc","tnl","NodeListCtor","nodeList","_NodeListCtor","nl","_stash","loopBody","adaptAsForEach","adaptAsMap","adaptAsFilter","adaptWithCondition","NodeList","isNew","nodeArray","sort","nlp","_wrap","_adaptAsMap","_adaptAsForEach","_adaptAsFilter","_adaptWithCondition","_parent","eventName","handles","thisObj","items","_filterResult","queryForEngine","engine","matches","parentRequire","loaded","_filterQueryResult","isDomReady","loadQ","onLoadRecursiveGuard","handleDomReady","_postLoad","afterOnLoad","onEvent","idle","addOnLoad","priority","context","hitchArgs","_toArray","dca","testDiv","querySelectorAll","fullEngine","acme","lite","isBuild","optionalLoad","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","unionSplit","liteEngine","combine","isInsideDomTree","found","getElementById","useRoot","jsMatchesSelector","oldContext","old","nid","hasParent","relativeHierarchySelector","selectors","ESCAPE_REGEXP","ESCAPE_MAP","escape","str","rep","num","buf","pad","ch","ceil","transform","thisObject","getText","sync","headers","theCache","strip","notFound","pending","dynamic","toAbsMid","parts","stripFlag","absMid","requireCacheUrl","finish","pendingList","async","ios4","hasPointer","pointer","down","up","hasTouch","clicksInited","clickTracker","useTarget","clickTarget","clickX","clickY","clickDx","clickDy","clickTime","lastTouch","dualEvent","mouseType","touchType","pointerType","handle1","handle2","marked","doClicks","moveType","endType","isRight","markedNode","changedTouches","pageXOffset","pageYOffset","updateClickTracker","elementFromPoint","stopNativeEvents","_dojo_click","stopImmediatePropagation","createMouseEvent","createEvent","initMouseEvent","screenX","screenY","mouseDownEvt","mouseUpEvt","clickEvt","hoveredNode","copyEventProps","touches","targetTouches","newNode","_eventHandler","geometry","baseWindow","documentElement","ie","trident","opera","maj","boxModel","clz","rtlClassStr","geom","scrollable","direction","outer","inner","scrollRoot","compatMode","scroll","docScroll","uiWindow","innerWidth","clientWidth","innerHeight","parentWindow","execScript","_parentWindow","defaultView","isIE","isWK","backCompat","rootWidth","rootHeight","nodePos","el","isFixed","scrollElementBy","elPos","fixedPos","clientSize","scrollBarSize","bot"],"mappings":"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AW;AAAe2S,SAAC,KAAKA,CAAlE;AACA;;AAED,UAAIoZ,WAAW,GAAG3Q,OAAO,CAAC,mBAAD,EAAsB,CAACwb,QAAD,EAAWE,WAAX,CAAtB,EAA+C;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA12B,UAAE,EAAE,EArDmE;AAsDvEi3B,kBAAU,EAAE,SAtD2D;AAsDhD;AAEvB;AACA;AACA;AACA;AACA;AACAne,YAAI,EAAE,EA7DiE;AA8DvE;AACAoe,oBAAY,EAAEH,iBAAiB,CAAC,MAAD,CA/DwC;AAiEvE;AACA;AACA;AACA;AACA5O,WAAG,EAAE,EArEkE;AAsEvE;AACAgP,mBAAW,EAAEJ,iBAAiB,CAAC,KAAD,CAvEyC;AAuEhC;AAEvC;AACA;AACA,iBAAS,EA3E8D;AA4EvEzR,qBAAa,EAAE;AAAErL,cAAI,EAAE,SAAR;AAAmB4D,cAAI,EAAE;AAAzB,SA5EwD;AA8EvE;AACA;AACAuZ,oBAAY,EAAE,IAhFyD;AAkFvE;AACA;AACArjB,aAAK,EAAE,EApFgE;AAsFvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAN,aAAK,EAAE,EA/FgE;AAiGvE;AACA;AACA;AACA4jB,eAAO,EAAE,EApG8D;AAsGvE;AACA;AACA;AACA5Z,iBAAS,EAAE,EAzG4D;AA2GvE;AACA;AACAgX,kBAAU,EAAE,IA7G2D;AA+GvE;AACA;AACA;AACA;AACA;AACAvgB,eAAO,EAAE,IApH8D;AAsHvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA8O,qBAAa,EAAE,IA7IwD;AA+IvE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","file":"53-es5.js","sourcesContent":["// COPYRIGHT © 2019 Esri\n//\n// All rights reserved under the copyright laws of the United States\n// and applicable international laws, treaties, and conventions.\n//\n// This material is licensed for use under the Esri Master License\n// Agreement (MLA), and is bound by the terms of that agreement.\n// You may redistribute and use this code without modification,\n// provided you adhere to the terms of the MLA and include this\n// copyright notice.\n//\n// See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english\n//\n// For additional information, contact:\n// Environmental Systems Research Institute, Inc.\n// Attn: Contracts and Legal Services Department\n// 380 New York Street\n// Redlands, California, USA 92373\n// USA\n//\n// email: contracts@esri.com\n//\n// See http://js.arcgis.com/4.14/esri/copyright.txt for details.\n\ndefine([\"require\",\"exports\"],function(e,i){function o(e,i,o){void 0===o&&(o={});var r=o.expires;if(\"number\"==typeof r){var t=new Date;t.setTime(t.getTime()+24*r*60*60*1e3),r=o.expires=t}\"string\"!=typeof r&&(o.expires=r.toUTCString());var n=e+\"=\"+encodeURIComponent(i);for(var f in o){n+=\"; \"+f;var p=o[f];!0!==p&&(n+=\"=\"+p)}document.cookie=n}Object.defineProperty(i,\"__esModule\",{value:!0}),i.writeCookie=o});","// COPYRIGHT © 2019 Esri\n//\n// All rights reserved under the copyright laws of the United States\n// and applicable international laws, treaties, and conventions.\n//\n// This material is licensed for use under the Esri Master License\n// Agreement (MLA), and is bound by the terms of that agreement.\n// You may redistribute and use this code without modification,\n// provided you adhere to the terms of the MLA and include this\n// copyright notice.\n//\n// See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english\n//\n// For additional information, contact:\n// Environmental Systems Research Institute, Inc.\n// Attn: Contracts and Legal Services Department\n// 380 New York Street\n// Redlands, California, USA 92373\n// USA\n//\n// email: contracts@esri.com\n//\n// See http://js.arcgis.com/4.14/esri/copyright.txt for details.\n\ndefine([\"require\",\"exports\",\"./IdentityManagerBase\"],function(e,n,r){return r.Credential});","// COPYRIGHT © 2019 Esri\n//\n// All rights reserved under the copyright laws of the United States\n// and applicable international laws, treaties, and conventions.\n//\n// This material is licensed for use under the Esri Master License\n// Agreement (MLA), and is bound by the terms of that agreement.\n// You may redistribute and use this code without modification,\n// provided you adhere to the terms of the MLA and include this\n// copyright notice.\n//\n// See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english\n//\n// For additional information, contact:\n// Environmental Systems Research Institute, Inc.\n// Attn: Contracts and Legal Services Department\n// 380 New York Street\n// Redlands, California, USA 92373\n// USA\n//\n// email: contracts@esri.com\n//\n// See http://js.arcgis.com/4.14/esri/copyright.txt for details.\n\ndefine([\"require\",\"exports\",\"../kernel\",\"../core/declare\",\"./IdentityManagerDialog\",\"./OAuthSignInHandler\"],function(e,n,r,i,a,t){var d=new a,l=i.safeMixin(d,t);return r.id=l,l});","// COPYRIGHT © 2019 Esri\n//\n// All rights reserved under the copyright laws of the United States\n// and applicable international laws, treaties, and conventions.\n//\n// This material is licensed for use under the Esri Master License\n// Agreement (MLA), and is bound by the terms of that agreement.\n// You may redistribute and use this code without modification,\n// provided you adhere to the terms of the MLA and include this\n// copyright notice.\n//\n// See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english\n//\n// For additional information, contact:\n// Environmental Systems Research Institute, Inc.\n// Attn: Contracts and Legal Services Department\n// 380 New York Street\n// Redlands, California, USA 92373\n// USA\n//\n// email: contracts@esri.com\n//\n// See http://js.arcgis.com/4.14/esri/copyright.txt for details.\n\ndefine([\"require\",\"exports\",\"../core/tsSupport/assignHelper\",\"../core/tsSupport/declareExtendsHelper\",\"../core/tsSupport/decorateHelper\",\"../config\",\"../kernel\",\"../request\",\"../core/cookie\",\"../core/Error\",\"../core/Evented\",\"../core/global\",\"../core/lang\",\"../core/object\",\"../core/promiseUtils\",\"../core/string\",\"../core/urlUtils\",\"../core/urlUtils\",\"../core/accessorSupport/decorators\",\"./OAuthCredential\",\"./OAuthInfo\",\"./ServerInfo\"],function(e,r,t,i,s,n,o,a,l,h,u,c,p,d,f,v,_,g,m,S,y,w){Object.defineProperty(r,\"__esModule\",{value:!0});var I={},k=function(e){var r=new g.Url(e.owningSystemUrl).host,t=new g.Url(e.server).host,i=/.+\\.arcgis\\.com$/i;return i.test(r)&&i.test(t)},U=function(e,r){return!!(k(e)&&r&&r.some(function(r){return r.test(e.server)}))},A=function(e){function r(){var r=e.call(this)||this;return r._portalConfig=c.esriGeowConfig,r.serverInfos=[],r.oAuthInfos=[],r.credentials=[],r._soReqs=[],r._xoReqs=[],r._portals=[],r.defaultOAuthInfo=null,r.defaultTokenValidity=60,r.tokenValidity=null,r.signInPage=null,r.useSignInPage=!0,r.normalizeWebTierAuth=!1,r._busy=null,r._rejectOnPersistedPageShow=!1,r._oAuthHash=null,r._gwTokenUrl=\"/sharing/rest/generateToken\",r._agsRest=\"/rest/services\",r._agsPortal=/\\/sharing(\\/|$)/i,r._agsAdmin=/(https?:\\/\\/[^\\/]+\\/[^\\/]+)\\/admin\\/?(\\/.*)?$/i,r._adminSvcs=/\\/rest\\/admin\\/services(\\/|$)/i,r._agolSuffix=\".arcgis.com\",r._gwDomains=[{regex:/^https?:\\/\\/www\\.arcgis\\.com/i,tokenServiceUrl:\"https://www.arcgis.com/sharing/rest/generateToken\"},{regex:/^https?:\\/\\/dev\\.arcgis\\.com/i,tokenServiceUrl:\"https://dev.arcgis.com/sharing/rest/generateToken\"},{regex:/^https?:\\/\\/[\\w\\.]*dev[^.]*\\.arcgis\\.com/i,tokenServiceUrl:\"https://devext.arcgis.com/sharing/rest/generateToken\"},{regex:/^https?:\\/\\/[\\w\\.]*qa[^.]*\\.arcgis\\.com/i,tokenServiceUrl:\"https://qaext.arcgis.com/sharing/rest/generateToken\"},{regex:/^https?:\\/\\/[\\w\\.]*\\.arcgis\\.com/i,tokenServiceUrl:\"https://www.arcgis.com/sharing/rest/generateToken\"}],r._legacyFed=[],r._regexSDirUrl=/http.+\\/rest\\/services\\/?/gi,r._regexServerType=/(\\/(MapServer|GeocodeServer|GPServer|GeometryServer|ImageServer|NAServer|FeatureServer|GeoDataServer|GlobeServer|MobileServer|GeoenrichmentServer|VectorTileServer|SceneServer)).*/gi,r._gwUser=/http.+\\/users\\/([^\\/]+)\\/?.*/i,r._gwItem=/http.+\\/items\\/([^\\/]+)\\/?.*/i,r._gwGroup=/http.+\\/groups\\/([^\\/]+)\\/?.*/i,r._rePortalTokenSvc=/\\/sharing(\\/rest)?\\/generatetoken/i,r._createDefaultOAuthInfo=!0,r._hasTestedIfAppIsOnPortal=!1,r._getOAuthHash(),window.addEventListener(\"pageshow\",function(e){r._pageShowHandler(e)}),r}return i(r,e),r.prototype.registerServers=function(e){var r=this,t=this.serverInfos;t?(e=e.filter(function(e){return!r.findServerInfo(e.server)}),this.serverInfos=t.concat(e)):this.serverInfos=e,e.forEach(function(e){e.owningSystemUrl&&r._portals.push(e.owningSystemUrl),e.hasPortal&&r._portals.push(e.server)})},r.prototype.registerOAuthInfos=function(e){var r=this,t=this.oAuthInfos;t?(e=e.filter(function(e){return!r.findOAuthInfo(e.portalUrl)}),this.oAuthInfos=t.concat(e)):this.oAuthInfos=e},r.prototype.registerToken=function(e){e=t({},e);var r,i=this._sanitizeUrl(e.server),s=this._isServerRsrc(i),n=this.findServerInfo(i),o=!0;n||(n=new w,n.server=this._getServerInstanceRoot(i),s?n.hasServer=!0:(n.tokenServiceUrl=this._getTokenSvcUrl(i),n.hasPortal=!0),this.registerServers([n])),r=this._findCredential(i),r?(delete e.server,p.mixin(r,e),o=!1):(r=new T({userId:e.userId,server:n.server,token:e.token,expires:e.expires,ssl:e.ssl,scope:s?\"server\":\"portal\"}),r.resources=[i],this.credentials.push(r)),r.emitTokenChange(!1),o||r.refreshServerTokens()},r.prototype.toJSON=function(){return p.fixJson({serverInfos:this.serverInfos.map(function(e){return e.toJSON()}),oAuthInfos:this.oAuthInfos.map(function(e){return e.toJSON()}),credentials:this.credentials.map(function(e){return e.toJSON()})})},r.prototype.initialize=function(e){var r=this;if(e){\"string\"==typeof e&&(e=JSON.parse(e));var t=e.serverInfos,i=e.oAuthInfos,s=e.credentials;if(t){var n=[];t.forEach(function(e){e.server&&e.tokenServiceUrl&&n.push(e.declaredClass?e:new w(e))}),n.length&&this.registerServers(n)}if(i){var o=[];i.forEach(function(e){e.appId&&o.push(e.declaredClass?e:new y(e))}),o.length&&this.registerOAuthInfos(o)}s&&s.forEach(function(e){e.server&&e.token&&e.expires&&e.expires>Date.now()&&(e=e.declaredClass?e:new T(e),e.emitTokenChange(),r.credentials.push(e))})}},r.prototype.findServerInfo=function(e){var r;e=this._sanitizeUrl(e);for(var t=0,i=this.serverInfos;t<i.length;t++){var s=i[t];if(this._hasSameServerInstance(s.server,e)){r=s;break}}return r},r.prototype.findOAuthInfo=function(e){var r;e=this._sanitizeUrl(e);for(var t=0,i=this.oAuthInfos;t<i.length;t++){var s=i[t];if(this._hasSameServerInstance(s.portalUrl,e)){r=s;break}}return r},r.prototype.findCredential=function(e,r){var t,i;if(e=this._sanitizeUrl(e),i=this._isServerRsrc(e)?\"server\":\"portal\",r)for(var s=0,n=this.credentials;s<n.length;s++){var o=n[s];if(this._hasSameServerInstance(o.server,e)&&r===o.userId&&o.scope===i){t=o;break}}else for(var a=0,l=this.credentials;a<l.length;a++){var o=l[a];if(this._hasSameServerInstance(o.server,e)&&-1!==this._getIdenticalSvcIdx(e,o)&&o.scope===i){t=o;break}}return t},r.prototype.getCredential=function(e,r){var i,s,n=!0;r&&(i=!!r.token,s=r.error,n=!1!==r.prompt),r=t({},r),e=this._sanitizeUrl(e);var o=f.createAbortController(),a=f.createResolver(function(){o.abort()});if(r&&r.signal&&f.onAbort(r.signal,function(){o.abort()}),f.onAbort(o,function(){a.reject(new h(\"identity-manager:user-aborted\",\"ABORTED\"))}),f.isAborted(o))return a.promise;r.signal=o.signal;var u,c=this._isAdminResource(e),p=i&&this._doPortalSignIn(e)?this._getEsriAuthCookie():null,d=i?this.findCredential(e):null;if(d&&s&&s.details&&498===s.details.httpStatus)d.destroy(),p&&p.token===r.token&&(l.writeCookie(\"esri_auth\",null,{expires:-1,path:\"/\",domain:document.domain}),v.endsWith(window.location.hostname,\".arcgis.com\")&&l.writeCookie(\"esri_auth\",null,{expires:-1,path:\"/\",domain:\"arcgis.com\"}));else if(p||d){var _=p&&p.email||d&&d.userId;return u=new h(\"identity-manager:not-authorized\",\"You are currently signed in as: '\"+_+\"'. You do not have access to this resource: \"+e,{error:s}),a.reject(u),a.promise}var g=this._findCredential(e,r);if(g)return a.resolve(g),a.promise;var m=this.findServerInfo(e);if(m)!m.hasServer&&this._isServerRsrc(e)&&(m._restInfoPms=this._getTokenSvcUrl(e),m.hasServer=!0);else{var S=this._getTokenSvcUrl(e);if(!S)return u=new h(\"identity-manager:unknown-resource\",\"Unknown resource - could not find token service endpoint.\"),a.reject(u),a.promise;m=new w,m.server=this._getServerInstanceRoot(e),\"string\"==typeof S?(m.tokenServiceUrl=S,m.hasPortal=!0):(m._restInfoPms=S,m.hasServer=!0),this.registerServers([m])}return n&&m.hasPortal&&void 0===m._selfReq&&!this._findOAuthInfo(e)&&(m._selfReq={owningTenant:r&&r.owningTenant,selfDfd:this._getPortalSelf(m.tokenServiceUrl.replace(this._rePortalTokenSvc,\"/sharing/rest/portals/self\"),e)}),this._enqueue(e,m,r,a,c)},r.prototype.getResourceName=function(e){return this._isRESTService(e)?e.replace(this._regexSDirUrl,\"\").replace(this._regexServerType,\"\")||\"\":this._gwUser.test(e)&&e.replace(this._gwUser,\"$1\")||this._gwItem.test(e)&&e.replace(this._gwItem,\"$1\")||this._gwGroup.test(e)&&e.replace(this._gwGroup,\"$1\")||\"\"},r.prototype.generateToken=function(e,r,t){var i,s,n,l,u,c,d,f,v,m,S=this._rePortalTokenSvc.test(e.tokenServiceUrl),y=new g.Url(window.location.href.toLowerCase()),w=this._getEsriAuthCookie(),k=e.shortLivedTokenValidity;return r&&(m=o.id.tokenValidity||k||o.id.defaultTokenValidity)>k&&k>0&&(m=k),t&&(s=t.isAdmin,n=t.serverUrl,l=t.token,d=t.signal,f=t.ssl,e.customParameters=t.customParameters),s?u=e.adminTokenServiceUrl:(u=e.tokenServiceUrl,c=new g.Url(u.toLowerCase()),w&&(i=w.auth_tier,i=i&&i.toLowerCase()),(\"web\"===i||e.webTierAuth)&&t&&t.serverUrl&&!f&&\"http\"===y.scheme&&(_.hasSameOrigin(y.uri,u,!0)||\"https\"===c.scheme&&y.host===c.host&&\"7080\"===y.port&&\"7443\"===c.port)&&(u=u.replace(/^https:/i,\"http:\").replace(/:7443/i,\":7080\"))),v=p.mixin({query:p.mixin({request:\"getToken\",username:r&&r.username,password:r&&r.password,serverUrl:n,token:l,expiration:m,referer:s||S?window.location.host:null,client:s?\"referer\":null,f:\"json\"},e.customParameters),method:\"post\",authMode:\"anonymous\",useProxy:this._useProxy(e,t),responseType:\"json\",signal:d},t&&t.ioArgs),S||(v.withCredentials=!1),a(u,v).then(function(t){var i=t.data;if(!i||!i.token)return new h(\"identity-manager:authentication-failed\",\"Unable to generate token\");var s=e.server;return I[s]||(I[s]={}),r&&(I[s][r.username]=r.password),i.validity=m,i})},r.prototype.isBusy=function(){return!!this._busy},r.prototype.checkSignInStatus=function(e){return this.checkAppAccess(e,\"\").then(function(e){return e.credential})},r.prototype.checkAppAccess=function(e,r,t){var i=this,s=!1;return this.getCredential(e,{prompt:!1}).then(function(n){var o,l={f:\"json\"};if(\"portal\"===n.scope)if(r&&(i._doPortalSignIn(e,!0)||t&&t.force))o=n.server+\"/sharing/rest/oauth2/validateAppAccess\",l.client_id=r;else{if(!n.token)return{credential:n};o=n.server+\"/sharing/rest\"}else{if(!n.token)return{credential:n};o=n.server+\"/rest/services\"}return n.token&&(l.token=n.token),a(o,{query:l,authMode:\"anonymous\"}).then(function(e){if(!1===e.data.valid)throw new h(\"identity-manager:not-authorized\",\"You are currently signed in as: '\"+n.userId+\"'.\");return s=!!e.data.viewOnlyUserTypeApp,{credential:n}}).catch(function(e){if(\"identity-manager:not-authorized\"===e.name)throw e;var r=e.details&&e.details.httpStatus;if(498===r)throw n.destroy(),new h(\"identity-manager:not-authenticated\",\"User is not signed in.\");if(400===r)throw new h(\"identity-manager:invalid-request\");return{credential:n}})}).then(function(e){return{credential:e.credential,viewOnly:s}})},r.prototype.setRedirectionHandler=function(e){this._redirectFunc=e},r.prototype.setProtocolErrorHandler=function(e){this._protocolFunc=e},r.prototype.destroyCredentials=function(){if(this.credentials){this.credentials.slice().forEach(function(e){e.destroy()})}this.emit(\"credentials-destroy\")},r.prototype._getOAuthHash=function(){var e=window.location.hash;if(e){\"#\"===e.charAt(0)&&(e=e.substring(1));var r=_.queryToObject(e),t=!1;r.access_token&&r.expires_in&&r.state&&r.hasOwnProperty(\"username\")?(r.state=JSON.parse(r.state),this._oAuthHash=r,t=!0):r.error&&r.error_description&&(console.log(\"IdentityManager OAuth Error: \",r.error,\" - \",r.error_description),\"access_denied\"===r.error&&(t=!0)),t&&(window.location.hash=\"object\"==typeof r.state&&r.state.hash||\"\")}},r.prototype._pageShowHandler=function(e){if(e.persisted&&this.isBusy()&&this._rejectOnPersistedPageShow){var r=new h(\"identity-manager:user-aborted\",\"ABORTED\");this._errbackFunc(r)}},r.prototype._findCredential=function(e,r){var t,i,s,n,o=this,a=-1,l=r&&r.token,h=r&&r.resource,u=this._isServerRsrc(e)?\"server\":\"portal\",c=this.credentials.filter(function(r){return o._hasSameServerInstance(r.server,e)&&r.scope===u});if(e=h||e,c.length)if(1===c.length){if(t=c[0],n=this.findServerInfo(t.server),i=n&&n.owningSystemUrl,s=i&&this.findCredential(i,t.userId),a=this._getIdenticalSvcIdx(e,t),!l)return-1===a&&t.resources.push(e),this._addResource(e,s),t;-1!==a&&(t.resources.splice(a,1),this._removeResource(e,s))}else{var p,d;if(c.some(function(r){return-1!==(d=o._getIdenticalSvcIdx(e,r))&&(p=r,n=o.findServerInfo(p.server),i=n&&n.owningSystemUrl,s=i&&o.findCredential(i,p.userId),a=d,!0)}),l)p&&(p.resources.splice(a,1),this._removeResource(e,s));else if(p)return this._addResource(e,s),p}},r.prototype._findOAuthInfo=function(e){var r=this.findOAuthInfo(e);if(!r)for(var t=0,i=this.oAuthInfos;t<i.length;t++){var s=i[t];if(this._isIdProvider(s.portalUrl,e)){r=s;break}}return r},r.prototype._addResource=function(e,r){r&&-1===this._getIdenticalSvcIdx(e,r)&&r.resources.push(e)},r.prototype._removeResource=function(e,r){var t=-1;r&&(t=this._getIdenticalSvcIdx(e,r))>-1&&r.resources.splice(t,1)},r.prototype._useProxy=function(e,r){return r&&r.isAdmin&&!_.hasSameOrigin(e.adminTokenServiceUrl,window.location.href)||!this._isPortalDomain(e.tokenServiceUrl)&&\"10.1\"===String(e.currentVersion)&&!_.hasSameOrigin(e.tokenServiceUrl,window.location.href)},r.prototype._getOrigin=function(e){var r=new g.Url(e);return r.scheme+\"://\"+r.host+(null!=r.port?\":\"+r.port:\"\")},r.prototype._getServerInstanceRoot=function(e){var r=e.toLowerCase(),t=r.indexOf(this._agsRest);return-1===t&&this._isAdminResource(e)&&(t=this._agsAdmin.test(e)?e.replace(this._agsAdmin,\"$1\").length:e.search(this._adminSvcs)),-1===t&&(t=r.indexOf(\"/sharing\")),-1===t&&\"/\"===r.substr(-1)&&(t=r.length-1),t>-1?e.substring(0,t):e},r.prototype._hasSameServerInstance=function(e,r){return\"/\"===e.substr(-1)&&(e=e.slice(0,-1)),e=e.toLowerCase(),r=this._getServerInstanceRoot(r).toLowerCase(),e=this._normalizeAGOLorgDomain(e),r=this._normalizeAGOLorgDomain(r),e=e.substr(e.indexOf(\":\")),r=r.substr(r.indexOf(\":\")),e===r},r.prototype._normalizeAGOLorgDomain=function(e){var r=/^https?:\\/\\/.+\\.maps\\.arcgis\\.com/i,t=/^https?:\\/\\/.+\\.mapsdevext\\.arcgis\\.com/i,i=/^https?:\\/\\/.+\\.mapsqa\\.arcgis\\.com/i;return r.test(e)?e=e.replace(r,\"https://www.arcgis.com\"):t.test(e)?e=e.replace(t,\"https://devext.arcgis.com\"):i.test(e)&&(e=e.replace(i,\"https://qaext.arcgis.com\")),e},r.prototype._sanitizeUrl=function(e){var r=(n.request.proxyUrl||\"\").toLowerCase(),t=r?e.toLowerCase().indexOf(r+\"?\"):-1;return-1!==t&&(e=e.substring(t+r.length+1)),e=_.normalize(e),_.urlToObject(e).path},r.prototype._isRESTService=function(e){return e.indexOf(this._agsRest)>-1},r.prototype._isAdminResource=function(e){return this._agsAdmin.test(e)||this._adminSvcs.test(e)},r.prototype._isServerRsrc=function(e){return this._isRESTService(e)||this._isAdminResource(e)},r.prototype._isIdenticalService=function(e,r){var t;if(this._isRESTService(e)&&this._isRESTService(r)){var i=this._getSuffix(e).toLowerCase(),s=this._getSuffix(r).toLowerCase();if(!(t=i===s)){var n=/(.*)\\/(MapServer|FeatureServer).*/gi;t=i.replace(n,\"$1\")===s.replace(n,\"$1\")}}else this._isAdminResource(e)&&this._isAdminResource(r)?t=!0:this._isServerRsrc(e)||this._isServerRsrc(r)||!this._isPortalDomain(e)||(t=!0);return t},r.prototype._isPortalDomain=function(e){var r=this,t=new g.Url(e.toLowerCase()),i=this._portalConfig,s=t.authority&&-1!==t.authority.indexOf(this._agolSuffix);return!s&&i&&(s=this._hasSameServerInstance(this._getServerInstanceRoot(i.restBaseUrl),t.uri)),s||n.portalUrl&&(s=_.hasSameOrigin(e,n.portalUrl,!0)),s||(s=this._portals.some(function(e){return r._hasSameServerInstance(e,t.uri)})),s=s||this._agsPortal.test(t.path)},r.prototype._isIdProvider=function(e,r){var t=-1,i=-1;this._gwDomains.forEach(function(s,n){-1===t&&s.regex.test(e)&&(t=n),-1===i&&s.regex.test(r)&&(i=n)});var s=!1;if(t>-1&&i>-1&&(0===t||4===t?0!==i&&4!==i||(s=!0):1===t?1!==i&&2!==i||(s=!0):2===t?2===i&&(s=!0):3===t&&3===i&&(s=!0)),!s){var n=this.findServerInfo(r),o=n&&n.owningSystemUrl;o&&k(n)&&this._isPortalDomain(o)&&this._isIdProvider(e,o)&&(s=!0)}return s},r.prototype._getIdenticalSvcIdx=function(e,r){for(var t=-1,i=0;i<r.resources.length;i++){var s=r.resources[i];if(this._isIdenticalService(e,s)){t=i;break}}return t},r.prototype._getSuffix=function(e){return e.replace(this._regexSDirUrl,\"\").replace(this._regexServerType,\"$1\")},r.prototype._getTokenSvcUrl=function(e){var r,t,i,s=this;if(this._isRESTService(e)||this._isAdminResource(e)){var n=this._getServerInstanceRoot(e);return r=n+\"/admin/generateToken\",e=n+\"/rest/info\",t=a(e,{query:{f:\"json\"},responseType:\"json\"}).then(function(e){return e.data}),{adminUrl:r,promise:t}}if(this._isPortalDomain(e)){var o=\"\";if(this._gwDomains.some(function(r){return r.regex.test(e)&&(o=r.tokenServiceUrl),!!o}),o||this._portals.some(function(r){return s._hasSameServerInstance(r,e)&&(o=r+s._gwTokenUrl),!!o}),o||-1!==(i=e.toLowerCase().indexOf(\"/sharing\"))&&(o=e.substring(0,i)+this._gwTokenUrl),o||(o=this._getOrigin(e)+this._gwTokenUrl),o){var l=new g.Url(e).port;/^http:\\/\\//i.test(e)&&\"7080\"===l&&(o=o.replace(/:7080/i,\":7443\")),o=o.replace(/http:/i,\"https:\")}return o}if(-1!==e.toLowerCase().indexOf(\"premium.arcgisonline.com\"))return\"https://premium.arcgisonline.com/server/tokens\"},r.prototype._getPortalSelf=function(e,r){return\"https:\"===window.location.protocol?e=e.replace(/^http:/i,\"https:\").replace(/:7080/i,\":7443\"):/^http:/i.test(r)&&(e=e.replace(/^https:/i,\"http:\").replace(/:7443/i,\":7080\")),a(e,{query:{f:\"json\"},authMode:\"anonymous\",responseType:\"json\",withCredentials:!0}).then(function(e){return e.data})},r.prototype._hasPortalSession=function(){return!!this._getEsriAuthCookie()},r.prototype._getEsriAuthCookie=function(){var e=null;if(navigator.cookieEnabled){for(var r=this._getAllCookies(\"esri_auth\"),t=void 0,i=0;i<r.length;i++){var s=JSON.parse(r[i]);if(s.portalApp){e=s;break}t?t.push(s):t=[s]}if(!e&&t)for(var n=0,o=t;n<o.length;n++){var s=o[n];if(window.location.hostname===s.urlKey+\".\"+s.customBaseUrl){e=s;break}}}if(e){var a=null;e.expires&&(\"number\"==typeof e.expires?a=e.expires:\"string\"==typeof e.expires&&(a=Date.parse(e.expires)),isNaN(a)&&(a=null),e.expires=a),a&&a<Date.now()&&(e=null)}return e},r.prototype._getAllCookies=function(e){var r=[],t=document.cookie,i=t.match(new RegExp(\"(?:^|; )\"+v.escapeRegExpString(e)+\"=([^;]*)\",\"g\"));if(i)for(var s=0;s<i.length;s++){var n=i[s],o=n.indexOf(\"=\");o>-1&&(n=n.substring(o+1),r.push(decodeURIComponent(n)))}return r},r.prototype._doPortalSignIn=function(e,r){if(navigator.cookieEnabled){var t=this._getEsriAuthCookie(),i=this._portalConfig,s=window.location.href,n=this.findServerInfo(e);if((r||this.useSignInPage)&&(i||this._isPortalDomain(s)||t)&&(n?n.hasPortal||n.owningSystemUrl&&this._isPortalDomain(n.owningSystemUrl):this._isPortalDomain(e))&&(this._isIdProvider(s,e)||i&&(this._hasSameServerInstance(this._getServerInstanceRoot(i.restBaseUrl),e)||this._isIdProvider(i.restBaseUrl,e))||_.hasSameOrigin(s,e,!0)))return!0}return!1},r.prototype._canUsePortalSignInWorkflow=function(e){return this._doPortalSignIn(e)&&(window===window.top||this._hasPortalSession())},r.prototype._checkProtocol=function(e,r,t,i){var s=!0,n=i?r.adminTokenServiceUrl:r.tokenServiceUrl;if(0===n.trim().toLowerCase().indexOf(\"https:\")&&0!==window.location.href.toLowerCase().indexOf(\"https:\")&&_.getProxyRule(n)&&!(s=!!this._protocolFunc&&!!this._protocolFunc({resourceUrl:e,serverInfo:r}))){t(new h(\"identity-manager:aborted\",\"Aborted the Sign-In process to avoid sending password over insecure connection.\"))}return s},r.prototype._enqueue=function(e,r,t,i,s,n){return i||(i=f.createResolver()),i.resUrl_=e,i.sinfo_=r,i.options_=t,i.admin_=s,i.refresh_=n,this._busy?this._hasSameServerInstance(this._getServerInstanceRoot(e),this._busy.resUrl_)?(this._oAuthDfd&&this._oAuthDfd.oAuthWin_&&this._oAuthDfd.oAuthWin_.focus(),this._soReqs.push(i)):this._xoReqs.push(i):this._doSignIn(i),i.promise},r.prototype._doSignIn=function(e){var r=this;this._busy=e,this._rejectOnPersistedPageShow=!1;var t=function(t){var i=e.options_&&e.options_.resource,s=e.resUrl_,n=e.refresh_,o=!1;-1===r.credentials.indexOf(t)&&(n&&-1!==r.credentials.indexOf(n)?(n.userId=t.userId,n.token=t.token,n.expires=t.expires,n.validity=t.validity,n.ssl=t.ssl,n.creationTime=t.creationTime,o=!0,t=n):r.credentials.push(t)),t.resources||(t.resources=[]),t.resources.push(i||s),t.scope=r._isServerRsrc(s)?\"server\":\"portal\",t.emitTokenChange();var a=r._soReqs,l={};r._soReqs=[],a.forEach(function(e){if(!r._isIdenticalService(s,e.resUrl_)){var i=r._getSuffix(e.resUrl_);l[i]||(l[i]=!0,t.resources.push(e.resUrl_))}}),e.resolve(t),a.forEach(function(e){r._hasSameServerInstance(r._getServerInstanceRoot(s),e.resUrl_)?e.resolve(t):r._soReqs.push(e)}),r._busy=e.resUrl_=e.sinfo_=e.refresh_=null,o||r.emit(\"credential-create\",{credential:t}),r._soReqs.length?r._doSignIn(r._soReqs.shift()):r._xoReqs.length&&r._doSignIn(r._xoReqs.shift())},i=function(t){e.reject(t),r._busy=e.resUrl_=e.sinfo_=e.refresh_=null,r._soReqs.length?r._doSignIn(r._soReqs.shift()):r._xoReqs.length&&r._doSignIn(r._xoReqs.shift())},s=function(s,n,o,a){var l,u,c=e.sinfo_,p=!e.options_||!1!==e.options_.prompt,d=c.hasPortal&&r._findOAuthInfo(e.resUrl_);if(r._canUsePortalSignInWorkflow(e.resUrl_)){var f=r._getEsriAuthCookie(),v=r._portalConfig;if(f){if(!c.webTierAuth){\"web\"===(f.auth_tier&&f.auth_tier.toLowerCase())&&(c.webTierAuth=!0)}return void t(new T({userId:f.email,server:c.server,token:c.webTierAuth?null:f.token,expires:f.expires}))}if(p){var _=\"\",g=window.location.href;return _=r.signInPage?r.signInPage:v?v.baseUrl+v.signin:r._isIdProvider(g,e.resUrl_)?r._getOrigin(g)+\"/home/signin.html\":c.tokenServiceUrl.replace(r._rePortalTokenSvc,\"\")+\"/home/signin.html\",_=_.replace(/http:/i,\"https:\"),v&&!1===v.useSSL&&(_=_.replace(/https:/i,\"http:\")),void(0===g.toLowerCase().replace(\"https\",\"http\").indexOf(_.toLowerCase().replace(\"https\",\"http\"))?(u=new h(\"identity-manager:unexpected-error\",\"Cannot redirect to Sign-In page from within Sign-In page. URL of the resource that triggered this workflow: \"+e.resUrl_),i(u)):(r._rejectOnPersistedPageShow=!0,r._redirectFunc?r._redirectFunc({signInPage:_,returnUrlParamName:\"returnUrl\",returnUrl:g,resourceUrl:e.resUrl_,serverInfo:c}):window.location.href=_+\"?returnUrl=\"+encodeURIComponent(g)))}u=new h(\"identity-manager:not-authenticated\",\"User is not signed in.\"),i(u)}else if(s)t(new T({userId:s,server:c.server,token:o,expires:null!=a?Number(a):null,ssl:!!n}));else if(d){var m=d._oAuthCred;if(!m){var y=new S(d,window.localStorage),w=new S(d,window.sessionStorage);y.isValid()&&w.isValid()?y.expires>w.expires?(m=y,w.destroy()):(m=w,y.destroy()):m=y.isValid()?y:w,d._oAuthCred=m}if(m.isValid())t(new T({userId:m.userId,server:c.server,token:m.token,expires:m.expires,ssl:m.ssl,_oAuthCred:m}));else if(r._oAuthHash&&r._oAuthHash.state.portalUrl===d.portalUrl){var I=r._oAuthHash;l=new T({userId:I.username,server:c.server,token:I.access_token,expires:Date.now()+1e3*Number(I.expires_in),ssl:\"true\"===I.ssl,oAuthState:I.state,_oAuthCred:m}),m.storage=I.persist?window.localStorage:window.sessionStorage,m.token=l.token,m.expires=l.expires,m.userId=l.userId,m.ssl=l.ssl,m.save(),r._oAuthHash=null,t(l)}else p?e._pendingDfd=r.oAuthSignIn(e.resUrl_,c,d,e.options_).then(t,i):(u=new h(\"identity-manager:not-authenticated\",\"User is not signed in.\"),i(u))}else if(p){if(r._checkProtocol(e.resUrl_,c,i,e.admin_)){var k=e.options_;e.admin_&&(k=k||{},k.isAdmin=!0),e._pendingDfd=r.signIn(e.resUrl_,c,k).then(t,i)}}else u=new h(\"identity-manager:not-authenticated\",\"User is not signed in.\"),i(u)},n=function(){var s,n,o,a,l=e.sinfo_,h=l.owningSystemUrl,u=e.options_;if(u&&(s=u.token,n=u.error,o=u.prompt),!(a=r._findCredential(h,{token:s,resource:e.resUrl_})))for(var c=0,p=r.credentials;c<p.length;c++){var d=p[c];if(r._isIdProvider(h,d.server)){a=d;break}}if(a){var f=r.findCredential(e.resUrl_,a.userId);if(f)t(f);else if(U(l,r._legacyFed)){var d=a.toJSON();d.server=l.server,d.resources=null,t(new T(d))}else{var v=e._pendingDfd=r.generateToken(r.findServerInfo(a.server),null,{serverUrl:e.resUrl_,token:a.token,signal:e.options_.signal,ssl:a.ssl});v.then(function(r){t(new T({userId:a.userId,server:l.server,token:r.token,expires:null!=r.expires?Number(r.expires):null,ssl:!!r.ssl,isAdmin:e.admin_,validity:r.validity}))},i)}}else{r._busy=null,s&&(e.options_.token=null);(e._pendingDfd=r.getCredential(h.replace(/\\/?$/,\"/sharing\"),{resource:e.resUrl_,owningTenant:l.owningTenant,signal:e.options_.signal,token:s,error:n,prompt:o})).then(function(){r._enqueue(e.resUrl_,e.sinfo_,e.options_,e,e.admin_)},function(e){i(e)})}};this._errbackFunc=i;var o=e.sinfo_.owningSystemUrl,a=this._isServerRsrc(e.resUrl_),l=e.sinfo_._restInfoPms;l?l.promise.then(function(t){var i=e.sinfo_;if(i._restInfoPms){i.adminTokenServiceUrl=i._restInfoPms.adminUrl,i._restInfoPms=null,i.tokenServiceUrl=d.getDeepValue(\"authInfo.tokenServicesUrl\",t)||d.getDeepValue(\"authInfo.tokenServiceUrl\",t)||d.getDeepValue(\"tokenServiceUrl\",t),i.shortLivedTokenValidity=d.getDeepValue(\"authInfo.shortLivedTokenValidity\",t),i.currentVersion=t.currentVersion,i.owningTenant=t.owningTenant;var o=i.owningSystemUrl=t.owningSystemUrl;o&&r._portals.push(o)}a&&i.owningSystemUrl?n():s()},function(){e.sinfo_._restInfoPms=null;var r=new h(\"identity-manager:server-identification-failed\",\"Unknown resource - could not find token service endpoint.\");i(r)}):a&&o?n():e.sinfo_._selfReq?e.sinfo_._selfReq.selfDfd.then(function(t){var i,s,n,o,a={};return t&&(i=t.user&&t.user.username,a.username=i,a.allSSL=t.allSSL,s=t.supportsOAuth,n=t.currentVersion,\"multitenant\"===t.portalMode&&(o=t.customBaseUrl)),e.sinfo_.webTierAuth=!!i,i&&r.normalizeWebTierAuth?r.generateToken(e.sinfo_,null,{ssl:a.allSSL}).catch(function(){return null}).then(function(e){return a.portalToken=e&&e.token,a.tokenExpiration=e&&e.expires,a}):!i&&s&&parseFloat(n)>=4.4&&!r._canUsePortalSignInWorkflow(e.resUrl_)?r._generateOAuthInfo({portalUrl:e.sinfo_.server,customBaseUrl:o,owningTenant:e.sinfo_._selfReq.owningTenant}).catch(function(){return null}).then(function(){return a}):a}).catch(function(){return null}).then(function(r){e.sinfo_._selfReq=null,r?s(r.username,r.allSSL,r.portalToken,r.tokenExpiration):s()}):s()},r.prototype._generateOAuthInfo=function(e){var r,t,i=this,s=e.portalUrl,n=e.customBaseUrl,o=e.owningTenant,l=!this.defaultOAuthInfo&&this._createDefaultOAuthInfo&&!this._hasTestedIfAppIsOnPortal;if(l){t=window.location.href;var h=t.indexOf(\"?\");h>-1&&(t=t.slice(0,h)),h=t.search(/\\/(apps|home)\\//),t=h>-1?t.slice(0,h):null}return l&&t?(this._hasTestedIfAppIsOnPortal=!0,r=a(t+\"/sharing/rest\",{query:{f:\"json\"},responseType:\"json\"}).then(function(){i.defaultOAuthInfo=new y({appId:\"arcgisonline\",popup:!0,popupCallbackUrl:t+\"/home/oauth-callback.html\"})})):r=f.resolve(),r.then(function(){if(i.defaultOAuthInfo)return s=s.replace(/^http:/i,\"https:\"),a(s+\"/sharing/rest/oauth2/validateRedirectUri\",{query:{accountId:o,client_id:i.defaultOAuthInfo.appId,redirect_uri:_.makeAbsolute(i.defaultOAuthInfo.popupCallbackUrl),f:\"json\"},responseType:\"json\"}).then(function(e){if(e.data.valid){var r=i.defaultOAuthInfo.clone();e.data.urlKey&&n?r.portalUrl=\"https://\"+e.data.urlKey+\".\"+n:r.portalUrl=s,i.oAuthInfos.push(r)}})})},r=s([m.subclass(\"esri.identity.IdentityManagerBase\")],r)}(m.declared(u));r.IdentityManagerBase=A;var T=function(e){function r(r){var t=e.call(this,r)||this;return t._oAuthCred=null,t.tokenRefreshBuffer=2,r&&r._oAuthCred&&(t._oAuthCred=r._oAuthCred),t}return i(r,e),r.prototype.initialize=function(){this.resources=this.resources||[],null==this.creationTime&&(this.creationTime=Date.now())},r.prototype.refreshToken=function(){var e,r,t=this,i=o.id.findServerInfo(this.server),s=i&&i.owningSystemUrl,n=!!s&&\"server\"===this.scope,a=n&&U(i,o.id._legacyFed),l=i.webTierAuth,h=l&&o.id.normalizeWebTierAuth,u=I[this.server],c=u&&u[this.userId],p=this.resources&&this.resources[0],d=n&&o.id.findServerInfo(s),f={username:this.userId,password:c};if((!l||h)&&(n&&!d&&o.id.serverInfos.some(function(e){return o.id._isIdProvider(s,e.server)&&(d=e),!!d}),e=d&&o.id.findCredential(d.server,this.userId),!n||e)){if(a)return void e.refreshToken();if(n)r={serverUrl:p,token:e&&e.token,ssl:e&&e.ssl};else if(h)f=null,r={ssl:this.ssl};else{if(!c){var v=void 0;return p&&(p=o.id._sanitizeUrl(p),this._enqueued=1,v=o.id._enqueue(p,i,null,null,this.isAdmin,this),v.then(function(){t._enqueued=0,t.refreshServerTokens()}).catch(function(){t._enqueued=0})),v}this.isAdmin&&(r={isAdmin:!0})}return o.id.generateToken(n?d:i,n?null:f,r).then(function(e){t.token=e.token,t.expires=null!=e.expires?Number(e.expires):null,t.creationTime=Date.now(),t.validity=e.validity,t.emitTokenChange(),t.refreshServerTokens()}).catch(function(){})}},r.prototype.refreshServerTokens=function(){var e=this;\"portal\"===this.scope&&o.id.credentials.forEach(function(r){var t=o.id.findServerInfo(r.server),i=t&&t.owningSystemUrl;r!==e&&r.userId===e.userId&&i&&\"server\"===r.scope&&(o.id._hasSameServerInstance(e.server,i)||o.id._isIdProvider(i,e.server))&&(U(t,o.id._legacyFed)?(r.token=e.token,r.expires=e.expires,r.creationTime=e.creationTime,r.validity=e.validity,r.emitTokenChange()):r.refreshToken())})},r.prototype.emitTokenChange=function(e){clearTimeout(this._refreshTimer);var r=this.server&&o.id.findServerInfo(this.server),t=r&&r.owningSystemUrl,i=t&&o.id.findServerInfo(t);!1===e||t&&\"portal\"!==this.scope&&(!i||!i.webTierAuth||o.id.normalizeWebTierAuth)||null==this.expires&&null==this.validity||this._startRefreshTimer(),this.emit(\"token-change\")},r.prototype.destroy=function(){this.userId=this.server=this.token=this.expires=this.validity=this.resources=this.creationTime=null,this._oAuthCred&&(this._oAuthCred.destroy(),this._oAuthCred=null);var e=o.id.credentials.indexOf(this);e>-1&&o.id.credentials.splice(e,1),this.emitTokenChange(),this.emit(\"destroy\")},r.prototype.toJSON=function(){var e=p.fixJson({userId:this.userId,server:this.server,token:this.token,expires:this.expires,validity:this.validity,ssl:this.ssl,isAdmin:this.isAdmin,creationTime:this.creationTime,scope:this.scope}),r=this.resources;return r&&r.length>0&&(e.resources=r.slice()),e},r.prototype._startRefreshTimer=function(){clearTimeout(this._refreshTimer);var e=6e4*this.tokenRefreshBuffer,r=this.validity?this.creationTime+6e4*this.validity:this.expires,t=r-Date.now();t<0&&(t=0),this._refreshTimer=setTimeout(this.refreshToken.bind(this),t>e?t-e:t)},s([m.property()],r.prototype,\"creationTime\",void 0),s([m.property()],r.prototype,\"expires\",void 0),s([m.property()],r.prototype,\"isAdmin\",void 0),s([m.property()],r.prototype,\"oAuthState\",void 0),s([m.property()],r.prototype,\"resources\",void 0),s([m.property()],r.prototype,\"scope\",void 0),s([m.property()],r.prototype,\"server\",void 0),s([m.property()],r.prototype,\"ssl\",void 0),s([m.property()],r.prototype,\"token\",void 0),s([m.property()],r.prototype,\"tokenRefreshBuffer\",void 0),s([m.property()],r.prototype,\"userId\",void 0),s([m.property()],r.prototype,\"validity\",void 0),r=s([m.subclass(\"esri.identity.Credential\")],r)}(m.declared(u.EventedAccessor));r.Credential=T});","// COPYRIGHT © 2019 Esri\n//\n// All rights reserved under the copyright laws of the United States\n// and applicable international laws, treaties, and conventions.\n//\n// This material is licensed for use under the Esri Master License\n// Agreement (MLA), and is bound by the terms of that agreement.\n// You may redistribute and use this code without modification,\n// provided you adhere to the terms of the MLA and include this\n// copyright notice.\n//\n// See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english\n//\n// For additional information, contact:\n// Environmental Systems Research Institute, Inc.\n// Attn: Contracts and Legal Services Department\n// 380 New York Street\n// Redlands, California, USA 92373\n// USA\n//\n// email: contracts@esri.com\n//\n// See http://js.arcgis.com/4.14/esri/copyright.txt for details.\n\ndefine([\"../core/declare\",\"dojo/dom-attr\",\"dojo/keys\",\"dijit/registry\",\"dijit/Dialog\",\"../kernel\",\"../core/lang\",\"../core/Error\",\"../core/domUtils\",\"../core/promiseUtils\",\"../intl/substitute\",\"./IdentityManagerBase\",\"dojo/i18n!./nls/identity\",\"dijit/form/Button\",\"dijit/form/Form\",\"dijit/form/ValidationTextBox\"],function(e,t,i,s,r,n,a,o,d,l,c,g,_){var u=c.substitute,m=g.IdentityManagerBase,b=g.Credential;return e([m],{declaredClass:\"esri.identity.IdentityManager\",constructor:function(e){a.mixin(this,e)},_dialogContent:\"<div data-dojo-type='dijit.form.Form' data-dojo-props='\\\"class\\\":\\\"esriIdForm\\\"'><div class='dijitDialogPaneContentArea'><div style='padding-bottom: 5px; word-wrap: break-word;'>{info}</div><div style='margin: 0px; padding: 0px; height: 10px;'></div><div class='esriErrorMsg' style='display: none; color: white; background-color: #D46464; text-align: center; padding-top: 3px; padding-bottom: 3px;'>{invalidUser}</div><div style='margin: 0px; padding: 0px; height: 10px;'></div><table style='width: 100%;'><tr><td>\"+'<label>{lblUser}<br/><input data-dojo-type=\\'dijit.form.ValidationTextBox\\' data-dojo-props=\\'type:\"text\", \"class\":\"esriIdUser\", required:true, trim:true, style:\"width: 100%;\", autocapitalize:\"none\", autocorrect:\"off\", spellcheck:false\\' /></label></td></tr><tr><td><label>{lblPwd}<br/><input data-dojo-type=\\'dijit.form.ValidationTextBox\\' data-dojo-props=\\'type:\"password\", \"class\":\"esriIdPwd\", required:true, style:\"width: 100%;\"\\' /></label></td></tr></table></div><div class=\\'dijitDialogPaneActionBar\\'><button data-dojo-type=\\'dijit.form.Button\\' data-dojo-props=\\'type:\"button\", \"class\":\"esriIdSubmit\"\\'>{lblOk}</button><button data-dojo-type=\\'dijit.form.Button\\' data-dojo-props=\\'type:\"button\", \"class\":\"esriIdCancel\"\\'>{lblCancel}</button></div></div>',signIn:function(e,i,s){this._nls||(this._nls=_),this._loginDialog||(this._loginDialog=this.dialog=this._createLoginDialog(),this.emit(\"dialog-create\"));var r=this._loginDialog,n=s&&s.error,a=s&&s.token,c=l.createResolver();if(s&&s.signal&&l.onAbort(s.signal,function(){r.onCancel()}),r.open){var g=new o(\"identity-manager:busy\",\"BUSY\");return c.reject(g),c.promise}return d.hide(r.errMsg_),n&&n.details&&403==n.details.httpStatus&&a&&(t.set(r.errMsg_,\"innerHTML\",this._nls.forbidden),d.show(r.errMsg_)),r.dfd_=c,r.serverInfo_=i,r.resUrl_=e,r.admin_=s&&s.isAdmin,r.signal_=s&&s.signal,t.set(r.resLink_,{title:e,innerHTML:\"(\"+(this.getResourceName(e)||this._nls.lblItem)+\")\"}),t.set(r.serverLink_,{title:i.server,innerHTML:(-1!==i.server.toLowerCase().indexOf(\"arcgis.com\")?\"ArcGIS Online\":i.server)+\" \"}),r.txtPwd_.set(\"value\",\"\"),r.show(),c.promise},_createLoginDialog:function(){var e=this._nls,a=u(this._dialogContent,e);a=u(a,{resource:\"<span class='resLink' style='word-wrap: break-word;'></span>\",server:\"<span class='serverLink' style='word-wrap: break-word;'></span>\"});var l=new r({title:e.title,content:a,class:\" esri-widget esriSignInDialog esriIdentityDialog\",style:\"width: 18em;\",esriIdMgr_:this,onShow:function(){this.domNode.classList.add(\"esriIdentityDialog--visible\")},onHide:function(){this.domNode.classList.remove(\"esriIdentityDialog--visible\")},keypressed_:function(e){e.charOrCode===i.ENTER&&this.execute_()},execute_:function(){var i=this.txtUser_.get(\"value\"),s=this.txtPwd_.get(\"value\"),a=this.dfd_,o=this;if(this.form_.validate()&&i&&s){this.btnSubmit_.set(\"label\",e.lblSigning);var l=n.id.findCredential(o.resUrl_,i),c=function(t){o.btnSubmit_.set(\"label\",e.lblOk),o.btnSubmit_.set(\"disabled\",!1),d.hide(o.errMsg_),o.hide(),r._DialogLevelManager.hide(o);var s=o.serverInfo_;o.dfd_=o.serverInfo_=o.generateDfd_=o.resUrl_=o.signal_=null;var n,c,g,_=l;t&&(n=t.token,c=null!=t.expires?Number(t.expires):null,g=!!t.ssl,_?(_.userId=i,_.token=n,_.expires=c,_.validity=t.validity,_.ssl=g,_.creationTime=Date.now()):_=new b({userId:i,server:s.server,token:n,expires:c,ssl:g,isAdmin:o.admin_,validity:t.validity})),a.resolve(_)};if(l&&!l._enqueued)return void c();o.btnSubmit_.set(\"disabled\",!0),o.generateDfd_=n.id.generateToken(this.serverInfo_,{username:i,password:s},{isAdmin:this.admin_,signal:this.signal_}).then(c,function(i){o.btnSubmit_.set(\"disabled\",!1),o.generateDfd_=null,o.btnSubmit_.set(\"label\",e.lblOk),t.set(o.errMsg_,\"innerHTML\",i&&i.details&&i.details.httpStatus?e.invalidUser:e.noAuthService),d.show(o.errMsg_)})}},cancel_:function(){var e=l.dfd_,t=l.resUrl_,i=l.serverInfo_;l.btnSubmit_.set(\"disabled\",!1),l.dfd_=l.serverInfo_=l.generateDfd_=l.resUrl_=l.signal_=null,d.hide(l.errMsg_),r._DialogLevelManager.hide(l),l.esriIdMgr_.emit(\"dialog-cancel\",{resourceUrl:t,serverInfo:i});var s=new o(\"identity-manager:user-aborted\",\"ABORTED\");e.reject(s)}}),c=l.domNode;return l.form_=s.byNode(c.getElementsByClassName(\"esriIdForm\")[0]),l.txtUser_=s.byNode(c.getElementsByClassName(\"esriIdUser\")[0]),l.txtPwd_=s.byNode(c.getElementsByClassName(\"esriIdPwd\")[0]),l.btnSubmit_=s.byNode(c.getElementsByClassName(\"esriIdSubmit\")[0]),l.btnCancel_=s.byNode(c.getElementsByClassName(\"esriIdCancel\")[0]),l.resLink_=c.getElementsByClassName(\"resLink\")[0],l.serverLink_=c.getElementsByClassName(\"serverLink\")[0],l.errMsg_=c.getElementsByClassName(\"esriErrorMsg\")[0],l.connect(l.txtUser_,\"onKeyPress\",l.keypressed_),l.connect(l.txtPwd_,\"onKeyPress\",l.keypressed_),l.connect(l.btnSubmit_,\"onClick\",l.execute_),l.connect(l.btnCancel_,\"onClick\",l.onCancel),l.connect(l,\"onCancel\",l.cancel_),l}})});","// COPYRIGHT © 2019 Esri\n//\n// All rights reserved under the copyright laws of the United States\n// and applicable international laws, treaties, and conventions.\n//\n// This material is licensed for use under the Esri Master License\n// Agreement (MLA), and is bound by the terms of that agreement.\n// You may redistribute and use this code without modification,\n// provided you adhere to the terms of the MLA and include this\n// copyright notice.\n//\n// See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english\n//\n// For additional information, contact:\n// Environmental Systems Research Institute, Inc.\n// Attn: Contracts and Legal Services Department\n// 380 New York Street\n// Redlands, California, USA 92373\n// USA\n//\n// email: contracts@esri.com\n//\n// See http://js.arcgis.com/4.14/esri/copyright.txt for details.\n\ndefine([\"require\",\"exports\"],function(t,e){var s=function(){function t(t,e){this.oAuthInfo=null,this.storage=null,this.expires=null,this.ssl=null,this.token=null,this.userId=null,this.oAuthInfo=t,this.storage=e,this._init()}return t.prototype.isValid=function(){var t=!1;if(this.oAuthInfo&&this.token&&this.userId){var e=Date.now();if(this.expires>e){(this.expires-e)/1e3>60*this.oAuthInfo.minTimeUntilExpiration&&(t=!0)}}return t},t.prototype.save=function(){if(this.storage){var t=this._load(),e=this.oAuthInfo;if(e&&e.authNamespace&&e.portalUrl){var s=t[e.authNamespace];s||(s=t[e.authNamespace]={}),s[e.portalUrl]={expires:this.expires,ssl:this.ssl,token:this.token,userId:this.userId};try{this.storage.setItem(\"esriJSAPIOAuth\",JSON.stringify(t))}catch(t){console.log(t)}}}},t.prototype.destroy=function(){var t=this._load(),e=this.oAuthInfo;if(e&&e.appId&&e.portalUrl&&this.token&&this.expires>Date.now()){var s=e.portalUrl.replace(/^http:/i,\"https:\")+\"/sharing/rest/oauth2/revokeToken\",i=new FormData;if(i.append(\"f\",\"json\"),i.append(\"auth_token\",this.token),i.append(\"client_id\",e.appId),i.append(\"token_type_hint\",\"access_token\"),\"function\"==typeof navigator.sendBeacon)navigator.sendBeacon(s,i);else{var o=new XMLHttpRequest;o.open(\"POST\",s),o.send(i)}}if(e&&e.authNamespace&&e.portalUrl&&this.storage){var r=t[e.authNamespace];if(r){delete r[e.portalUrl];try{this.storage.setItem(\"esriJSAPIOAuth\",JSON.stringify(t))}catch(t){console.log(t)}}}e&&(e._oAuthCred=null,this.oAuthInfo=null)},t.prototype._init=function(){var t=this._load(),e=this.oAuthInfo;if(e&&e.authNamespace&&e.portalUrl){var s=t[e.authNamespace];s&&(s=s[e.portalUrl])&&(this.expires=s.expires,this.ssl=s.ssl,this.token=s.token,this.userId=s.userId)}},t.prototype._load=function(){var t={};if(this.storage){var e=this.storage.getItem(\"esriJSAPIOAuth\");if(e)try{t=JSON.parse(e)}catch(t){console.log(t)}}return t},t}();return s.prototype.declaredClass=\"esri.identity.OAuthCredential\",s});","// COPYRIGHT © 2019 Esri\n//\n// All rights reserved under the copyright laws of the United States\n// and applicable international laws, treaties, and conventions.\n//\n// This material is licensed for use under the Esri Master License\n// Agreement (MLA), and is bound by the terms of that agreement.\n// You may redistribute and use this code without modification,\n// provided you adhere to the terms of the MLA and include this\n// copyright notice.\n//\n// See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english\n//\n// For additional information, contact:\n// Environmental Systems Research Institute, Inc.\n// Attn: Contracts and Legal Services Department\n// 380 New York Street\n// Redlands, California, USA 92373\n// USA\n//\n// email: contracts@esri.com\n//\n// See http://js.arcgis.com/4.14/esri/copyright.txt for details.\n\ndefine([\"require\",\"exports\",\"../core/tsSupport/declareExtendsHelper\",\"../core/tsSupport/decorateHelper\",\"../core/JSONSupport\",\"../core/accessorSupport/decorators\"],function(o,r,t,p,e,i){return function(o){function r(r){var t=o.call(this,r)||this;return t._oAuthCred=null,t.appId=null,t.authNamespace=\"/\",t.expiration=20160,t.forceLogin=!1,t.locale=null,t.minTimeUntilExpiration=30,t.popup=!1,t.popupCallbackUrl=\"oauth-callback.html\",t.popupWindowFeatures=\"height=490,width=800,resizable,scrollbars,status\",t.portalUrl=\"https://www.arcgis.com\",t.preserveUrlHash=!1,t}t(r,o),e=r,r.prototype.clone=function(){return e.fromJSON(this.toJSON())};var e;return p([i.property({json:{write:!0}})],r.prototype,\"appId\",void 0),p([i.property({json:{write:!0}})],r.prototype,\"authNamespace\",void 0),p([i.property({json:{write:!0}})],r.prototype,\"expiration\",void 0),p([i.property({json:{write:!0}})],r.prototype,\"forceLogin\",void 0),p([i.property({json:{write:!0}})],r.prototype,\"locale\",void 0),p([i.property({json:{write:!0}})],r.prototype,\"minTimeUntilExpiration\",void 0),p([i.property({json:{write:!0}})],r.prototype,\"popup\",void 0),p([i.property({json:{write:!0}})],r.prototype,\"popupCallbackUrl\",void 0),p([i.property({json:{write:!0}})],r.prototype,\"popupWindowFeatures\",void 0),p([i.property({json:{write:!0}})],r.prototype,\"portalUrl\",void 0),p([i.property({json:{write:!0}})],r.prototype,\"preserveUrlHash\",void 0),r=e=p([i.subclass(\"esri.identity.OAuthInfo\")],r)}(i.declared(e.JSONSupport))});","// COPYRIGHT © 2019 Esri\n//\n// All rights reserved under the copyright laws of the United States\n// and applicable international laws, treaties, and conventions.\n//\n// This material is licensed for use under the Esri Master License\n// Agreement (MLA), and is bound by the terms of that agreement.\n// You may redistribute and use this code without modification,\n// provided you adhere to the terms of the MLA and include this\n// copyright notice.\n//\n// See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english\n//\n// For additional information, contact:\n// Environmental Systems Research Institute, Inc.\n// Attn: Contracts and Legal Services Department\n// 380 New York Street\n// Redlands, California, USA 92373\n// USA\n//\n// email: contracts@esri.com\n//\n// See http://js.arcgis.com/4.14/esri/copyright.txt for details.\n\ndefine([\"./Credential\",\"../core/domUtils\",\"../core/has\",\"../core/Error\",\"../core/promiseUtils\",\"../core/urlUtils\",\"../intl/substitute\",\"dijit/Dialog\",\"dijit/registry\",\"dojo/dom-attr\",\"dojo/i18n!./nls/identity\",\"dijit/form/Button\"],function(e,t,i,r,o,n,s,a,l,d,u){var h=s.substitute;return{_oAuthIntervalId:0,_oAuthDialogContent:\"<div class='dijitDialogPaneContentArea'><div style='padding-bottom: 5px; word-wrap: break-word;'>{oAuthInfo}</div><div style='margin: 0px; padding: 0px; height: 10px;'></div><div class='esriErrorMsg' style='display: none; color: white; background-color: #D46464; text-align: center; padding-top: 3px; padding-bottom: 3px;'>{invalidUser}</div><div style='margin: 0px; padding: 0px; height: 10px;'></div><div class='dijitDialogPaneActionBar'><button data-dojo-type='dijit.form.Button' data-dojo-props='type:\\\"button\\\", \\\"class\\\":\\\"esriIdSubmit\\\"'>{lblOk}</button><button data-dojo-type='dijit.form.Button' data-dojo-props='type:\\\"button\\\", \\\"class\\\":\\\"esriIdCancel\\\"'>{lblCancel}</button></div>\",setOAuthRedirectionHandler:function(e){this._oAuthRedirectFunc=e},oAuthSignIn:function(e,i,r,n){var s=this._oAuthDfd=o.createResolver();n&&n.signal&&o.onAbort(n.signal,function(){var e=this._oAuthDfd&&this._oAuthDfd.oAuthWin_;e&&!e.closed?e.close():this.oAuthDialog&&this.oAuthDialog.onCancel()}.bind(this)),s.resUrl_=e,s.sinfo_=i,s.oinfo_=r;var a=!n||!1!==n.oAuthPopupConfirmation;if(!r.popup||!a)return this._doOAuthSignIn(e,i,r),s.promise;this._nls||(this._nls=u),this.oAuthDialog||(this.oAuthDialog=this._createOAuthDialog());var l=this.oAuthDialog,h=n&&n.error,c=n&&n.token;return t.hide(l.errMsg_),h&&h.details&&403==h.details.httpStatus&&c&&(d.set(l.errMsg_,\"innerHTML\",this._nls.forbidden),t.show(l.errMsg_)),d.set(l.serverLink_,{title:i.server,innerHTML:-1!==i.server.toLowerCase().indexOf(\"arcgis.com\")?\"ArcGIS Online\":i.server}),l.show(),s.promise},setOAuthResponseHash:function(t){var i=this._oAuthDfd;if(this._oAuthDfd=null,i&&t){clearInterval(this._oAuthIntervalId),\"#\"===t.charAt(0)&&(t=t.substring(1));var o=n.queryToObject(t);if(o.error){var s=\"access_denied\"===o.error,a=new r(s?\"identity-manager:user-aborted\":\"identity-manager:authentication-failed\",s?\"ABORTED\":\"OAuth: \"+o.error+\" - \"+o.error_description);i.reject(a)}else{var l=i.sinfo_,d=i.oinfo_,u=d._oAuthCred,h=new e({userId:o.username,server:l.server,token:o.access_token,expires:Date.now()+1e3*Number(o.expires_in),ssl:\"true\"===o.ssl,_oAuthCred:u});u.storage=o.persist?window.localStorage:window.sessionStorage,u.token=h.token,u.expires=h.expires,u.userId=h.userId,u.ssl=h.ssl,u.save(),i.resolve(h)}}},_createOAuthDialog:function(){var e=this._nls,i=h(this._oAuthDialogContent,e);i=h(i,{server:\"<span class='serverLink' style='word-wrap: break-word;'></span>\"});var o=new a({title:e.title,content:i,class:\"esri-widget esriOAuthSignInDialog esriIdentityDialog\",style:\"min-width: 18em;\",esriIdMgr_:this,execute_:function(){var e=o.esriIdMgr_._oAuthDfd;o.hide_(),o.esriIdMgr_._doOAuthSignIn(e.resUrl_,e.sinfo_,e.oinfo_)},cancel_:function(){var e=o.esriIdMgr_._oAuthDfd;o.esriIdMgr_._oAuthDfd=null,o.hide_();var t=new r(\"identity-manager:user-aborted\",\"ABORTED\");e.reject(t)},hide_:function(){t.hide(o.errMsg_),o.hide(),a._DialogLevelManager.hide(o)}}),n=o.domNode;return o.btnSubmit_=l.byNode(n.getElementsByClassName(\"esriIdSubmit\")[0]),o.btnCancel_=l.byNode(n.getElementsByClassName(\"esriIdCancel\")[0]),o.serverLink_=n.getElementsByClassName(\"serverLink\")[0],o.errMsg_=n.getElementsByClassName(\"esriErrorMsg\")[0],o.connect(o.btnSubmit_,\"onClick\",o.execute_),o.connect(o.btnCancel_,\"onClick\",o.onCancel),o.connect(o,\"onCancel\",o.cancel_),o},_doOAuthSignIn:function(e,t,o){var s=this,a={portalUrl:o.portalUrl};!o.popup&&o.preserveUrlHash&&window.location.hash&&(a.hash=window.location.hash);var l={client_id:o.appId,response_type:\"token\",state:JSON.stringify(a),expiration:o.expiration,locale:o.locale,redirect_uri:o.popup?n.makeAbsolute(o.popupCallbackUrl):window.location.href.replace(/#.*$/,\"\")};o.forceLogin&&(l.force_login=!0);var d=o.portalUrl.replace(/^http:/i,\"https:\")+\"/sharing/oauth2/authorize\",u=d+\"?\"+n.objectToQuery(l);if(o.popup){var h;if(7===i(\"ie\")?(h=window.open(o.popupCallbackUrl,\"esriJSAPIOAuth\",o.popupWindowFeatures),h.location=u):h=window.open(u,\"esriJSAPIOAuth\",o.popupWindowFeatures),h)h.focus(),this._oAuthDfd.oAuthWin_=h,this._oAuthIntervalId=setInterval(function(){if(h.closed){clearInterval(s._oAuthIntervalId);var e=s._oAuthDfd;if(e){var t=new r(\"identity-manager:user-aborted\",\"ABORTED\");e.reject(t)}}},500);else{var c=new r(\"identity-manager:popup-blocked\",\"ABORTED\");this._oAuthDfd.reject(c)}}else this._rejectOnPersistedPageShow=!0,this._oAuthRedirectFunc?this._oAuthRedirectFunc({authorizeParams:l,authorizeUrl:d,resourceUrl:e,serverInfo:t,oAuthInfo:o}):window.location=u}}});","// COPYRIGHT © 2019 Esri\n//\n// All rights reserved under the copyright laws of the United States\n// and applicable international laws, treaties, and conventions.\n//\n// This material is licensed for use under the Esri Master License\n// Agreement (MLA), and is bound by the terms of that agreement.\n// You may redistribute and use this code without modification,\n// provided you adhere to the terms of the MLA and include this\n// copyright notice.\n//\n// See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english\n//\n// For additional information, contact:\n// Environmental Systems Research Institute, Inc.\n// Attn: Contracts and Legal Services Department\n// 380 New York Street\n// Redlands, California, USA 92373\n// USA\n//\n// email: contracts@esri.com\n//\n// See http://js.arcgis.com/4.14/esri/copyright.txt for details.\n\ndefine([\"require\",\"exports\",\"../core/tsSupport/declareExtendsHelper\",\"../core/tsSupport/decorateHelper\",\"../core/JSONSupport\",\"../core/accessorSupport/decorators\"],function(r,e,o,t,n,p){return function(r){function e(e){var o=r.call(this,e)||this;return o.adminTokenServiceUrl=null,o.currentVersion=null,o.hasPortal=null,o.hasServer=null,o.owningSystemUrl=null,o.owningTenant=null,o.server=null,o.shortLivedTokenValidity=null,o.tokenServiceUrl=null,o.webTierAuth=null,o}return o(e,r),t([p.property({json:{write:!0}})],e.prototype,\"adminTokenServiceUrl\",void 0),t([p.property({json:{write:!0}})],e.prototype,\"currentVersion\",void 0),t([p.property({json:{write:!0}})],e.prototype,\"hasPortal\",void 0),t([p.property({json:{write:!0}})],e.prototype,\"hasServer\",void 0),t([p.property({json:{write:!0}})],e.prototype,\"owningSystemUrl\",void 0),t([p.property({json:{write:!0}})],e.prototype,\"owningTenant\",void 0),t([p.property({json:{write:!0}})],e.prototype,\"server\",void 0),t([p.property({json:{write:!0}})],e.prototype,\"shortLivedTokenValidity\",void 0),t([p.property({json:{write:!0}})],e.prototype,\"tokenServiceUrl\",void 0),t([p.property({json:{write:!0}})],e.prototype,\"webTierAuth\",void 0),e=t([p.subclass(\"esri.identity.ServerInfo\")],e)}(p.declared(n.JSONSupport))});","/*\n * This module was modified by dojo-webpack-plugin to disable some locales\n * that were excluded by the plugin's 'locales' option\n */\ndefine(({'root':({'lblItem':'item','title':'Sign in','info':'Please sign in to access the item on {server} {resource}','oAuthInfo':'Please sign in to {server}.','lblUser':'Username:','lblPwd':'Password:','lblOk':'OK','lblSigning':'Signing in...','lblCancel':'Cancel','errorMsg':'Invalid username/password. Please try again.','invalidUser':'The username or password you entered is incorrect.','forbidden':'The username and password are valid, but you don\\'t have access to this resource.','noAuthService':'Unable to access the authentication service.'}),'ar':false,'bs':false,'ca':false,'cs':false,'da':false,'de':false,'el':false,'es':false,'et':false,'fi':false,'fr':false,'he':false,'hr':false,'hu':false,'id':false,'it':false,'ja':false,'ko':false,'lv':false,'lt':false,'nl':false,'nb':false,'pl':false,'pt-br':false,'pt-pt':false,'ro':false,'ru':false,'sl':false,'sr':false,'sv':false,'th':false,'tr':false,'uk':false,'vi':1,'zh-cn':false,'zh-hk':false,'zh-tw':false}))","// COPYRIGHT © 2019 Esri\n//\n// All rights reserved under the copyright laws of the United States\n// and applicable international laws, treaties, and conventions.\n//\n// This material is licensed for use under the Esri Master License\n// Agreement (MLA), and is bound by the terms of that agreement.\n// You may redistribute and use this code without modification,\n// provided you adhere to the terms of the MLA and include this\n// copyright notice.\n//\n// See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english\n//\n// For additional information, contact:\n// Environmental Systems Research Institute, Inc.\n// Attn: Contracts and Legal Services Department\n// 380 New York Street\n// Redlands, California, USA 92373\n// USA\n//\n// email: contracts@esri.com\n//\n// See http://js.arcgis.com/4.14/esri/copyright.txt for details.\n\ndefine({lblItem:\"mục\",title:\"Đăng nhập\",info:\"Vui lòng đăng nhập để truy cập mục trên {server} {resource}\",oAuthInfo:\"Vui lòng đăng nhập vào {server}.\",lblUser:\"Tên đăng nhập:\",lblPwd:\"Mật khẩu:\",lblOk:\"OK\",lblSigning:\"Đang đăng nhập...\",lblCancel:\"Hủy\",errorMsg:\"Tên người dùng/mật khẩu không hợp lệ. Vui lòng thử lại.\",invalidUser:\"Tên người dùng hoặc mật khẩu bạn nhập không đúng.\",forbidden:\"Tên người dùng và mật khẩu hợp lệ, nhưng bạn không có quyền truy cập vào tài nguyên này.\",noAuthService:\"Không thể truy cập dịch vụ xác thực.\"});","define([\n\t\"require\",\t\t\t// require.toUrl\n\t\"./main\",\t// to export dijit.BackgroundIframe\n\t\"dojo/_base/config\",\n\t\"dojo/dom-construct\", // domConstruct.create\n\t\"dojo/dom-style\", // domStyle.set\n\t\"dojo/_base/lang\", // lang.extend lang.hitch\n\t\"dojo/on\",\n\t\"dojo/sniff\" // has(\"ie\"), has(\"trident\"), has(\"quirks\")\n], function(require, dijit, config, domConstruct, domStyle, lang, on, has){\n\n\t// module:\n\t//\t\tdijit/BackgroundIFrame\n\n\t// Flag for whether to create background iframe behind popups like Menus and Dialog.\n\t// A background iframe is useful to prevent problems with popups appearing behind applets/pdf files,\n\t// and is also useful on older versions of IE (IE6 and IE7) to prevent the \"bleed through select\" problem.\n\t// By default, it's enabled for IE6-11, excluding Windows Phone 8.\n\t// TODO: For 2.0, make this false by default. Also, possibly move definition to has.js so that this module can be\n\t// conditionally required via dojo/has!bgIfame?dijit/BackgroundIframe\n\thas.add(\"config-bgIframe\",\n \t(has(\"ie\") || has(\"trident\")) && !/IEMobile\\/10\\.0/.test(navigator.userAgent)); // No iframe on WP8, to match 1.9 behavior\n\n\tvar _frames = new function(){\n\t\t// summary:\n\t\t//\t\tcache of iframes\n\n\t\tvar queue = [];\n\n\t\tthis.pop = function(){\n\t\t\tvar iframe;\n\t\t\tif(queue.length){\n\t\t\t\tiframe = queue.pop();\n\t\t\t\tiframe.style.display=\"\";\n\t\t\t}else{\n\t\t\t\t// transparency needed for DialogUnderlay and for tooltips on IE (to see screen near connector)\n\t\t\t\tif(has(\"ie\") < 9){\n\t\t\t\t\tvar burl = config[\"dojoBlankHtmlUrl\"] || require.toUrl(\"dojo/resources/blank.html\") || \"javascript:\\\"\\\"\";\n\t\t\t\t\tvar html=\"<iframe src='\" + burl + \"' role='presentation'\"\n\t\t\t\t\t\t+ \" style='position: absolute; left: 0px; top: 0px;\"\n\t\t\t\t\t\t+ \"z-index: -1; filter:Alpha(Opacity=\\\"0\\\");'>\";\n\t\t\t\t\tiframe = document.createElement(html);\n\t\t\t\t}else{\n\t\t\t\t\tiframe = domConstruct.create(\"iframe\");\n\t\t\t\t\tiframe.src = 'javascript:\"\"';\n\t\t\t\t\tiframe.className = \"dijitBackgroundIframe\";\n\t\t\t\t\tiframe.setAttribute(\"role\", \"presentation\");\n\t\t\t\t\tdomStyle.set(iframe, \"opacity\", 0.1);\n\t\t\t\t}\n\t\t\t\tiframe.tabIndex = -1; // Magic to prevent iframe from getting focus on tab keypress - as style didn't work.\n\t\t\t}\n\t\t\treturn iframe;\n\t\t};\n\n\t\tthis.push = function(iframe){\n\t\t\tiframe.style.display=\"none\";\n\t\t\tqueue.push(iframe);\n\t\t}\n\t}();\n\n\n\tdijit.BackgroundIframe = function(/*DomNode*/ node){\n\t\t// summary:\n\t\t//\t\tFor IE/FF z-index shenanigans. id attribute is required.\n\t\t//\n\t\t// description:\n\t\t//\t\tnew dijit.BackgroundIframe(node).\n\t\t//\n\t\t//\t\tMakes a background iframe as a child of node, that fills\n\t\t//\t\tarea (and position) of node\n\n\t\tif(!node.id){ throw new Error(\"no id\"); }\n\t\tif(has(\"config-bgIframe\")){\n\t\t\tvar iframe = (this.iframe = _frames.pop());\n\t\t\tnode.appendChild(iframe);\n\t\t\tif(has(\"ie\")<7 || has(\"quirks\")){\n\t\t\t\tthis.resize(node);\n\t\t\t\tthis._conn = on(node, 'resize', lang.hitch(this, \"resize\", node));\n\t\t\t}else{\n\t\t\t\tdomStyle.set(iframe, {\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\theight: '100%'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tlang.extend(dijit.BackgroundIframe, {\n\t\tresize: function(node){\n\t\t\t// summary:\n\t\t\t//\t\tResize the iframe so it's the same size as node.\n\t\t\t//\t\tNeeded on IE6 and IE/quirks because height:100% doesn't work right.\n\t\t\tif(this.iframe){\n\t\t\t\tdomStyle.set(this.iframe, {\n\t\t\t\t\twidth: node.offsetWidth + 'px',\n\t\t\t\t\theight: node.offsetHeight + 'px'\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdestroy: function(){\n\t\t\t// summary:\n\t\t\t//\t\tdestroy the iframe\n\t\t\tif(this._conn){\n\t\t\t\tthis._conn.remove();\n\t\t\t\tthis._conn = null;\n\t\t\t}\n\t\t\tif(this.iframe){\n\t\t\t\tthis.iframe.parentNode.removeChild(this.iframe);\n\t\t\t\t_frames.push(this.iframe);\n\t\t\t\tdelete this.iframe;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn dijit.BackgroundIframe;\n});\n","define([\n\t\"dojo/_base/array\", // array.forEach array.map\n\t\"dojo/aspect\",\n\t\"dojo/_base/declare\"\n], function(array, aspect, declare){\n\n\t// module:\n\t//\t\tdijit/Destroyable\n\n\treturn declare(\"dijit.Destroyable\", null, {\n\t\t// summary:\n\t\t//\t\tMixin to track handles and release them when instance is destroyed.\n\t\t// description:\n\t\t//\t\tCall this.own(...) on list of handles (returned from dojo/aspect, dojo/on,\n\t\t//\t\tdojo/Stateful::watch, or any class (including widgets) with a destroyRecursive() or destroy() method.\n\t\t//\t\tThen call destroy() later to destroy this instance and release the resources.\n\n\t\tdestroy: function(/*Boolean*/ preserveDom){\n\t\t\t// summary:\n\t\t\t//\t\tDestroy this class, releasing any resources registered via own().\n\t\t\tthis._destroyed = true;\n\t\t},\n\n\t\town: function(){\n\t\t\t// summary:\n\t\t\t//\t\tTrack specified handles and remove/destroy them when this instance is destroyed, unless they were\n\t\t\t//\t\talready removed/destroyed manually.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\t// returns:\n\t\t\t//\t\tThe array of specified handles, so you can do for example:\n\t\t\t//\t|\t\tvar handle = this.own(on(...))[0];\n\n\t\t\tvar cleanupMethods = [\n\t\t\t\t\"destroyRecursive\",\n\t\t\t\t\"destroy\",\n\t\t\t\t\"remove\"\n\t\t\t];\n\n\t\t\tarray.forEach(arguments, function(handle){\n\t\t\t\t// When this.destroy() is called, destroy handle. Since I'm using aspect.before(),\n\t\t\t\t// the handle will be destroyed before a subclass's destroy() method starts running, before it calls\n\t\t\t\t// this.inherited() or even if it doesn't call this.inherited() at all. If that's an issue, make an\n\t\t\t\t// onDestroy() method and connect to that instead.\n\t\t\t\tvar destroyMethodName;\n\t\t\t\tvar odh = aspect.before(this, \"destroy\", function (preserveDom){\n\t\t\t\t\thandle[destroyMethodName](preserveDom);\n\t\t\t\t});\n\n\t\t\t\t// Callback for when handle is manually destroyed.\n\t\t\t\tvar hdhs = [];\n\t\t\t\tfunction onManualDestroy(){\n\t\t\t\t\todh.remove();\n\t\t\t\t\tarray.forEach(hdhs, function(hdh){\n\t\t\t\t\t\thdh.remove();\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Setup listeners for manual destroy of handle.\n\t\t\t\t// Also computes destroyMethodName, used in listener above.\n\t\t\t\tif(handle.then){\n\t\t\t\t\t// Special path for Promises. Detect when Promise is resolved, rejected, or\n\t\t\t\t\t// canceled (nb: cancelling a Promise causes it to be rejected).\n\t\t\t\t\tdestroyMethodName = \"cancel\";\n\t\t\t\t\thandle.then(onManualDestroy, onManualDestroy);\n\t\t\t\t}else{\n\t\t\t\t\t// Path for other handles. Just use AOP to detect when handle is manually destroyed.\n\t\t\t\t\tarray.forEach(cleanupMethods, function(cleanupMethod){\n\t\t\t\t\t\tif(typeof handle[cleanupMethod] === \"function\"){\n\t\t\t\t\t\t\tif(!destroyMethodName){\n\t\t\t\t\t\t\t\t// Use first matching method name in above listener (prefer destroyRecursive() to destroy())\n\t\t\t\t\t\t\t\tdestroyMethodName = cleanupMethod;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thdhs.push(aspect.after(handle, cleanupMethod, onManualDestroy, true));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\treturn arguments;\t\t// handle\n\t\t}\n\t});\n});\n","define([\n\t\"require\",\n\t\"dojo/_base/array\", // array.forEach array.indexOf array.map\n\t\"dojo/aspect\",\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/Deferred\", // Deferred\n\t\"dojo/dom\", // dom.isDescendant\n\t\"dojo/dom-class\", // domClass.add domClass.contains\n\t\"dojo/dom-geometry\", // domGeometry.position\n\t\"dojo/dom-style\", // domStyle.set\n\t\"dojo/_base/fx\", // fx.fadeIn fx.fadeOut\n\t\"dojo/i18n\", // i18n.getLocalization\n\t\"dojo/keys\",\n\t\"dojo/_base/lang\", // lang.mixin lang.hitch\n\t\"dojo/on\",\n\t\"dojo/ready\",\n\t\"dojo/sniff\", // has(\"ie\") has(\"opera\") has(\"dijit-legacy-requires\")\n\t\"dojo/touch\",\n\t\"dojo/window\", // winUtils.getBox, winUtils.get\n\t\"dojo/dnd/Moveable\", // Moveable\n\t\"dojo/dnd/TimedMoveable\", // TimedMoveable\n\t\"./focus\",\n\t\"./_base/manager\", // manager.defaultDuration\n\t\"./_Widget\",\n\t\"./_TemplatedMixin\",\n\t\"./_CssStateMixin\",\n\t\"./form/_FormMixin\",\n\t\"./_DialogMixin\",\n\t\"./DialogUnderlay\",\n\t\"./layout/ContentPane\",\n\t\"./layout/utils\",\n\t\"dojo/text!./templates/Dialog.html\",\n\t\"./a11yclick\",\t// template uses ondijitclick\n\t\"dojo/i18n!./nls/common\"\n], function(require, array, aspect, declare, Deferred,\n\t\t\tdom, domClass, domGeometry, domStyle, fx, i18n, keys, lang, on, ready, has, touch, winUtils,\n\t\t\tMoveable, TimedMoveable, focus, manager, _Widget, _TemplatedMixin, _CssStateMixin, _FormMixin, _DialogMixin,\n\t\t\tDialogUnderlay, ContentPane, utils, template){\n\n\t// module:\n\t//\t\tdijit/Dialog\n\n\tvar resolvedDeferred = new Deferred();\n\tresolvedDeferred.resolve(true);\n\n\tfunction nop(){}\n\n\tvar _DialogBase = declare(\"dijit._DialogBase\" + (has(\"dojo-bidi\") ? \"_NoBidi\" : \"\"), [_TemplatedMixin, _FormMixin, _DialogMixin, _CssStateMixin], {\n\t\ttemplateString: template,\n\n\t\tbaseClass: \"dijitDialog\",\n\n\t\tcssStateNodes: {\n\t\t\tcloseButtonNode: \"dijitDialogCloseIcon\"\n\t\t},\n\n\t\t// Map widget attributes to DOMNode attributes.\n\t\t_setTitleAttr: { node: \"titleNode\", type: \"innerHTML\" },\n\n\t\t// open: [readonly] Boolean\n\t\t//\t\tTrue if Dialog is currently displayed on screen.\n\t\topen: false,\n\n\t\t// duration: Integer\n\t\t//\t\tThe time in milliseconds it takes the dialog to fade in and out\n\t\tduration: manager.defaultDuration,\n\n\t\t// refocus: Boolean\n\t\t//\t\tA Toggle to modify the default focus behavior of a Dialog, which\n\t\t//\t\tis to re-focus the element which had focus before being opened.\n\t\t//\t\tFalse will disable refocusing. Default: true\n\t\trefocus: true,\n\n\t\t// autofocus: Boolean\n\t\t//\t\tA Toggle to modify the default focus behavior of a Dialog, which\n\t\t//\t\tis to focus on the first dialog element after opening the dialog.\n\t\t//\t\tFalse will disable autofocusing. Default: true\n\t\tautofocus: true,\n\n\t\t// _firstFocusItem: [private readonly] DomNode\n\t\t//\t\tThe pointer to the first focusable node in the dialog.\n\t\t//\t\tSet by `dijit/_DialogMixin._getFocusItems()`.\n\t\t_firstFocusItem: null,\n\n\t\t// _lastFocusItem: [private readonly] DomNode\n\t\t//\t\tThe pointer to which node has focus prior to our dialog.\n\t\t//\t\tSet by `dijit/_DialogMixin._getFocusItems()`.\n\t\t_lastFocusItem: null,\n\n\t\t// draggable: Boolean\n\t\t//\t\tToggles the movable aspect of the Dialog. If true, Dialog\n\t\t//\t\tcan be dragged by it's title. If false it will remain centered\n\t\t//\t\tin the viewport.\n\t\tdraggable: true,\n\t\t_setDraggableAttr: function(/*Boolean*/ val){\n\t\t\t// Avoid _WidgetBase behavior of copying draggable attribute to this.domNode,\n\t\t\t// as that prevents text select on modern browsers (#14452)\n\t\t\tthis._set(\"draggable\", val);\n\t\t},\n\n\t\t// maxRatio: Number\n\t\t//\t\tMaximum size to allow the dialog to expand to, relative to viewport size\n\t\tmaxRatio: 0.9,\n\n\t\t// closable: Boolean\n\t\t//\t\tDialog show [x] icon to close itself, and ESC key will close the dialog.\n\t\tclosable: true,\n\t\t_setClosableAttr: function(val){\n\t\t\tthis.closeButtonNode.style.display = val ? \"\" : \"none\";\n\t\t\tthis._set(\"closable\", val);\n\t\t},\n\n\t\tpostMixInProperties: function(){\n\t\t\tvar _nlsResources = i18n.getLocalization(\"dijit\", \"common\");\n\t\t\tlang.mixin(this, _nlsResources);\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\tpostCreate: function(){\n\t\t\tdomStyle.set(this.domNode, {\n\t\t\t\tdisplay: \"none\",\n\t\t\t\tposition: \"absolute\"\n\t\t\t});\n\t\t\tthis.ownerDocumentBody.appendChild(this.domNode);\n\n\t\t\tthis.inherited(arguments);\n\n\t\t\taspect.after(this, \"onExecute\", lang.hitch(this, \"hide\"), true);\n\t\t\taspect.after(this, \"onCancel\", lang.hitch(this, \"hide\"), true);\n\t\t\ton(this.closeButtonNode, touch.press, function(e){\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tthis._modalconnects = [];\n\t\t},\n\n\t\tonLoad: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when data has been loaded from an href.\n\t\t\t//\t\tUnlike most other callbacks, this function can be connected to (via `dojo.connect`)\n\t\t\t//\t\tbut should *not* be overridden.\n\t\t\t// tags:\n\t\t\t//\t\tcallback\n\n\t\t\t// when href is specified we need to reposition the dialog after the data is loaded\n\t\t\t// and find the focusable elements\n\t\t\tthis.resize();\n\t\t\tthis._position();\n\n\t\t\tif(this.autofocus && DialogLevelManager.isTop(this)){\n\t\t\t\tthis._getFocusItems();\n\t\t\t\tfocus.focus(this._firstFocusItem);\n\t\t\t}\n\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\tfocus: function(){\n\t\t\tthis._getFocusItems();\n\t\t\tfocus.focus(this._firstFocusItem);\n\t\t},\n\n\t\t_endDrag: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled after dragging the Dialog. Saves the position of the dialog in the viewport,\n\t\t\t//\t\tand also adjust position to be fully within the viewport, so user doesn't lose access to handle\n\t\t\tvar nodePosition = domGeometry.position(this.domNode),\n\t\t\t\tviewport = winUtils.getBox(this.ownerDocument);\n\t\t\tnodePosition.y = Math.min(Math.max(nodePosition.y, 0), (viewport.h - nodePosition.h));\n\t\t\tnodePosition.x = Math.min(Math.max(nodePosition.x, 0), (viewport.w - nodePosition.w));\n\t\t\tthis._relativePosition = nodePosition;\n\t\t\tthis._position();\n\t\t},\n\n\t\t_setup: function(){\n\t\t\t// summary:\n\t\t\t//\t\tStuff we need to do before showing the Dialog for the first\n\t\t\t//\t\ttime (but we defer it until right beforehand, for\n\t\t\t//\t\tperformance reasons).\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\n\t\t\tvar node = this.domNode;\n\n\t\t\tif(this.titleBar && this.draggable){\n\t\t\t\tthis._moveable = new ((has(\"ie\") == 6) ? TimedMoveable // prevent overload, see #5285\n\t\t\t\t\t: Moveable)(node, { handle: this.titleBar });\n\t\t\t\taspect.after(this._moveable, \"onMoveStop\", lang.hitch(this, \"_endDrag\"), true);\n\t\t\t}else{\n\t\t\t\tdomClass.add(node, \"dijitDialogFixed\");\n\t\t\t}\n\n\t\t\tthis.underlayAttrs = {\n\t\t\t\tdialogId: this.id,\n\t\t\t\t\"class\": array.map(this[\"class\"].split(/\\s/),function(s){\n\t\t\t\t\treturn s + \"_underlay\";\n\t\t\t\t}).join(\" \"),\n\t\t\t\t_onKeyDown: lang.hitch(this, \"_onKey\"),\n\t\t\t\townerDocument: this.ownerDocument\n\t\t\t};\n\t\t},\n\n\t\t_size: function(){\n\t\t\t// TODO: remove for 2.0\n\t\t\tthis.resize();\n\t\t},\n\n\t\t_position: function(){\n\t\t\t// summary:\n\t\t\t//\t\tPosition the dialog in the viewport. If no relative offset\n\t\t\t//\t\tin the viewport has been determined (by dragging, for instance),\n\t\t\t//\t\tcenter the dialog. Otherwise, use the Dialog's stored relative offset,\n\t\t\t//\t\tclipped to fit inside the viewport (which may have been shrunk).\n\t\t\t//\t\tFinally, adjust position according to viewport's scroll.\n\n\t\t\tif(!domClass.contains(this.ownerDocumentBody, \"dojoMove\")){ // don't do anything if called during auto-scroll\n\t\t\t\tvar node = this.domNode,\n\t\t\t\t\tviewport = winUtils.getBox(this.ownerDocument),\n\t\t\t\t\tp = this._relativePosition,\n\t\t\t\t\tbb = domGeometry.position(node),\n\t\t\t\t\tl = Math.floor(viewport.l + (p ? Math.min(p.x, viewport.w - bb.w) : (viewport.w - bb.w) / 2)),\n\t\t\t\t\tt = Math.floor(viewport.t + (p ? Math.min(p.y, viewport.h - bb.h) : (viewport.h - bb.h) / 2));\n\n\t\t\t\tdomStyle.set(node, {\n\t\t\t\t\tleft: l + \"px\",\n\t\t\t\t\ttop: t + \"px\"\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t_onKey: function(/*Event*/ evt){\n\t\t\t// summary:\n\t\t\t//\t\tHandles the keyboard events for accessibility reasons\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\n\t\t\tif(evt.keyCode == keys.TAB){\n\t\t\t\tthis._getFocusItems();\n\t\t\t\tvar node = evt.target;\n\t\t\t\tif(this._firstFocusItem == this._lastFocusItem){\n\t\t\t\t\t// don't move focus anywhere, but don't allow browser to move focus off of dialog either\n\t\t\t\t\tevt.stopPropagation();\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t}else if(node == this._firstFocusItem && evt.shiftKey){\n\t\t\t\t\t// if we are shift-tabbing from first focusable item in dialog, send focus to last item\n\t\t\t\t\tfocus.focus(this._lastFocusItem);\n\t\t\t\t\tevt.stopPropagation();\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t}else if(node == this._lastFocusItem && !evt.shiftKey){\n\t\t\t\t\t// if we are tabbing from last focusable item in dialog, send focus to first item\n\t\t\t\t\tfocus.focus(this._firstFocusItem);\n\t\t\t\t\tevt.stopPropagation();\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t}\n\t\t\t}else if(this.closable && evt.keyCode == keys.ESCAPE){\n\t\t\t\tthis.onCancel();\n\t\t\t\tevt.stopPropagation();\n\t\t\t\tevt.preventDefault();\n\t\t\t}\n\t\t},\n\n\t\tshow: function(){\n\t\t\t// summary:\n\t\t\t//\t\tDisplay the dialog\n\t\t\t// returns: dojo/promise/Promise\n\t\t\t//\t\tPromise object that resolves when the display animation is complete\n\n\t\t\tif(this.open){\n\t\t\t\treturn resolvedDeferred.promise;\n\t\t\t}\n\n\t\t\tif(!this._started){\n\t\t\t\tthis.startup();\n\t\t\t}\n\n\t\t\t// first time we show the dialog, there's some initialization stuff to do\n\t\t\tif(!this._alreadyInitialized){\n\t\t\t\tthis._setup();\n\t\t\t\tthis._alreadyInitialized = true;\n\t\t\t}\n\n\t\t\tif(this._fadeOutDeferred){\n\t\t\t\t// There's a hide() operation in progress, so cancel it, but still call DialogLevelManager.hide()\n\t\t\t\t// as though the hide() completed, in preparation for the DialogLevelManager.show() call below.\n\t\t\t\tthis._fadeOutDeferred.cancel();\n\t\t\t\tDialogLevelManager.hide(this);\n\t\t\t}\n\n\t\t\t// Recenter Dialog if user scrolls browser. Connecting to document doesn't work on IE, need to use window.\n\t\t\t// Be sure that event object doesn't get passed to resize() method, because it's expecting an optional\n\t\t\t// {w: ..., h:...} arg.\n\t\t\tvar win = winUtils.get(this.ownerDocument);\n\t\t\tthis._modalconnects.push(on(win, \"scroll\", lang.hitch(this, \"resize\", null)));\n\n\t\t\tthis._modalconnects.push(on(this.domNode, \"keydown\", lang.hitch(this, \"_onKey\")));\n\n\t\t\tdomStyle.set(this.domNode, {\n\t\t\t\topacity: 0,\n\t\t\t\tdisplay: \"\"\n\t\t\t});\n\n\t\t\tthis._set(\"open\", true);\n\t\t\tthis._onShow(); // lazy load trigger\n\n\t\t\tthis.resize();\n\t\t\tthis._position();\n\n\t\t\t// fade-in Animation object, setup below\n\t\t\tvar fadeIn;\n\n\t\t\tthis._fadeInDeferred = new Deferred(lang.hitch(this, function(){\n\t\t\t\tfadeIn.stop();\n\t\t\t\tdelete this._fadeInDeferred;\n\t\t\t}));\n\t\t\tthis._fadeInDeferred.then(undefined, nop);\t// avoid spurious CancelError message to console\n\n\t\t\t// If delay is 0, code below will delete this._fadeInDeferred instantly, so grab promise while we can.\n\t\t\tvar promise = this._fadeInDeferred.promise;\n\n\t\t\tfadeIn = fx.fadeIn({\n\t\t\t\tnode: this.domNode,\n\t\t\t\tduration: this.duration,\n\t\t\t\tbeforeBegin: lang.hitch(this, function(){\n\t\t\t\t\tDialogLevelManager.show(this, this.underlayAttrs);\n\t\t\t\t}),\n\t\t\t\tonEnd: lang.hitch(this, function(){\n\t\t\t\t\tif(this.autofocus && DialogLevelManager.isTop(this)){\n\t\t\t\t\t\t// find focusable items each time dialog is shown since if dialog contains a widget the\n\t\t\t\t\t\t// first focusable items can change\n\t\t\t\t\t\tthis._getFocusItems();\n\t\t\t\t\t\tfocus.focus(this._firstFocusItem);\n\t\t\t\t\t}\n\t\t\t\t\tthis._fadeInDeferred.resolve(true);\n\t\t\t\t\tdelete this._fadeInDeferred;\n\t\t\t\t})\n\t\t\t}).play();\n\n\t\t\treturn promise;\n\t\t},\n\n\t\thide: function(){\n\t\t\t// summary:\n\t\t\t//\t\tHide the dialog\n\t\t\t// returns: dojo/promise/Promise\n\t\t\t//\t\tPromise object that resolves when the display animation is complete\n\n\t\t\t// If we haven't been initialized yet then we aren't showing and we can just return.\n\t\t\t// Likewise if we are already hidden, or are currently fading out.\n\t\t\tif(!this._alreadyInitialized || !this.open){\n\t\t\t\treturn resolvedDeferred.promise;\n\t\t\t}\n\t\t\tif(this._fadeInDeferred){\n\t\t\t\tthis._fadeInDeferred.cancel();\n\t\t\t}\n\n\t\t\t// fade-in Animation object, setup below\n\t\t\tvar fadeOut;\n\n\t\t\tthis._fadeOutDeferred = new Deferred(lang.hitch(this, function(){\n\t\t\t\tfadeOut.stop();\n\t\t\t\tdelete this._fadeOutDeferred;\n\t\t\t}));\n\t\t\tthis._fadeOutDeferred.then(undefined, nop);\t// avoid spurious CancelError message to console\n\n\t\t\t// fire onHide when the promise resolves.\n\t\t\tthis._fadeOutDeferred.then(lang.hitch(this, 'onHide'));\n\n\t\t\t// If delay is 0, code below will delete this._fadeOutDeferred instantly, so grab promise while we can.\n\t\t\tvar promise = this._fadeOutDeferred.promise;\n\n\t\t\tfadeOut = fx.fadeOut({\n\t\t\t\tnode: this.domNode,\n\t\t\t\tduration: this.duration,\n\t\t\t\tonEnd: lang.hitch(this, function(){\n\t\t\t\t\tthis.domNode.style.display = \"none\";\n\t\t\t\t\tDialogLevelManager.hide(this);\n\t\t\t\t\tthis._fadeOutDeferred.resolve(true);\n\t\t\t\t\tdelete this._fadeOutDeferred;\n\t\t\t\t})\n\t\t\t}).play();\n\n\t\t\tif(this._scrollConnected){\n\t\t\t\tthis._scrollConnected = false;\n\t\t\t}\n\t\t\tvar h;\n\t\t\twhile(h = this._modalconnects.pop()){\n\t\t\t\th.remove();\n\t\t\t}\n\n\t\t\tif(this._relativePosition){\n\t\t\t\tdelete this._relativePosition;\n\t\t\t}\n\t\t\tthis._set(\"open\", false);\n\n\t\t\treturn promise;\n\t\t},\n\n\t\tresize: function(dim){\n\t\t\t// summary:\n\t\t\t//\t\tCalled with no argument when viewport scrolled or viewport size changed. Adjusts Dialog as\n\t\t\t//\t\tnecessary to keep it visible.\n\t\t\t//\n\t\t\t//\t\tCan also be called with an argument (by dojox/layout/ResizeHandle etc.) to explicitly set the\n\t\t\t//\t\tsize of the dialog.\n\t\t\t// dim: Object?\n\t\t\t//\t\tOptional dimension object like {w: 200, h: 300}\n\n\t\t\tif(this.domNode.style.display != \"none\"){\n\n\t\t\t\tthis._checkIfSingleChild();\n\n\t\t\t\tif(!dim){\n\t\t\t\t\tif(this._shrunk){\n\t\t\t\t\t\t// If we earlier shrunk the dialog to fit in the viewport, reset it to its natural size\n\t\t\t\t\t\tif(this._singleChild){\n\t\t\t\t\t\t\tif(typeof this._singleChildOriginalStyle != \"undefined\"){\n\t\t\t\t\t\t\t\tthis._singleChild.domNode.style.cssText = this._singleChildOriginalStyle;\n\t\t\t\t\t\t\t\tdelete this._singleChildOriginalStyle;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tarray.forEach([this.domNode, this.containerNode, this.titleBar, this.actionBarNode], function(node){\n\t\t\t\t\t\t\tif(node){\t// because titleBar may not be defined\n\t\t\t\t\t\t\t\tdomStyle.set(node, {\n\t\t\t\t\t\t\t\t\tposition: \"static\",\n\t\t\t\t\t\t\t\t\twidth: \"auto\",\n\t\t\t\t\t\t\t\t\theight: \"auto\"\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.domNode.style.position = \"absolute\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// If necessary, shrink Dialog to fit in viewport and have some space around it\n\t\t\t\t\t// to indicate that it's a popup. This will also compensate for possible scrollbars on viewport.\n\t\t\t\t\tvar viewport = winUtils.getBox(this.ownerDocument);\n\t\t\t\t\tviewport.w *= this.maxRatio;\n\t\t\t\t\tviewport.h *= this.maxRatio;\n\n\t\t\t\t\tvar bb = domGeometry.position(this.domNode);\n\t\t\t\t\tthis._shrunk = false;\n\t\t\t\t\t// First check and limit width, because limiting the width may increase the height due to word wrapping.\n\t\t\t\t\tif(bb.w >= viewport.w){\n\t\t\t\t\t\tdim = {\n\t\t\t\t\t\t\tw: viewport.w\n\t\t\t\t\t\t};\n\t\t\t\t\t\tdomGeometry.setMarginBox(this.domNode, dim);\n\t\t\t\t\t\tbb = domGeometry.position(this.domNode);\n\t\t\t\t\t\tthis._shrunk = true;\n\t\t\t\t\t}\n\t\t\t\t\t// Now check and limit the height\n\t\t\t\t\tif(bb.h >= viewport.h){\n\t\t\t\t\t\tif(!dim){\n\t\t\t\t\t\t\tdim = {\n\t\t\t\t\t\t\t\tw: bb.w\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdim.h = viewport.h;\n\t\t\t\t\t\tthis._shrunk = true;\n\t\t\t\t\t}\n\t\t\t\t\tif(dim){\n\t\t\t\t\t\tif(!dim.w){\n\t\t\t\t\t\t\tdim.w = bb.w;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(!dim.h){\n\t\t\t\t\t\t\tdim.h = bb.h;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Code to run if user has requested an explicit size, or the shrinking code above set an implicit size\n\t\t\t\tif(dim){\n\t\t\t\t\t// Set this.domNode to specified size\n\t\t\t\t\tdomGeometry.setMarginBox(this.domNode, dim);\n\n\t\t\t\t\t// And then size this.containerNode\n\t\t\t\t\tvar layoutNodes = [];\n\t\t\t\t\tif(this.titleBar){\n\t\t\t\t\t\tlayoutNodes.push({domNode: this.titleBar, region: \"top\"});\n\t\t\t\t\t}\n\t\t\t\t\tif(this.actionBarNode){\n\t\t\t\t\t\tlayoutNodes.push({domNode: this.actionBarNode, region: \"bottom\"});\n\t\t\t\t\t}\n\t\t\t\t\tvar centerSize = {domNode: this.containerNode, region: \"center\"};\n\t\t\t\t\tlayoutNodes.push(centerSize);\n\n\t\t\t\t\tvar contentDim = utils.marginBox2contentBox(this.domNode, dim);\n\t\t\t\t\tutils.layoutChildren(this.domNode, contentDim, layoutNodes);\n\n\t\t\t\t\t// And then if this.containerNode has a single layout widget child, size it too.\n\t\t\t\t\t// Otherwise, make this.containerNode show a scrollbar if it's overflowing.\n\t\t\t\t\tif(this._singleChild){\n\t\t\t\t\t\tvar cb = utils.marginBox2contentBox(this.containerNode, centerSize);\n\t\t\t\t\t\t// note: if containerNode has padding singleChildSize will have l and t set,\n\t\t\t\t\t\t// but don't pass them to resize() or it will doubly-offset the child\n\t\t\t\t\t\tthis._singleChild.resize({w: cb.w, h: cb.h});\n\t\t\t\t\t\t// TODO: save original size for restoring it on another show()?\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.containerNode.style.overflow = \"auto\";\n\t\t\t\t\t\tthis._layoutChildren();\t\t// send resize() event to all child widgets\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis._layoutChildren();\t\t// send resize() event to all child widgets\n\t\t\t\t}\n\n\t\t\t\tif(!has(\"touch\") && !dim){\n\t\t\t\t\t// If the user has scrolled the viewport then reposition the Dialog. But don't do it for touch\n\t\t\t\t\t// devices, because it will counteract when a keyboard pops up and then the browser auto-scrolls\n\t\t\t\t\t// the focused node into view.\n\t\t\t\t\tthis._position();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_layoutChildren: function(){\n\t\t\t// Override _ContentPaneResizeMixin._layoutChildren because even when there's just a single layout child\n\t\t\t// widget, sometimes we don't want to size it explicitly (i.e. to pass a dim argument to resize())\n\n\t\t\tarray.forEach(this.getChildren(), function(widget){\n\t\t\t\tif(widget.resize){\n\t\t\t\t\twidget.resize();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tif(this._fadeInDeferred){\n\t\t\t\tthis._fadeInDeferred.cancel();\n\t\t\t}\n\t\t\tif(this._fadeOutDeferred){\n\t\t\t\tthis._fadeOutDeferred.cancel();\n\t\t\t}\n\t\t\tif(this._moveable){\n\t\t\t\tthis._moveable.destroy();\n\t\t\t}\n\t\t\tvar h;\n\t\t\twhile(h = this._modalconnects.pop()){\n\t\t\t\th.remove();\n\t\t\t}\n\n\t\t\tDialogLevelManager.hide(this);\n\n\t\t\tthis.inherited(arguments);\n\t\t}\n\t});\n\n\tif(has(\"dojo-bidi\")){\n\t\t_DialogBase = declare(\"dijit._DialogBase\", _DialogBase, {\n\t\t\t_setTitleAttr: function(/*String*/ title){\n\t\t\t\tthis._set(\"title\", title);\n\t\t\t\tthis.titleNode.innerHTML = title;\n\t\t\t\tthis.applyTextDir(this.titleNode);\n\t\t\t},\n\n\t\t\t_setTextDirAttr: function(textDir){\n\t\t\t\tif(this._created && this.textDir != textDir){\n\t\t\t\t\tthis._set(\"textDir\", textDir);\n\t\t\t\t\tthis.set(\"title\", this.title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tvar Dialog = declare(\"dijit.Dialog\", [ContentPane, _DialogBase], {\n\t\t// summary:\n\t\t//\t\tA modal dialog Widget.\n\t\t// description:\n\t\t//\t\tPops up a modal dialog window, blocking access to the screen\n\t\t//\t\tand also graying out the screen Dialog is extended from\n\t\t//\t\tContentPane so it supports all the same parameters (href, etc.).\n\t\t// example:\n\t\t// |\t<div data-dojo-type=\"dijit/Dialog\" data-dojo-props=\"href: 'test.html'\"></div>\n\t\t// example:\n\t\t// |\tvar foo = new Dialog({ title: \"test dialog\", content: \"test content\" });\n\t\t// |\tfoo.placeAt(win.body());\n\t\t// |\tfoo.startup();\n\t});\n\tDialog._DialogBase = _DialogBase;\t// for monkey patching and dojox/widget/DialogSimple\n\n\tvar DialogLevelManager = Dialog._DialogLevelManager = {\n\t\t// summary:\n\t\t//\t\tControls the various active \"levels\" on the page, starting with the\n\t\t//\t\tstuff initially visible on the page (at z-index 0), and then having an entry for\n\t\t//\t\teach Dialog shown.\n\n\t\t_beginZIndex: 950,\n\n\t\tshow: function(/*dijit/_WidgetBase*/ dialog, /*Object*/ underlayAttrs){\n\t\t\t// summary:\n\t\t\t//\t\tCall right before fade-in animation for new dialog.\n\t\t\t//\t\tSaves current focus, displays/adjusts underlay for new dialog,\n\t\t\t//\t\tand sets the z-index of the dialog itself.\n\t\t\t//\n\t\t\t//\t\tNew dialog will be displayed on top of all currently displayed dialogs.\n\t\t\t//\n\t\t\t//\t\tCaller is responsible for setting focus in new dialog after the fade-in\n\t\t\t//\t\tanimation completes.\n\n\t\t\t// Save current focus\n\t\t\tds[ds.length - 1].focus = focus.curNode;\n\n\t\t\t// Set z-index a bit above previous dialog\n\t\t\tvar zIndex = ds[ds.length - 1].dialog ? ds[ds.length - 1].zIndex + 2 : Dialog._DialogLevelManager._beginZIndex;\n\t\t\tdomStyle.set(dialog.domNode, 'zIndex', zIndex);\n\n\t\t\t// Display the underlay, or if already displayed then adjust for this new dialog\n\t\t\tDialogUnderlay.show(underlayAttrs, zIndex - 1);\n\n\t\t\tds.push({dialog: dialog, underlayAttrs: underlayAttrs, zIndex: zIndex});\n\t\t},\n\n\t\thide: function(/*dijit/_WidgetBase*/ dialog){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when the specified dialog is hidden/destroyed, after the fade-out\n\t\t\t//\t\tanimation ends, in order to reset page focus, fix the underlay, etc.\n\t\t\t//\t\tIf the specified dialog isn't open then does nothing.\n\t\t\t//\n\t\t\t//\t\tCaller is responsible for either setting display:none on the dialog domNode,\n\t\t\t//\t\tor calling dijit/popup.hide(), or removing it from the page DOM.\n\n\t\t\tif(ds[ds.length - 1].dialog == dialog){\n\t\t\t\t// Removing the top (or only) dialog in the stack, return focus\n\t\t\t\t// to previous dialog\n\n\t\t\t\tds.pop();\n\n\t\t\t\tvar pd = ds[ds.length - 1];\t// the new active dialog (or the base page itself)\n\n\t\t\t\t// Adjust underlay\n\t\t\t\tif(ds.length == 1){\n\t\t\t\t\t// Returning to original page. Hide the underlay.\n\t\t\t\t\tDialogUnderlay.hide();\n\t\t\t\t}else{\n\t\t\t\t\t// Popping back to previous dialog, adjust underlay.\n\t\t\t\t\tDialogUnderlay.show(pd.underlayAttrs, pd.zIndex - 1);\n\t\t\t\t}\n\n\t\t\t\t// Adjust focus.\n\t\t\t\t// TODO: regardless of setting of dialog.refocus, if the exeucte() method set focus somewhere,\n\t\t\t\t// don't shift focus back to button. Note that execute() runs at the start of the fade-out but\n\t\t\t\t// this code runs later, at the end of the fade-out. Menu has code like this.\n\t\t\t\tif(dialog.refocus){\n\t\t\t\t\t// If we are returning control to a previous dialog but for some reason\n\t\t\t\t\t// that dialog didn't have a focused field, set focus to first focusable item.\n\t\t\t\t\t// This situation could happen if two dialogs appeared at nearly the same time,\n\t\t\t\t\t// since a dialog doesn't set it's focus until the fade-in is finished.\n\t\t\t\t\tvar focus = pd.focus;\n\t\t\t\t\tif(pd.dialog && (!focus || !dom.isDescendant(focus, pd.dialog.domNode))){\n\t\t\t\t\t\tpd.dialog._getFocusItems();\n\t\t\t\t\t\tfocus = pd.dialog._firstFocusItem;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(focus){\n\t\t\t\t\t\t// Refocus the button that spawned the Dialog. This will fail in corner cases including\n\t\t\t\t\t\t// page unload on IE, because the dijit/form/Button that launched the Dialog may get destroyed\n\t\t\t\t\t\t// before this code runs. (#15058)\n\t\t\t\t\t\ttry{\n\t\t\t\t\t\t\tfocus.focus();\n\t\t\t\t\t\t}catch(e){\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t// Removing a dialog out of order (#9944, #10705).\n\t\t\t\t// Don't need to mess with underlay or z-index or anything.\n\t\t\t\tvar idx = array.indexOf(array.map(ds, function(elem){\n\t\t\t\t\treturn elem.dialog;\n\t\t\t\t}), dialog);\n\t\t\t\tif(idx != -1){\n\t\t\t\t\tds.splice(idx, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tisTop: function(/*dijit/_WidgetBase*/ dialog){\n\t\t\t// summary:\n\t\t\t//\t\tReturns true if specified Dialog is the top in the task\n\t\t\treturn ds[ds.length - 1].dialog == dialog;\n\t\t}\n\t};\n\n\t// Stack representing the various active \"levels\" on the page, starting with the\n\t// stuff initially visible on the page (at z-index 0), and then having an entry for\n\t// each Dialog shown.\n\t// Each element in stack has form {\n\t//\t\tdialog: dialogWidget,\n\t//\t\tfocus: returnFromGetFocus(),\n\t//\t\tunderlayAttrs: attributes to set on underlay (when this widget is active)\n\t// }\n\tvar ds = Dialog._dialogStack = [\n\t\t{dialog: null, focus: null, underlayAttrs: null} // entry for stuff at z-index: 0\n\t];\n\n\t// If focus was accidentally removed from the dialog, such as if the user clicked a blank\n\t// area of the screen, or clicked the browser's address bar and then tabbed into the page,\n\t// then refocus. Won't do anything if focus was removed because the Dialog was closed, or\n\t// because a new Dialog popped up on top of the old one, or when focus moves to popups\n\tfocus.watch(\"curNode\", function(attr, oldNode, node){\n \t\t// Note: if no dialogs, ds.length==1 but ds[ds.length-1].dialog is null\n\t\tvar topDialog = ds[ds.length - 1].dialog;\n\n\t\t// If a node was focused, and there's a Dialog currently showing, and not in the process of fading out...\n\t\t// Ignore focus events on other document though because it's likely an Editor inside of the Dialog.\n\t\tif(node && topDialog && !topDialog._fadeOutDeferred && node.ownerDocument == topDialog.ownerDocument){\n\t\t\t// If the node that was focused is inside the dialog or in a popup, even a context menu that isn't\n\t\t\t// technically a descendant of the the dialog, don't do anything.\n\t\t\tdo{\n\t\t\t\tif(node == topDialog.domNode || domClass.contains(node, \"dijitPopup\")){ return; }\n\t\t\t}while(node = node.parentNode);\n\n\t\t\t// Otherwise, return focus to the dialog. Use a delay to avoid confusing dijit/focus code's\n\t\t\t// own tracking of focus.\n\t\t\ttopDialog.focus();\n\t\t}\n\t});\n\n\t// Back compat w/1.6, remove for 2.0\n\tif(has(\"dijit-legacy-requires\")){\n\t\tready(0, function(){\n\t\t\tvar requires = [\"dijit/TooltipDialog\"];\n\t\t\trequire(requires);\t// use indirection so modules not rolled into a build\n\t\t});\n\t}\n\n\treturn Dialog;\n});\n","define([\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/_base/lang\", // lang.hitch\n\t\"dojo/aspect\", // aspect.after\n\t\"dojo/dom-attr\", // domAttr.set\n\t\"dojo/dom-style\", // domStyle.getComputedStyle\n\t\"dojo/on\",\n\t\"dojo/window\", // winUtils.getBox, winUtils.get\n\t\"./_Widget\",\n\t\"./_TemplatedMixin\",\n\t\"./BackgroundIframe\",\n\t\"./Viewport\",\n\t\"./main\" // for back-compat, exporting dijit._underlay (remove in 2.0)\n], function(declare, lang, aspect, domAttr, domStyle, on,\n\t\t\twinUtils, _Widget, _TemplatedMixin, BackgroundIframe, Viewport, dijit){\n\n\t// module:\n\t//\t\tdijit/DialogUnderlay\n\n\tvar DialogUnderlay = declare(\"dijit.DialogUnderlay\", [_Widget, _TemplatedMixin], {\n\t\t// summary:\n\t\t//\t\tA component used to block input behind a `dijit/Dialog`.\n\t\t//\n\t\t//\t\tNormally this class should not be instantiated directly, but rather shown and hidden via\n\t\t//\t\tDialogUnderlay.show() and DialogUnderlay.hide(). And usually the module is not accessed directly\n\t\t//\t\tat all, since the underlay is shown and hidden by Dialog.DialogLevelManager.\n\t\t//\n\t\t//\t\tThe underlay itself can be styled based on and id:\n\t\t//\t|\t#myDialog_underlay { background-color:red; }\n\t\t//\n\t\t//\t\tIn the case of `dijit.Dialog`, this id is based on the id of the Dialog,\n\t\t//\t\tsuffixed with _underlay.\n\n\t\t// Template has two divs; outer div is used for fade-in/fade-out, and also to hold background iframe.\n\t\t// Inner div has opacity specified in CSS file.\n\t\ttemplateString: \"<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' tabIndex='-1' data-dojo-attach-point='node'></div></div>\",\n\n\t\t// Parameters on creation or updatable later\n\n\t\t// dialogId: String\n\t\t//\t\tId of the dialog.... DialogUnderlay's id is based on this id\n\t\tdialogId: \"\",\n\n\t\t// class: String\n\t\t//\t\tThis class name is used on the DialogUnderlay node, in addition to dijitDialogUnderlay\n\t\t\"class\": \"\",\n\n\t\t// This will get overwritten as soon as show() is call, but leave an empty array in case hide() or destroy()\n\t\t// is called first. The array is shared between instances but that's OK because we never write into it.\n\t\t_modalConnects: [],\n\n\t\t_setDialogIdAttr: function(id){\n\t\t\tdomAttr.set(this.node, \"id\", id + \"_underlay\");\n\t\t\tthis._set(\"dialogId\", id);\n\t\t},\n\n\t\t_setClassAttr: function(clazz){\n\t\t\tthis.node.className = \"dijitDialogUnderlay \" + clazz;\n\t\t\tthis._set(\"class\", clazz);\n\t\t},\n\n\t\tpostCreate: function(){\n\t\t\t// Append the underlay to the body\n\t\t\tthis.ownerDocumentBody.appendChild(this.domNode);\n\n\t\t\tthis.own(on(this.domNode, \"keydown\", lang.hitch(this, \"_onKeyDown\")));\n\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\tlayout: function(){\n\t\t\t// summary:\n\t\t\t//\t\tSets the background to the size of the viewport\n\t\t\t//\n\t\t\t// description:\n\t\t\t//\t\tSets the background to the size of the viewport (rather than the size\n\t\t\t//\t\tof the document) since we need to cover the whole browser window, even\n\t\t\t//\t\tif the document is only a few lines long.\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\n\t\t\tvar is = this.node.style,\n\t\t\t\tos = this.domNode.style;\n\n\t\t\t// hide the background temporarily, so that the background itself isn't\n\t\t\t// causing scrollbars to appear (might happen when user shrinks browser\n\t\t\t// window and then we are called to resize)\n\t\t\tos.display = \"none\";\n\n\t\t\t// then resize and show\n\t\t\tvar viewport = winUtils.getBox(this.ownerDocument);\n\t\t\tos.top = viewport.t + \"px\";\n\t\t\tos.left = viewport.l + \"px\";\n\t\t\tis.width = viewport.w + \"px\";\n\t\t\tis.height = viewport.h + \"px\";\n\t\t\tos.display = \"block\";\n\t\t},\n\n\t\tshow: function(){\n\t\t\t// summary:\n\t\t\t//\t\tShow the dialog underlay\n\t\t\tthis.domNode.style.display = \"block\";\n\t\t\tthis.open = true;\n\t\t\tthis.layout();\n\t\t\tthis.bgIframe = new BackgroundIframe(this.domNode);\n\n\t\t\tvar win = winUtils.get(this.ownerDocument);\n\t\t\tthis._modalConnects = [\n\t\t\t\tViewport.on(\"resize\", lang.hitch(this, \"layout\")),\n\t\t\t\ton(win, \"scroll\", lang.hitch(this, \"layout\"))\n\t\t\t];\n\n\t\t},\n\n\t\thide: function(){\n\t\t\t// summary:\n\t\t\t//\t\tHides the dialog underlay\n\n\t\t\tthis.bgIframe.destroy();\n\t\t\tdelete this.bgIframe;\n\t\t\tthis.domNode.style.display = \"none\";\n\t\t\twhile(this._modalConnects.length){ (this._modalConnects.pop()).remove(); }\n\t\t\tthis.open = false;\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\twhile(this._modalConnects.length){ (this._modalConnects.pop()).remove(); }\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\t_onKeyDown: function(){\n\t\t\t// summary:\n\t\t\t//\t\tExtension point so Dialog can monitor keyboard events on the underlay.\n\t\t}\n\t});\n\n\tDialogUnderlay.show = function(/*Object*/ attrs, /*Number*/ zIndex){\n\t\t// summary:\n\t\t//\t\tDisplay the underlay with the given attributes set. If the underlay is already displayed,\n\t\t//\t\tthen adjust it's attributes as specified.\n\t\t// attrs:\n\t\t//\t\tThe parameters to create DialogUnderlay with.\n\t\t// zIndex:\n\t\t//\t\tzIndex of the underlay\n\n\t\tvar underlay = DialogUnderlay._singleton;\n\t\tif(!underlay || underlay._destroyed){\n\t\t\tunderlay = dijit._underlay = DialogUnderlay._singleton = new DialogUnderlay(attrs);\n\t\t}else{\n\t\t\tif(attrs){ underlay.set(attrs); }\n\t\t}\n\t\tdomStyle.set(underlay.domNode, 'zIndex', zIndex);\n\t\tif(!underlay.open){\n\t\t\tunderlay.show();\n\t\t}\n\t};\n\n\tDialogUnderlay.hide = function(){\n\t\t// summary:\n\t\t//\t\tHide the underlay.\n\n\t\t// Guard code in case the underlay widget has already been destroyed\n\t\t// because we are being called during page unload (when all widgets are destroyed)\n\t\tvar underlay = DialogUnderlay._singleton;\n\t\tif(underlay && !underlay._destroyed){\n\t\t\tunderlay.hide();\n\t\t}\n\t};\n\n\treturn DialogUnderlay;\n});\n","define([\n\t\"dojo/_base/array\", // array.forEach array.indexOf array.map\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/_base/fx\", // fx.fadeIn fx.fadeOut\n\t\"dojo/dom\", // dom.byId\n\t\"dojo/dom-class\", // domClass.add\n\t\"dojo/dom-geometry\", // domGeometry.position\n\t\"dojo/dom-style\", // domStyle.set, domStyle.get\n\t\"dojo/_base/lang\", // lang.hitch lang.isArrayLike\n\t\"dojo/mouse\",\n\t\"dojo/on\",\n\t\"dojo/sniff\", // has(\"ie\"), has(\"trident\")\n\t\"./_base/manager\",\t// manager.defaultDuration\n\t\"./place\",\n\t\"./_Widget\",\n\t\"./_TemplatedMixin\",\n\t\"./BackgroundIframe\",\n\t\"dojo/text!./templates/Tooltip.html\",\n\t\"./main\"\t\t// sets dijit.showTooltip etc. for back-compat\n], function(array, declare, fx, dom, domClass, domGeometry, domStyle, lang, mouse, on, has,\n\t\t\tmanager, place, _Widget, _TemplatedMixin, BackgroundIframe, template, dijit){\n\n\t// module:\n\t//\t\tdijit/Tooltip\n\n\n\t// TODO: Tooltip should really share more positioning code with TooltipDialog, like:\n\t//\t\t- the orient() method\n\t//\t\t- the connector positioning code in show()\n\t//\t\t- the dijitTooltip[Dialog] class\n\t//\n\t// The problem is that Tooltip's implementation supplies it's own <iframe> and interacts directly\n\t// with dijit/place, rather than going through dijit/popup like TooltipDialog and other popups (ex: Menu).\n\n\tvar MasterTooltip = declare(\"dijit._MasterTooltip\", [_Widget, _TemplatedMixin], {\n\t\t// summary:\n\t\t//\t\tInternal widget that holds the actual tooltip markup,\n\t\t//\t\twhich occurs once per page.\n\t\t//\t\tCalled by Tooltip widgets which are just containers to hold\n\t\t//\t\tthe markup\n\t\t// tags:\n\t\t//\t\tprotected\n\n\t\t// duration: Integer\n\t\t//\t\tMilliseconds to fade in/fade out\n\t\tduration: manager.defaultDuration,\n\n\t\ttemplateString: template,\n\n\t\tpostCreate: function(){\n\t\t\tthis.ownerDocumentBody.appendChild(this.domNode);\n\n\t\t\tthis.bgIframe = new BackgroundIframe(this.domNode);\n\n\t\t\t// Setup fade-in and fade-out functions.\n\t\t\tthis.fadeIn = fx.fadeIn({ node: this.domNode, duration: this.duration, onEnd: lang.hitch(this, \"_onShow\") });\n\t\t\tthis.fadeOut = fx.fadeOut({ node: this.domNode, duration: this.duration, onEnd: lang.hitch(this, \"_onHide\") });\n\t\t},\n\n\t\tshow: function(innerHTML, aroundNode, position, rtl, textDir, onMouseEnter, onMouseLeave){\n\t\t\t// summary:\n\t\t\t//\t\tDisplay tooltip w/specified contents to right of specified node\n\t\t\t//\t\t(To left if there's no space on the right, or if rtl == true)\n\t\t\t// innerHTML: String\n\t\t\t//\t\tContents of the tooltip\n\t\t\t// aroundNode: DomNode|dijit/place.__Rectangle\n\t\t\t//\t\tSpecifies that tooltip should be next to this node / area\n\t\t\t// position: String[]?\n\t\t\t//\t\tList of positions to try to position tooltip (ex: [\"right\", \"above\"])\n\t\t\t// rtl: Boolean?\n\t\t\t//\t\tCorresponds to `WidgetBase.dir` attribute, where false means \"ltr\" and true\n\t\t\t//\t\tmeans \"rtl\"; specifies GUI direction, not text direction.\n\t\t\t// textDir: String?\n\t\t\t//\t\tCorresponds to `WidgetBase.textdir` attribute; specifies direction of text.\n\t\t\t// onMouseEnter: Function?\n\t\t\t//\t\tCallback function for mouse enter on tooltip\n\t\t\t// onMouseLeave: Function?\n\t\t\t//\t\tCallback function for mouse leave on tooltip\n\n\t\t\tif(this.aroundNode && this.aroundNode === aroundNode && this.containerNode.innerHTML == innerHTML){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(this.fadeOut.status() == \"playing\"){\n\t\t\t\t// previous tooltip is being hidden; wait until the hide completes then show new one\n\t\t\t\tthis._onDeck=arguments;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.containerNode.innerHTML=innerHTML;\n\n\t\t\tif(textDir){\n\t\t\t\tthis.set(\"textDir\", textDir);\n\t\t\t}\n\n\t\t\tthis.containerNode.align = rtl? \"right\" : \"left\"; //fix the text alignment\n\n\t\t\tvar pos = place.around(this.domNode, aroundNode,\n\t\t\t\tposition && position.length ? position : Tooltip.defaultPosition, !rtl, lang.hitch(this, \"orient\"));\n\n\t\t\t// Position the tooltip connector for middle alignment.\n\t\t\t// This could not have been done in orient() since the tooltip wasn't positioned at that time.\n\t\t\tvar aroundNodeCoords = pos.aroundNodePos;\n\t\t\tif(pos.corner.charAt(0) == 'M' && pos.aroundCorner.charAt(0) == 'M'){\n\t\t\t\tthis.connectorNode.style.top = aroundNodeCoords.y + ((aroundNodeCoords.h - this.connectorNode.offsetHeight) >> 1) - pos.y + \"px\";\n\t\t\t\tthis.connectorNode.style.left = \"\";\n\t\t\t}else if(pos.corner.charAt(1) == 'M' && pos.aroundCorner.charAt(1) == 'M'){\n\t\t\t\tthis.connectorNode.style.left = aroundNodeCoords.x + ((aroundNodeCoords.w - this.connectorNode.offsetWidth) >> 1) - pos.x + \"px\";\n\t\t\t}else{\n\t\t\t\t// Not *-centered, but just above/below/after/before\n\t\t\t\tthis.connectorNode.style.left = \"\";\n\t\t\t\tthis.connectorNode.style.top = \"\";\n\t\t\t}\n\n\t\t\t// show it\n\t\t\tdomStyle.set(this.domNode, \"opacity\", 0);\n\t\t\tthis.fadeIn.play();\n\t\t\tthis.isShowingNow = true;\n\t\t\tthis.aroundNode = aroundNode;\n\n\t\t\tthis.onMouseEnter = onMouseEnter || noop;\n\t\t\tthis.onMouseLeave = onMouseLeave || noop;\n\t\t},\n\n\t\torient: function(/*DomNode*/ node, /*String*/ aroundCorner, /*String*/ tooltipCorner, /*Object*/ spaceAvailable, /*Object*/ aroundNodeCoords){\n\t\t\t// summary:\n\t\t\t//\t\tPrivate function to set CSS for tooltip node based on which position it's in.\n\t\t\t//\t\tThis is called by the dijit popup code. It will also reduce the tooltip's\n\t\t\t//\t\twidth to whatever width is available\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\tthis.connectorNode.style.top = \"\"; //reset to default\n\n\t\t\tvar heightAvailable = spaceAvailable.h,\n\t\t\t\twidthAvailable = spaceAvailable.w;\n\n\t\t\tnode.className = \"dijitTooltip \" +\n\t\t\t\t{\n\t\t\t\t\t\"MR-ML\": \"dijitTooltipRight\",\n\t\t\t\t\t\"ML-MR\": \"dijitTooltipLeft\",\n\t\t\t\t\t\"TM-BM\": \"dijitTooltipAbove\",\n\t\t\t\t\t\"BM-TM\": \"dijitTooltipBelow\",\n\t\t\t\t\t\"BL-TL\": \"dijitTooltipBelow dijitTooltipABLeft\",\n\t\t\t\t\t\"TL-BL\": \"dijitTooltipAbove dijitTooltipABLeft\",\n\t\t\t\t\t\"BR-TR\": \"dijitTooltipBelow dijitTooltipABRight\",\n\t\t\t\t\t\"TR-BR\": \"dijitTooltipAbove dijitTooltipABRight\",\n\t\t\t\t\t\"BR-BL\": \"dijitTooltipRight\",\n\t\t\t\t\t\"BL-BR\": \"dijitTooltipLeft\"\n\t\t\t\t}[aroundCorner + \"-\" + tooltipCorner];\n\n\t\t\t// reset width; it may have been set by orient() on a previous tooltip show()\n\t\t\tthis.domNode.style.width = \"auto\";\n\n\t\t\t// Reduce tooltip's width to the amount of width available, so that it doesn't overflow screen.\n\t\t\t// Note that sometimes widthAvailable is negative, but we guard against setting style.width to a\n\t\t\t// negative number since that causes an exception on IE.\n\t\t\tvar size = domGeometry.position(this.domNode);\n\t\t\tif(has(\"ie\") || has(\"trident\")){\n\t\t\t\t// workaround strange IE bug where setting width to offsetWidth causes words to wrap\n\t\t\t\tsize.w += 2;\n\t\t\t}\n\n\t\t\tvar width = Math.min((Math.max(widthAvailable,1)), size.w);\n\n\t\t\tdomGeometry.setMarginBox(this.domNode, {w: width});\n\n\t\t\t// Reposition the tooltip connector.\n\t\t\tif(tooltipCorner.charAt(0) == 'B' && aroundCorner.charAt(0) == 'B'){\n\t\t\t\tvar bb = domGeometry.position(node);\n\t\t\t\tvar tooltipConnectorHeight = this.connectorNode.offsetHeight;\n\t\t\t\tif(bb.h > heightAvailable){\n\t\t\t\t\t// The tooltip starts at the top of the page and will extend past the aroundNode\n\t\t\t\t\tvar aroundNodePlacement = heightAvailable - ((aroundNodeCoords.h + tooltipConnectorHeight) >> 1);\n\t\t\t\t\tthis.connectorNode.style.top = aroundNodePlacement + \"px\";\n\t\t\t\t\tthis.connectorNode.style.bottom = \"\";\n\t\t\t\t}else{\n\t\t\t\t\t// Align center of connector with center of aroundNode, except don't let bottom\n\t\t\t\t\t// of connector extend below bottom of tooltip content, or top of connector\n\t\t\t\t\t// extend past top of tooltip content\n\t\t\t\t\tthis.connectorNode.style.bottom = Math.min(\n\t\t\t\t\t\tMath.max(aroundNodeCoords.h/2 - tooltipConnectorHeight/2, 0),\n\t\t\t\t\t\tbb.h - tooltipConnectorHeight) + \"px\";\n\t\t\t\t\tthis.connectorNode.style.top = \"\";\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t// reset the tooltip back to the defaults\n\t\t\t\tthis.connectorNode.style.top = \"\";\n\t\t\t\tthis.connectorNode.style.bottom = \"\";\n\t\t\t}\n\n\t\t\treturn Math.max(0, size.w - widthAvailable);\n\t\t},\n\n\t\t_onShow: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled at end of fade-in operation\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\tif(has(\"ie\")){\n\t\t\t\t// the arrow won't show up on a node w/an opacity filter\n\t\t\t\tthis.domNode.style.filter=\"\";\n\t\t\t}\n\t\t},\n\n\t\thide: function(aroundNode){\n\t\t\t// summary:\n\t\t\t//\t\tHide the tooltip\n\n\t\t\tif(this._onDeck && this._onDeck[1] == aroundNode){\n\t\t\t\t// this hide request is for a show() that hasn't even started yet;\n\t\t\t\t// just cancel the pending show()\n\t\t\t\tthis._onDeck=null;\n\t\t\t}else if(this.aroundNode === aroundNode){\n\t\t\t\t// this hide request is for the currently displayed tooltip\n\t\t\t\tthis.fadeIn.stop();\n\t\t\t\tthis.isShowingNow = false;\n\t\t\t\tthis.aroundNode = null;\n\t\t\t\tthis.fadeOut.play();\n\t\t\t}else{\n\t\t\t\t// just ignore the call, it's for a tooltip that has already been erased\n\t\t\t}\n\n\t\t\tthis.onMouseEnter = this.onMouseLeave = noop;\n\t\t},\n\n\t\t_onHide: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled at end of fade-out operation\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\tthis.domNode.style.cssText=\"\";\t// to position offscreen again\n\t\t\tthis.containerNode.innerHTML=\"\";\n\t\t\tif(this._onDeck){\n\t\t\t\t// a show request has been queued up; do it now\n\t\t\t\tthis.show.apply(this, this._onDeck);\n\t\t\t\tthis._onDeck=null;\n\t\t\t}\n\t\t}\n\t});\n\n\tif(has(\"dojo-bidi\")){\n\t\tMasterTooltip.extend({\n\t\t\t_setAutoTextDir: function(/*Object*/node){\n\t\t\t\t// summary:\n\t\t\t\t//\t\tResolve \"auto\" text direction for children nodes\n\t\t\t\t// tags:\n\t\t\t\t//\t\tprivate\n\n\t\t\t\tthis.applyTextDir(node);\n\t\t\t\tarray.forEach(node.children, function(child){ this._setAutoTextDir(child); }, this);\n\t\t\t},\n\n\t\t\t_setTextDirAttr: function(/*String*/ textDir){\n\t\t\t\t// summary:\n\t\t\t\t//\t\tSetter for textDir.\n\t\t\t\t// description:\n\t\t\t\t//\t\tUsers shouldn't call this function; they should be calling\n\t\t\t\t//\t\tset('textDir', value)\n\t\t\t\t// tags:\n\t\t\t\t//\t\tprivate\n\n\t\t\t\tthis._set(\"textDir\", textDir);\n\n\t\t\t\tif (textDir == \"auto\"){\n\t\t\t\t\tthis._setAutoTextDir(this.containerNode);\n\t\t\t\t}else{\n\t\t\t\t\tthis.containerNode.dir = this.textDir;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tdijit.showTooltip = function(innerHTML, aroundNode, position, rtl, textDir, onMouseEnter, onMouseLeave){\n\t\t// summary:\n\t\t//\t\tStatic method to display tooltip w/specified contents in specified position.\n\t\t//\t\tSee description of dijit/Tooltip.defaultPosition for details on position parameter.\n\t\t//\t\tIf position is not specified then dijit/Tooltip.defaultPosition is used.\n\t\t// innerHTML: String\n\t\t//\t\tContents of the tooltip\n\t\t// aroundNode: place.__Rectangle\n\t\t//\t\tSpecifies that tooltip should be next to this node / area\n\t\t// position: String[]?\n\t\t//\t\tList of positions to try to position tooltip (ex: [\"right\", \"above\"])\n\t\t// rtl: Boolean?\n\t\t//\t\tCorresponds to `WidgetBase.dir` attribute, where false means \"ltr\" and true\n\t\t//\t\tmeans \"rtl\"; specifies GUI direction, not text direction.\n\t\t// textDir: String?\n\t\t//\t\tCorresponds to `WidgetBase.textdir` attribute; specifies direction of text.\n\t\t// onMouseEnter: Function?\n\t\t//\t\tCallback function for mouse over on tooltip\n\t\t// onMouseLeave: Function?\n\t\t//\t\tCallback function for mouse leave on tooltip\n\n\t\t// After/before don't work, but for back-compat convert them to the working after-centered, before-centered.\n\t\t// Possibly remove this in 2.0. Alternately, get before/after to work.\n\t\tif(position){\n\t\t\tposition = array.map(position, function(val){\n\t\t\t\treturn {after: \"after-centered\", before: \"before-centered\"}[val] || val;\n\t\t\t});\n\t\t}\n\n\t\tif(!Tooltip._masterTT){ dijit._masterTT = Tooltip._masterTT = new MasterTooltip(); }\n\t\treturn Tooltip._masterTT.show(innerHTML, aroundNode, position, rtl, textDir, onMouseEnter, onMouseLeave);\n\t};\n\n\tdijit.hideTooltip = function(aroundNode){\n\t\t// summary:\n\t\t//\t\tStatic method to hide the tooltip displayed via showTooltip()\n\t\treturn Tooltip._masterTT && Tooltip._masterTT.hide(aroundNode);\n\t};\n\n\t// Possible states for a tooltip, see Tooltip.state property for definitions\n\tvar DORMANT = \"DORMANT\",\n\t\tSHOW_TIMER = \"SHOW TIMER\",\n\t\tSHOWING = \"SHOWING\",\n\t\tHIDE_TIMER = \"HIDE TIMER\";\n\n\tfunction noop(){}\n\n\tvar Tooltip = declare(\"dijit.Tooltip\", _Widget, {\n\t\t// summary:\n\t\t//\t\tPops up a tooltip (a help message) when you hover over a node.\n\t\t//\t\tAlso provides static show() and hide() methods that can be used without instantiating a dijit/Tooltip.\n\n\t\t// label: String\n\t\t//\t\tHTML to display in the tooltip.\n\t\t//\t\tSpecified as innerHTML when creating the widget from markup.\n\t\tlabel: \"\",\n\n\t\t// showDelay: Integer\n\t\t//\t\tNumber of milliseconds to wait after hovering over/focusing on the object, before\n\t\t//\t\tthe tooltip is displayed.\n\t\tshowDelay: 400,\n\n\t\t// hideDelay: Integer\n\t\t//\t\tNumber of milliseconds to wait after unhovering the object, before\n\t\t//\t\tthe tooltip is hidden. Note that blurring an object hides the tooltip immediately.\n\t\thideDelay: 400,\n\n\t\t// connectId: String|String[]|DomNode|DomNode[]\n\t\t//\t\tId of domNode(s) to attach the tooltip to.\n\t\t//\t\tWhen user hovers over specified dom node(s), the tooltip will appear.\n\t\tconnectId: [],\n\n\t\t// position: String[]\n\t\t//\t\tSee description of `dijit/Tooltip.defaultPosition` for details on position parameter.\n\t\tposition: [],\n\n\t\t// selector: String?\n\t\t//\t\tCSS expression to apply this Tooltip to descendants of connectIds, rather than to\n\t\t//\t\tthe nodes specified by connectIds themselves. Useful for applying a Tooltip to\n\t\t//\t\ta range of rows in a table, tree, etc. Use in conjunction with getContent() parameter.\n\t\t//\t\tEx: connectId: myTable, selector: \"tr\", getContent: function(node){ return ...; }\n\t\t//\n\t\t//\t\tThe application must require() an appropriate level of dojo/query to handle the selector.\n\t\tselector: \"\",\n\n\t\t// TODO: in 2.0 remove support for multiple connectIds. selector gives the same effect.\n\t\t// So, change connectId to a \"\", remove addTarget()/removeTarget(), etc.\n\n\t\t_setConnectIdAttr: function(/*String|String[]|DomNode|DomNode[]*/ newId){\n\t\t\t// summary:\n\t\t\t//\t\tConnect to specified node(s)\n\n\t\t\t// Remove connections to old nodes (if there are any)\n\t\t\tarray.forEach(this._connections || [], function(nested){\n\t\t\t\tarray.forEach(nested, function(handle){ handle.remove(); });\n\t\t\t}, this);\n\n\t\t\t// Make array of id's to connect to, excluding entries for nodes that don't exist yet, see startup()\n\t\t\tthis._connectIds = array.filter(lang.isArrayLike(newId) ? newId : (newId ? [newId] : []),\n\t\t\t\t\tfunction(id){ return dom.byId(id, this.ownerDocument); }, this);\n\n\t\t\t// Make connections\n\t\t\tthis._connections = array.map(this._connectIds, function(id){\n\t\t\t\tvar node = dom.byId(id, this.ownerDocument),\n\t\t\t\t\tselector = this.selector,\n\t\t\t\t\tdelegatedEvent = selector ?\n\t\t\t\t\t\tfunction(eventType){ return on.selector(selector, eventType); } :\n\t\t\t\t\t\tfunction(eventType){ return eventType; },\n\t\t\t\t\tself = this;\n\t\t\t\treturn [\n\t\t\t\t\ton(node, delegatedEvent(mouse.enter), function(){\n\t\t\t\t\t\tself._onHover(this);\n\t\t\t\t\t}),\n\t\t\t\t\ton(node, delegatedEvent(\"focusin\"), function(){\n\t\t\t\t\t\tself._onHover(this);\n\t\t\t\t\t}),\n\t\t\t\t\ton(node, delegatedEvent(mouse.leave), lang.hitch(self, \"_onUnHover\")),\n\t\t\t\t\ton(node, delegatedEvent(\"focusout\"), lang.hitch(self, \"set\", \"state\", DORMANT))\n\t\t\t\t];\n\t\t\t}, this);\n\n\t\t\tthis._set(\"connectId\", newId);\n\t\t},\n\n\t\taddTarget: function(/*DomNode|String*/ node){\n\t\t\t// summary:\n\t\t\t//\t\tAttach tooltip to specified node if it's not already connected\n\n\t\t\t// TODO: remove in 2.0 and just use set(\"connectId\", ...) interface\n\n\t\t\tvar id = node.id || node;\n\t\t\tif(array.indexOf(this._connectIds, id) == -1){\n\t\t\t\tthis.set(\"connectId\", this._connectIds.concat(id));\n\t\t\t}\n\t\t},\n\n\t\tremoveTarget: function(/*DomNode|String*/ node){\n\t\t\t// summary:\n\t\t\t//\t\tDetach tooltip from specified node\n\n\t\t\t// TODO: remove in 2.0 and just use set(\"connectId\", ...) interface\n\n\t\t\tvar id = node.id || node,\t// map from DOMNode back to plain id string\n\t\t\t\tidx = array.indexOf(this._connectIds, id);\n\t\t\tif(idx >= 0){\n\t\t\t\t// remove id (modifies original this._connectIds but that's OK in this case)\n\t\t\t\tthis._connectIds.splice(idx, 1);\n\t\t\t\tthis.set(\"connectId\", this._connectIds);\n\t\t\t}\n\t\t},\n\n\t\tbuildRendering: function(){\n\t\t\tthis.inherited(arguments);\n\t\t\tdomClass.add(this.domNode,\"dijitTooltipData\");\n\t\t},\n\n\t\tstartup: function(){\n\t\t\tthis.inherited(arguments);\n\n\t\t\t// If this tooltip was created in a template, or for some other reason the specified connectId[s]\n\t\t\t// didn't exist during the widget's initialization, then connect now.\n\t\t\tvar ids = this.connectId;\n\t\t\tarray.forEach(lang.isArrayLike(ids) ? ids : [ids], this.addTarget, this);\n\t\t},\n\n\t\tgetContent: function(/*DomNode*/ node){\n\t\t\t// summary:\n\t\t\t//\t\tUser overridable function that return the text to display in the tooltip.\n\t\t\t// tags:\n\t\t\t//\t\textension\n\t\t\treturn this.label || this.domNode.innerHTML;\n\t\t},\n\n\t\t// state: [private readonly] String\n\t\t//\t\tOne of:\n\t\t//\n\t\t//\t\t- DORMANT: tooltip not SHOWING\n\t\t//\t\t- SHOW TIMER: tooltip not SHOWING but timer set to show it\n\t\t//\t\t- SHOWING: tooltip displayed\n\t\t//\t\t- HIDE TIMER: tooltip displayed, but timer set to hide it\n\t\tstate: DORMANT,\n\t\t_setStateAttr: function(val){\n\t\t\tif(this.state == val ||\n\t\t\t\t(val == SHOW_TIMER && this.state == SHOWING) ||\n\t\t\t\t(val == HIDE_TIMER && this.state == DORMANT)){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(this._hideTimer){\n\t\t\t\tthis._hideTimer.remove();\n\t\t\t\tdelete this._hideTimer;\n\t\t\t}\n\t\t\tif(this._showTimer){\n\t\t\t\tthis._showTimer.remove();\n\t\t\t\tdelete this._showTimer;\n\t\t\t}\n\n\t\t\tswitch(val){\n\t\t\t\tcase DORMANT:\n\t\t\t\t\tif(this._connectNode){\n\t\t\t\t\t\tTooltip.hide(this._connectNode);\n\t\t\t\t\t\tdelete this._connectNode;\n\t\t\t\t\t\tthis.onHide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SHOW_TIMER:\t // set timer to show tooltip\n\t\t\t\t\t// should only get here from a DORMANT state, i.e. tooltip can't be already SHOWING\n\t\t\t\t\tif(this.state != SHOWING){\n\t\t\t\t\t\tthis._showTimer = this.defer(function(){ this.set(\"state\", SHOWING); }, this.showDelay);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SHOWING:\t\t// show tooltip and clear timers\n\t\t\t\t\tvar content = this.getContent(this._connectNode);\n\t\t\t\t\tif(!content){\n\t\t\t\t\t\tthis.set(\"state\", DORMANT);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Show tooltip and setup callbacks for mouseenter/mouseleave of tooltip itself\n\t\t\t\t\tTooltip.show(content, this._connectNode, this.position, !this.isLeftToRight(), this.textDir,\n\t\t\t\t\t\tlang.hitch(this, \"set\", \"state\", SHOWING), lang.hitch(this, \"set\", \"state\", HIDE_TIMER));\n\n\t\t\t\t\tthis.onShow(this._connectNode, this.position);\n\t\t\t\t\tbreak;\n\t\t\t\tcase HIDE_TIMER:\t// set timer set to hide tooltip\n\t\t\t\t\tthis._hideTimer = this.defer(function(){ this.set(\"state\", DORMANT); }, this.hideDelay);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis._set(\"state\", val);\n\t\t},\n\n\t\t_onHover: function(/*DomNode*/ target){\n\t\t\t// summary:\n\t\t\t//\t\tDespite the name of this method, it actually handles both hover and focus\n\t\t\t//\t\tevents on the target node, setting a timer to show the tooltip.\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\n\t\t\tif(this._connectNode && target != this._connectNode){\n\t\t\t\t// Tooltip is displaying for another node\n\t\t\t\tthis.set(\"state\", DORMANT);\n\t\t\t}\n\t\t\tthis._connectNode = target;\t\t// _connectNode means \"tooltip currently displayed for this node\"\n\n\t\t\tthis.set(\"state\", SHOW_TIMER);\t// no-op if show-timer already set, or if already showing\n\t\t},\n\n\t\t_onUnHover: function(/*DomNode*/ target){\n\t\t\t// summary:\n\t\t\t//\t\tHandles mouseleave event on the target node, hiding the tooltip.\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\n\t\t\tthis.set(\"state\", HIDE_TIMER);\t\t// no-op if already dormant, or if hide-timer already set\n\t\t},\n\n\t\t// open() and close() aren't used anymore, except from the _BidiSupport/misc/Tooltip test.\n\t\t// Should probably remove for 2.0, but leaving for now.\n\t\topen: function(/*DomNode*/ target){\n\t\t\t// summary:\n\t\t\t//\t\tDisplay the tooltip; usually not called directly.\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\n\t\t\tthis.set(\"state\", DORMANT);\n\t\t\tthis._connectNode = target;\t\t// _connectNode means \"tooltip currently displayed for this node\"\n\t\t\tthis.set(\"state\", SHOWING);\n\t\t},\n\n\t\tclose: function(){\n\t\t\t// summary:\n\t\t\t//\t\tHide the tooltip or cancel timer for show of tooltip\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\n\t\t\tthis.set(\"state\", DORMANT);\n\t\t},\n\n\t\tonShow: function(/*===== target, position =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when the tooltip is shown\n\t\t\t// tags:\n\t\t\t//\t\tcallback\n\t\t},\n\n\t\tonHide: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when the tooltip is hidden\n\t\t\t// tags:\n\t\t\t//\t\tcallback\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tthis.set(\"state\", DORMANT);\n\n\t\t\t// Remove connections manually since they aren't registered to be removed by _WidgetBase\n\t\t\tarray.forEach(this._connections || [], function(nested){\n\t\t\t\tarray.forEach(nested, function(handle){ handle.remove(); });\n\t\t\t}, this);\n\n\t\t\tthis.inherited(arguments);\n\t\t}\n\t});\n\n\tTooltip._MasterTooltip = MasterTooltip;\t\t// for monkey patching\n\tTooltip.show = dijit.showTooltip;\t\t// export function through module return value\n\tTooltip.hide = dijit.hideTooltip;\t\t// export function through module return value\n\n\tTooltip.defaultPosition = [\"after-centered\", \"before-centered\"];\n\n\t/*=====\n\tlang.mixin(Tooltip, {\n\t\t // defaultPosition: String[]\n\t\t //\t\tThis variable controls the position of tooltips, if the position is not specified to\n\t\t //\t\tthe Tooltip widget or *TextBox widget itself. It's an array of strings with the values\n\t\t //\t\tpossible for `dijit/place.around()`. The recommended values are:\n\t\t //\n\t\t //\t\t- before-centered: centers tooltip to the left of the anchor node/widget, or to the right\n\t\t //\t\t in the case of RTL scripts like Hebrew and Arabic\n\t\t //\t\t- after-centered: centers tooltip to the right of the anchor node/widget, or to the left\n\t\t //\t\t in the case of RTL scripts like Hebrew and Arabic\n\t\t //\t\t- above-centered: tooltip is centered above anchor node\n\t\t //\t\t- below-centered: tooltip is centered above anchor node\n\t\t //\n\t\t //\t\tThe list is positions is tried, in order, until a position is found where the tooltip fits\n\t\t //\t\twithin the viewport.\n\t\t //\n\t\t //\t\tBe careful setting this parameter. A value of \"above-centered\" may work fine until the user scrolls\n\t\t //\t\tthe screen so that there's no room above the target node. Nodes with drop downs, like\n\t\t //\t\tDropDownButton or FilteringSelect, are especially problematic, in that you need to be sure\n\t\t //\t\tthat the drop down and tooltip don't overlap, even when the viewport is scrolled so that there\n\t\t //\t\tis only room below (or above) the target node, but not both.\n\t });\n\t=====*/\n\treturn Tooltip;\n});\n","define([\n\t\"dojo/Evented\",\n\t\"dojo/on\",\n\t\"dojo/domReady\",\n\t\"dojo/sniff\",\t// has(\"ie\"), has(\"ios\")\n\t\"dojo/window\" // getBox()\n], function(Evented, on, domReady, has, winUtils){\n\n\t// module:\n\t//\t\tdijit/Viewport\n\n\t/*=====\n\treturn {\n\t\t// summary:\n\t\t//\t\tUtility singleton to watch for viewport resizes, avoiding duplicate notifications\n\t\t//\t\twhich can lead to infinite loops.\n\t\t// description:\n\t\t//\t\tUsage: Viewport.on(\"resize\", myCallback).\n\t\t//\n\t\t//\t\tmyCallback() is called without arguments in case it's _WidgetBase.resize(),\n\t\t//\t\twhich would interpret the argument as the size to make the widget.\n\t};\n\t=====*/\n\n\tvar Viewport = new Evented();\n\n\tvar focusedNode;\n\n\tdomReady(function(){\n\t\tvar oldBox = winUtils.getBox();\n\t\tViewport._rlh = on(window, \"resize\", function(){\n\t\t\tvar newBox = winUtils.getBox();\n\t\t\tif(oldBox.h == newBox.h && oldBox.w == newBox.w){ return; }\n\t\t\toldBox = newBox;\n\t\t\tViewport.emit(\"resize\");\n\t\t});\n\n\t\t// Also catch zoom changes on IE8, since they don't naturally generate resize events\n\t\tif(has(\"ie\") == 8){\n\t\t\tvar deviceXDPI = screen.deviceXDPI;\n\t\t\tsetInterval(function(){\n\t\t\t\tif(screen.deviceXDPI != deviceXDPI){\n\t\t\t\t\tdeviceXDPI = screen.deviceXDPI;\n\t\t\t\t\tViewport.emit(\"resize\");\n\t\t\t\t}\n\t\t\t}, 500);\n\t\t}\n\n\t\t// On iOS, keep track of the focused node so we can guess when the keyboard is/isn't being displayed.\n\t\tif(has(\"ios\")){\n\t\t\ton(document, \"focusin\", function(evt){\n\t\t\t\tfocusedNode = evt.target;\n\t\t\t});\n\t\t\ton(document, \"focusout\", function(evt){\n\t\t\t\tfocusedNode = null;\n\t\t\t});\n\t\t}\n\t});\n\n\tViewport.getEffectiveBox = function(/*Document*/ doc){\n\t\t// summary:\n\t\t//\t\tGet the size of the viewport, or on mobile devices, the part of the viewport not obscured by the\n\t\t//\t\tvirtual keyboard.\n\n\t\tvar box = winUtils.getBox(doc);\n\n\t\t// Account for iOS virtual keyboard, if it's being shown. Unfortunately no direct way to check or measure.\n\t\tvar tag = focusedNode && focusedNode.tagName && focusedNode.tagName.toLowerCase();\n\t\tif(has(\"ios\") && focusedNode && !focusedNode.readOnly && (tag == \"textarea\" || (tag == \"input\" &&\n\t\t\t/^(color|email|number|password|search|tel|text|url)$/.test(focusedNode.type)))){\n\n\t\t\t// Box represents the size of the viewport. Some of the viewport is likely covered by the keyboard.\n\t\t\t// Estimate height of visible viewport assuming viewport goes to bottom of screen, but is covered by keyboard.\n\t\t\tbox.h *= (orientation == 0 || orientation == 180 ? 0.66 : 0.40);\n\n\t\t\t// Above measurement will be inaccurate if viewport was scrolled up so far that it ends before the bottom\n\t\t\t// of the screen. In this case, keyboard isn't covering as much of the viewport as we thought.\n\t\t\t// We know the visible size is at least the distance from the top of the viewport to the focused node.\n\t\t\tvar rect = focusedNode.getBoundingClientRect();\n\t\t\tbox.h = Math.max(box.h, rect.top + rect.height);\n\t\t}\n\n\t\treturn box;\n\t};\n\n\treturn Viewport;\n});\n","define([\n\t\"require\",\n\t\"dojo/_base/array\", // array.forEach\n\t\"dojo/_base/connect\",\t// remove for 2.0\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/_base/lang\", // lang.getObject\n\t\"dojo/mouse\",\n\t\"dojo/on\",\n\t\"dojo/touch\",\n\t\"./_WidgetBase\"\n], function(require, array, connect, declare, lang, mouse, on, touch, _WidgetBase){\n\n\t// module:\n\t//\t\tdijit/_AttachMixin\n\n\t// Map from string name like \"mouseenter\" to synthetic event like mouse.enter\n\tvar synthEvents = lang.delegate(touch, {\n\t\t\"mouseenter\": mouse.enter,\n\t\t\"mouseleave\": mouse.leave,\n\t\t\"keypress\": connect._keypress\t// remove for 2.0\n\t});\n\n\t// To be lightweight, _AttachMixin doesn't require() dijit/a11yclick.\n\t// If the subclass has a template using \"ondijitclick\", it must load dijit/a11yclick itself.\n\t// In that case, the a11yclick variable below will get set to point to that synthetic event.\n\tvar a11yclick;\n\n\tvar _AttachMixin = declare(\"dijit._AttachMixin\", null, {\n\t\t// summary:\n\t\t//\t\tMixin for widgets to attach to dom nodes and setup events via\n\t\t//\t\tconvenient data-dojo-attach-point and data-dojo-attach-event DOM attributes.\n\t\t//\n\t\t//\t\tSuperclass of _TemplatedMixin, and can also be used standalone when templates are pre-rendered on the\n\t\t//\t\tserver.\n\t\t//\n\t\t//\t\tDoes not [yet] handle widgets like ContentPane with this.containerNode set. It should skip\n\t\t//\t\tscanning for data-dojo-attach-point and data-dojo-attach-event inside this.containerNode, but it\n\t\t//\t\tdoesn't.\n\n/*=====\n\t\t// _attachPoints: [private] String[]\n\t\t//\t\tList of widget attribute names associated with data-dojo-attach-point=... in the\n\t\t//\t\ttemplate, ex: [\"containerNode\", \"labelNode\"]\n\t\t_attachPoints: [],\n\n\t\t// _attachEvents: [private] Handle[]\n\t\t//\t\tList of connections associated with data-dojo-attach-event=... in the\n\t\t//\t\ttemplate\n\t\t_attachEvents: [],\n\n\t\t// attachScope: [public] Object\n\t\t//\t\tObject to which attach points and events will be scoped. Defaults\n\t\t//\t\tto 'this'.\n\t\tattachScope: undefined,\n\n\t\t// searchContainerNode: [protected] Boolean\n\t\t//\t\tSearch descendants of this.containerNode for data-dojo-attach-point and data-dojo-attach-event.\n\t\t//\t\tShould generally be left false (the default value) both for performance and to avoid failures when\n\t\t//\t\tthis.containerNode holds other _AttachMixin instances with their own attach points and events.\n \t\tsearchContainerNode: false,\n =====*/\n\n\t\tconstructor: function(/*===== params, srcNodeRef =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tCreate the widget.\n\t\t\t// params: Object|null\n\t\t\t//\t\tHash of initialization parameters for widget, including scalar values (like title, duration etc.)\n\t\t\t//\t\tand functions, typically callbacks like onClick.\n\t\t\t//\t\tThe hash can contain any of the widget's properties, excluding read-only properties.\n\t\t\t// srcNodeRef: DOMNode|String?\n\t\t\t//\t\tIf a srcNodeRef (DOM node) is specified, replace srcNodeRef with my generated DOM tree.\n\n\t\t\tthis._attachPoints = [];\n\t\t\tthis._attachEvents = [];\n\t\t},\n\n\n\t\tbuildRendering: function(){\n\t\t\t// summary:\n\t\t\t//\t\tAttach to DOM nodes marked with special attributes.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\tthis.inherited(arguments);\n\n\t\t\t// recurse through the node, looking for, and attaching to, our\n\t\t\t// attachment points and events, which should be defined on the template node.\n\t\t\tthis._attachTemplateNodes(this.domNode);\n\n\t\t\tthis._beforeFillContent();\t\t// hook for _WidgetsInTemplateMixin\n\t\t},\n\n\t\t_beforeFillContent: function(){\n\t\t},\n\n\t\t_attachTemplateNodes: function(rootNode){\n\t\t\t// summary:\n\t\t\t//\t\tIterate through the dom nodes and attach functions and nodes accordingly.\n\t\t\t// description:\n\t\t\t//\t\tMap widget properties and functions to the handlers specified in\n\t\t\t//\t\tthe dom node and it's descendants. This function iterates over all\n\t\t\t//\t\tnodes and looks for these properties:\n\t\t\t//\n\t\t\t//\t\t- dojoAttachPoint/data-dojo-attach-point\n\t\t\t//\t\t- dojoAttachEvent/data-dojo-attach-event\n\t\t\t// rootNode: DomNode\n\t\t\t//\t\tThe node to search for properties. All descendants will be searched.\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\n\t\t\t// DFS to process all nodes except those inside of this.containerNode\n\t\t\tvar node = rootNode;\n\t\t\twhile(true){\n\t\t\t\tif(node.nodeType == 1 && (this._processTemplateNode(node, function(n,p){ return n.getAttribute(p); },\n\t\t\t\t\t\tthis._attach) || this.searchContainerNode) && node.firstChild){\n\t\t\t\t\tnode = node.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tif(node == rootNode){ return; }\n\t\t\t\t\twhile(!node.nextSibling){\n\t\t\t\t\t\tnode = node.parentNode;\n\t\t\t\t\t\tif(node == rootNode){ return; }\n\t\t\t\t\t}\n\t\t\t\t\tnode = node.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_processTemplateNode: function(/*DOMNode|Widget*/ baseNode, getAttrFunc, attachFunc){\n\t\t\t// summary:\n\t\t\t//\t\tProcess data-dojo-attach-point and data-dojo-attach-event for given node or widget.\n\t\t\t//\t\tReturns true if caller should process baseNode's children too.\n\n\t\t\tvar ret = true;\n\n\t\t\t// Process data-dojo-attach-point\n\t\t\tvar _attachScope = this.attachScope || this,\n\t\t\t\tattachPoint = getAttrFunc(baseNode, \"dojoAttachPoint\") || getAttrFunc(baseNode, \"data-dojo-attach-point\");\n\t\t\tif(attachPoint){\n\t\t\t\tvar point, points = attachPoint.split(/\\s*,\\s*/);\n\t\t\t\twhile((point = points.shift())){\n\t\t\t\t\tif(lang.isArray(_attachScope[point])){\n\t\t\t\t\t\t_attachScope[point].push(baseNode);\n\t\t\t\t\t}else{\n\t\t\t\t\t\t_attachScope[point] = baseNode;\n\t\t\t\t\t}\n\t\t\t\t\tret = (point != \"containerNode\");\n\t\t\t\t\tthis._attachPoints.push(point);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Process data-dojo-attach-event\n\t\t\tvar attachEvent = getAttrFunc(baseNode, \"dojoAttachEvent\") || getAttrFunc(baseNode, \"data-dojo-attach-event\");\n\t\t\tif(attachEvent){\n\t\t\t\t// NOTE: we want to support attributes that have the form\n\t\t\t\t// \"domEvent: nativeEvent, ...\"\n\t\t\t\tvar event, events = attachEvent.split(/\\s*,\\s*/);\n\t\t\t\tvar trim = lang.trim;\n\t\t\t\twhile((event = events.shift())){\n\t\t\t\t\tif(event){\n\t\t\t\t\t\tvar thisFunc = null;\n\t\t\t\t\t\tif(event.indexOf(\":\") != -1){\n\t\t\t\t\t\t\t// oh, if only JS had tuple assignment\n\t\t\t\t\t\t\tvar funcNameArr = event.split(\":\");\n\t\t\t\t\t\t\tevent = trim(funcNameArr[0]);\n\t\t\t\t\t\t\tthisFunc = trim(funcNameArr[1]);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tevent = trim(event);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(!thisFunc){\n\t\t\t\t\t\t\tthisFunc = event;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._attachEvents.push(attachFunc(baseNode, event, lang.hitch(_attachScope, thisFunc)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t},\n\n\t\t_attach: function(node, type, func){\n\t\t\t// summary:\n\t\t\t//\t\tRoughly corresponding to dojo/on, this is the default function for processing a\n\t\t\t//\t\tdata-dojo-attach-event. Meant to attach to DOMNodes, not to widgets.\n\t\t\t// node: DOMNode\n\t\t\t//\t\tThe node to setup a listener on.\n\t\t\t// type: String\n\t\t\t//\t\tEvent name like \"click\".\n\t\t\t// getAttrFunc: Function\n\t\t\t//\t\tFunction to get the specified property for a given DomNode/Widget.\n\t\t\t// attachFunc: Function?\n\t\t\t//\t\tAttaches an event handler from the specified node/widget to specified function.\n\n\t\t\t// Map special type names like \"mouseenter\" to synthetic events.\n\t\t\t// Subclasses are responsible to require() dijit/a11yclick if they want to use it.\n\t\t\ttype = type.replace(/^on/, \"\").toLowerCase();\n\t\t\tif(type == \"dijitclick\"){\n\t\t\t\ttype = a11yclick || (a11yclick = require(\"./a11yclick\"));\n\t\t\t}else{\n\t\t\t\ttype = synthEvents[type] || type;\n\t\t\t}\n\n\t\t\treturn on(node, type, func);\n\t\t},\n\n\t\t_detachTemplateNodes: function() {\n\t\t\t// summary:\n\t\t\t//\t\tDetach and clean up the attachments made in _attachtempalteNodes.\n\n\t\t\t// Delete all attach points to prevent IE6 memory leaks.\n\t\t\tvar _attachScope = this.attachScope || this;\n\t\t\tarray.forEach(this._attachPoints, function(point){\n\t\t\t\tdelete _attachScope[point];\n\t\t\t});\n\t\t\tthis._attachPoints = [];\n\n\t\t\t// And same for event handlers\n\t\t\tarray.forEach(this._attachEvents, function(handle){ handle.remove(); });\n\t\t\tthis._attachEvents = [];\n\t\t},\n\n\t\tdestroyRendering: function(){\n\t\t\tthis._detachTemplateNodes();\n\t\t\tthis.inherited(arguments);\n\t\t}\n\t});\n\n\t// These arguments can be specified for widgets which are used in templates.\n\t// Since any widget can be specified as sub widgets in template, mix it\n\t// into the base widget class. (This is a hack, but it's effective.).\n\t// Remove for 2.0. Also, hide from API doc parser.\n\tlang.extend(_WidgetBase, /*===== {} || =====*/ {\n\t\tdojoAttachEvent: \"\",\n\t\tdojoAttachPoint: \"\"\n\t});\n\t\n\treturn _AttachMixin;\n});\n","define([], function(){\n\n\t// module:\n\t//\t\tdijit/_BidiMixin\n\n\t// UCC - constants that will be used by bidi support.\n\tvar bidi_const = {\n\t\tLRM : '\\u200E',\n\t\tLRE : '\\u202A',\n\t\tPDF : '\\u202C',\n\t\tRLM : '\\u200f',\n\t\tRLE : '\\u202B'\n\t};\n\n\treturn {\n\t\t// summary:\n\t\t//\t\tWhen has(\"dojo-bidi\") is true, _WidgetBase will mixin this class. It enables support for the textdir\n\t\t//\t\tproperty to control text direction independently from the GUI direction.\n\t\t// description:\n\t\t//\t\tThere's a special need for displaying BIDI text in rtl direction\n\t\t//\t\tin ltr GUI, sometimes needed auto support.\n\t\t//\t\tIn creation of widget, if it's want to activate this class,\n\t\t//\t\tthe widget should define the \"textDir\".\n\n\t\tgetTextDir: function(/*String*/ text){\n\t\t\t// summary:\n\t\t\t//\t\tGets the right direction of text.\n\t\t\t// description:\n\t\t\t//\t\tIf textDir is ltr or rtl returns the value.\n\t\t\t//\t\tIf it's auto, calls to another function that responsible\n\t\t\t//\t\tfor checking the value, and defining the direction.\n\t\t\t// tags:\n\t\t\t//\t\tprotected.\n\t\t\treturn this.textDir == \"auto\" ? this._checkContextual(text) : this.textDir;\n\t\t},\n\n\t\t_checkContextual: function(text){\n\t\t\t// summary:\n\t\t\t//\t\tFinds the first strong (directional) character, return ltr if isLatin\n\t\t\t//\t\tor rtl if isBidiChar.\n\t\t\t// tags:\n\t\t\t//\t\tprivate.\n\n\t\t\t// look for strong (directional) characters\n\t\t\tvar fdc = /[A-Za-z\\u05d0-\\u065f\\u066a-\\u06ef\\u06fa-\\u07ff\\ufb1d-\\ufdff\\ufe70-\\ufefc]/.exec(text);\n\t\t\t// if found return the direction that defined by the character, else return widgets dir as defult.\n\t\t\treturn fdc ? ( fdc[0] <= 'z' ? \"ltr\" : \"rtl\" ) : this.dir ? this.dir : this.isLeftToRight() ? \"ltr\" : \"rtl\";\n\t\t},\n\n\t\tapplyTextDir: function(/*DOMNode*/ element, /*String?*/ text){\n\t\t\t// summary:\n\t\t\t//\t\tSet element.dir according to this.textDir, assuming this.textDir has a value.\n\t\t\t// element:\n\t\t\t//\t\tThe text element to be set. Should have dir property.\n\t\t\t// text:\n\t\t\t//\t\tIf specified, and this.textDir is \"auto\", for calculating the right transformation\n\t\t\t//\t\tOtherwise text read from element.\n\t\t\t// description:\n\t\t\t//\t\tIf textDir is ltr or rtl returns the value.\n\t\t\t//\t\tIf it's auto, calls to another function that responsible\n\t\t\t//\t\tfor checking the value, and defining the direction.\n\t\t\t// tags:\n\t\t\t//\t\tprotected.\n\n\t\t\tif(this.textDir){\n\t\t\t\tvar textDir = this.textDir;\n\t\t\t\tif(textDir == \"auto\"){\n\t\t\t\t\t// convert \"auto\" to either \"ltr\" or \"rtl\"\n\t\t\t\t\tif(typeof text === \"undefined\"){\n\t\t\t\t\t\t// text not specified, get text from element\n\t\t\t\t\t\tvar tagName = element.tagName.toLowerCase();\n\t\t\t\t\t\ttext = (tagName == \"input\" || tagName == \"textarea\") ? element.value :\n\t\t\t\t\t\t\telement.innerText || element.textContent || \"\";\n\t\t\t\t\t}\n\t\t\t\t\ttextDir = this._checkContextual(text);\n\t\t\t\t}\n\n\t\t\t\tif(element.dir != textDir){\n\t\t\t\t\t// set element's dir to match textDir, but not when textDir is null and not when it already matches\n\t\t\t\t\telement.dir = textDir;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tenforceTextDirWithUcc: function(option, text){\n\t\t\t// summary:\n\t\t\t//\t\tWraps by UCC (Unicode control characters) option's text according to this.textDir\n\t\t\t// option:\n\t\t\t//\t\tThe element (`<option>`) we wrapping the text for.\n\t\t\t// text:\n\t\t\t//\t\tThe text to be wrapped.\n\t\t\t// description:\n\t\t\t//\t\tThere's a dir problem with some HTML elements. For some elements (e.g. `<option>`, `<select>`)\n\t\t\t//\t\tdefining the dir in different direction then the GUI orientation, won't display correctly.\n\t\t\t//\t\tFF 3.6 will change the alignment of the text in option - this doesn't follow the bidi standards (static text\n\t\t\t//\t\tshould be aligned following GUI direction). IE8 and Opera11.10 completely ignore dir setting for `<option>`.\n\t\t\t//\t\tTherefore the only solution is to use UCC (Unicode control characters) to display the text in correct orientation.\n\t\t\t//\t\tThis function saves the original text value for later restoration if needed, for example if the textDir will change etc.\n\t\t\tif(this.textDir){\n\t\t\t\tif(option){\n\t\t\t\t\toption.originalText = text;\n\t\t\t\t}\n\t\t\t\tvar dir = this.textDir == \"auto\" ? this._checkContextual(text) : this.textDir;\n\t\t\t\treturn (dir == \"ltr\" ? bidi_const.LRE : bidi_const.RLE ) + text + bidi_const.PDF;\n\t\t\t}\n\t\t\treturn text;\n\t\t},\n\n\t\trestoreOriginalText: function(origObj){\n\t\t\t// summary:\n\t\t\t//\t\tRestores the text of origObj, if needed, after enforceTextDirWithUcc, e.g. set(\"textDir\", textDir).\n\t\t\t// origObj:\n\t\t\t//\t\tThe element (`<option>`) to restore.\n\t\t\t// description:\n\t\t\t//\t\tSets the text of origObj to origObj.originalText, which is the original text, without the UCCs.\n\t\t\t//\t\tThe function than removes the originalText from origObj!\n\t\t\tif(origObj.originalText){\n\t\t\t\torigObj.text = origObj.originalText;\n\t\t\t\tdelete origObj.originalText;\n\t\t\t}\n\t\t\treturn origObj;\n\t\t},\n\n\t\t_setTextDirAttr: function(/*String*/ textDir){\n\t\t\t// summary:\n\t\t\t//\t\tSetter for textDir.\n\t\t\t// description:\n\t\t\t//\t\tUsers shouldn't call this function; they should be calling\n\t\t\t//\t\tset('textDir', value)\n\t\t\tif(!this._created || this.textDir != textDir){\n\t\t\t\tthis._set(\"textDir\", textDir);\n\t\t\t\tvar node = null;\n\t\t\t\tif(this.displayNode){\n\t\t\t\t\tnode = this.displayNode;\n\t\t\t\t\tthis.displayNode.align = this.dir == \"rtl\" ? \"right\" : \"left\";\n\t\t\t\t}else{\n\t\t\t\t\tnode = this.textDirNode || this.focusNode || this.textbox;\n\t\t\t\t}\n\t\t\t\tif(node){\n\t\t\t\t\tthis.applyTextDir(node);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n});\n","define([\n\t\"dojo/_base/array\", // array.forEach array.indexOf\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/dom-construct\", // domConstruct.place\n\t\"dojo/_base/kernel\" // kernel.deprecated\n], function(array, declare, domConstruct, kernel){\n\n\t// module:\n\t//\t\tdijit/_Container\n\n\treturn declare(\"dijit._Container\", null, {\n\t\t// summary:\n\t\t//\t\tMixin for widgets that contain HTML and/or a set of widget children.\n\n\t\tbuildRendering: function(){\n\t\t\tthis.inherited(arguments);\n\t\t\tif(!this.containerNode){\n\t\t\t\t// All widgets with descendants must set containerNode.\n\t\t\t\t// NB: this code doesn't quite work right because for TabContainer it runs before\n\t\t\t\t// _TemplatedMixin::buildRendering(), and thus\n\t\t\t\t// sets this.containerNode to this.domNode, later to be overridden by the assignment in the template.\n\t\t\t\tthis.containerNode = this.domNode;\n\t\t\t}\n\t\t},\n\n\t\taddChild: function(/*dijit/_WidgetBase*/ widget, /*int?*/ insertIndex){\n\t\t\t// summary:\n\t\t\t//\t\tMakes the given widget a child of this widget.\n\t\t\t// description:\n\t\t\t//\t\tInserts specified child widget's dom node as a child of this widget's\n\t\t\t//\t\tcontainer node, and possibly does other processing (such as layout).\n\n\t\t\t// I want to just call domConstruct.place(widget.domNode, this.containerNode, insertIndex), but the counting\n\t\t\t// is thrown off by text nodes and comment nodes that show up when constructed by markup.\n\t\t\t// In the future consider stripping those nodes on construction, either in the parser or this widget code.\n\t\t\tvar refNode = this.containerNode;\n\t\t\tif(insertIndex > 0){\n\t\t\t\t// Old-school way to get nth child; dojo.query would be easier but _Container was weened from dojo.query\n\t\t\t\t// in #10087 to minimize download size. Not sure if that's still and issue with new smaller dojo/query.\n\t\t\t\trefNode = refNode.firstChild;\n\t\t\t\twhile(insertIndex > 0){\n\t\t\t\t\tif(refNode.nodeType == 1){ insertIndex--; }\n\t\t\t\t\trefNode = refNode.nextSibling;\n\t\t\t\t}\n\t\t\t\tif(refNode){\n\t\t\t\t\tinsertIndex = \"before\";\n\t\t\t\t}else{\n\t\t\t\t\t// to support addChild(child, n-1) where there are n children (should add child at end)\n\t\t\t\t\trefNode = this.containerNode;\n\t\t\t\t\tinsertIndex = \"last\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdomConstruct.place(widget.domNode, refNode, insertIndex);\n\n\t\t\t// If I've been started but the child widget hasn't been started,\n\t\t\t// start it now. Make sure to do this after widget has been\n\t\t\t// inserted into the DOM tree, so it can see that it's being controlled by me,\n\t\t\t// so it doesn't try to size itself.\n\t\t\tif(this._started && !widget._started){\n\t\t\t\twidget.startup();\n\t\t\t}\n\t\t},\n\n\t\tremoveChild: function(/*Widget|int*/ widget){\n\t\t\t// summary:\n\t\t\t//\t\tRemoves the passed widget instance from this widget but does\n\t\t\t//\t\tnot destroy it. You can also pass in an integer indicating\n\t\t\t//\t\tthe index within the container to remove (ie, removeChild(5) removes the sixth widget).\n\n\t\t\tif(typeof widget == \"number\"){\n\t\t\t\twidget = this.getChildren()[widget];\n\t\t\t}\n\n\t\t\tif(widget){\n\t\t\t\tvar node = widget.domNode;\n\t\t\t\tif(node && node.parentNode){\n\t\t\t\t\tnode.parentNode.removeChild(node); // detach but don't destroy\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thasChildren: function(){\n\t\t\t// summary:\n\t\t\t//\t\tReturns true if widget has child widgets, i.e. if this.containerNode contains widgets.\n\t\t\treturn this.getChildren().length > 0;\t// Boolean\n\t\t},\n\n\t\t_getSiblingOfChild: function(/*dijit/_WidgetBase*/ child, /*int*/ dir){\n\t\t\t// summary:\n\t\t\t//\t\tGet the next or previous widget sibling of child\n\t\t\t// dir:\n\t\t\t//\t\tif 1, get the next sibling\n\t\t\t//\t\tif -1, get the previous sibling\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\t\t\tvar children = this.getChildren(),\n\t\t\t\tidx = array.indexOf(children, child);\t// int\n\t\t\treturn children[idx + dir];\n\t\t},\n\n\t\tgetIndexOfChild: function(/*dijit/_WidgetBase*/ child){\n\t\t\t// summary:\n\t\t\t//\t\tGets the index of the child in this container or -1 if not found\n\t\t\treturn array.indexOf(this.getChildren(), child);\t// int\n\t\t}\n\t});\n});\n","define([\n\t\"dojo/_base/array\", // array.forEach array.map\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/dom\", // dom.isDescendant()\n\t\"dojo/dom-class\", // domClass.toggle\n\t\"dojo/has\",\n\t\"dojo/_base/lang\", // lang.hitch\n\t\"dojo/on\",\n\t\"dojo/domReady\",\n\t\"dojo/touch\",\n\t\"dojo/_base/window\", // win.body\n\t\"./a11yclick\",\n\t\"./registry\"\n], function(array, declare, dom, domClass, has, lang, on, domReady, touch, win, a11yclick, registry){\n\n\t// module:\n\t//\t\tdijit/_CssStateMixin\n\n\tvar CssStateMixin = declare(\"dijit._CssStateMixin\", [], {\n\t\t// summary:\n\t\t//\t\tMixin for widgets to set CSS classes on the widget DOM nodes depending on hover/mouse press/focus\n\t\t//\t\tstate changes, and also higher-level state changes such becoming disabled or selected.\n\t\t//\n\t\t// description:\n\t\t//\t\tBy mixing this class into your widget, and setting the this.baseClass attribute, it will automatically\n\t\t//\t\tmaintain CSS classes on the widget root node (this.domNode) depending on hover,\n\t\t//\t\tactive, focus, etc. state. Ex: with a baseClass of dijitButton, it will apply the classes\n\t\t//\t\tdijitButtonHovered and dijitButtonActive, as the user moves the mouse over the widget and clicks it.\n\t\t//\n\t\t//\t\tIt also sets CSS like dijitButtonDisabled based on widget semantic state.\n\t\t//\n\t\t//\t\tBy setting the cssStateNodes attribute, a widget can also track events on subnodes (like buttons\n\t\t//\t\twithin the widget).\n\n\t\t/*=====\n\t\t // cssStateNodes: [protected] Object\n\t\t //\t\tSubclasses may define a cssStateNodes property that lists sub-nodes within the widget that\n\t\t //\t\tneed CSS classes applied on mouse hover/press and focus.\n\t\t //\n\t\t //\t\tEach entry in this optional hash is a an attach-point name (like \"upArrowButton\") mapped to a CSS class name\n\t\t //\t\t(like \"dijitUpArrowButton\"). Example:\n\t\t //\t|\t\t{\n\t\t //\t|\t\t\t\"upArrowButton\": \"dijitUpArrowButton\",\n\t\t //\t|\t\t\t\"downArrowButton\": \"dijitDownArrowButton\"\n\t\t //\t|\t\t}\n\t\t //\t\tThe above will set the CSS class dijitUpArrowButton to the this.upArrowButton DOMNode when it\n\t\t //\t\tis hovered, etc.\n\t\t cssStateNodes: {},\n\t\t =====*/\n\n\t\t// hovering: [readonly] Boolean\n\t\t//\t\tTrue if cursor is over this widget\n\t\thovering: false,\n\n\t\t// active: [readonly] Boolean\n\t\t//\t\tTrue if mouse was pressed while over this widget, and hasn't been released yet\n\t\tactive: false,\n\n\t\t_applyAttributes: function(){\n\t\t\t// This code would typically be in postCreate(), but putting in _applyAttributes() for\n\t\t\t// performance: so the class changes happen before DOM is inserted into the document.\n\t\t\t// Change back to postCreate() in 2.0. See #11635.\n\n\t\t\tthis.inherited(arguments);\n\n\t\t\t// Monitoring changes to disabled, readonly, etc. state, and update CSS class of root node\n\t\t\tarray.forEach([\"disabled\", \"readOnly\", \"checked\", \"selected\", \"focused\", \"state\", \"hovering\", \"active\", \"_opened\"], function(attr){\n\t\t\t\tthis.watch(attr, lang.hitch(this, \"_setStateClass\"));\n\t\t\t}, this);\n\n\t\t\t// Track hover and active mouse events on widget root node, plus possibly on subnodes\n\t\t\tfor(var ap in this.cssStateNodes || {}){\n\t\t\t\tthis._trackMouseState(this[ap], this.cssStateNodes[ap]);\n\t\t\t}\n\t\t\tthis._trackMouseState(this.domNode, this.baseClass);\n\n\t\t\t// Set state initially; there's probably no hover/active/focus state but widget might be\n\t\t\t// disabled/readonly/checked/selected so we want to set CSS classes for those conditions.\n\t\t\tthis._setStateClass();\n\t\t},\n\n\t\t_cssMouseEvent: function(/*Event*/ event){\n\t\t\t// summary:\n\t\t\t//\t\tHandler for CSS event on this.domNode. Sets hovering and active properties depending on mouse state,\n\t\t\t//\t\twhich triggers _setStateClass() to set appropriate CSS classes for this.domNode.\n\n\t\t\tif(!this.disabled){\n\t\t\t\tswitch(event.type){\n\t\t\t\t\tcase \"mouseover\":\n\t\t\t\t\tcase \"MSPointerOver\":\n\t\t\t\t\tcase \"pointerover\":\n\t\t\t\t\t\tthis._set(\"hovering\", true);\n\t\t\t\t\t\tthis._set(\"active\", this._mouseDown);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"mouseout\":\n\t\t\t\t\tcase \"MSPointerOut\":\n\t\t\t\t\tcase \"pointerout\":\n\t\t\t\t\t\tthis._set(\"hovering\", false);\n\t\t\t\t\t\tthis._set(\"active\", false);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"mousedown\":\n\t\t\t\t\tcase \"touchstart\":\n\t\t\t\t\tcase \"MSPointerDown\":\n\t\t\t\t\tcase \"pointerdown\":\n\t\t\t\t\tcase \"keydown\":\n\t\t\t\t\t\tthis._set(\"active\", true);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"mouseup\":\n\t\t\t\t\tcase \"dojotouchend\":\n\t\t\t\t\tcase \"MSPointerUp\":\n\t\t\t\t\tcase \"pointerup\":\n\t\t\t\t\tcase \"keyup\":\n\t\t\t\t\t\tthis._set(\"active\", false);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_setStateClass: function(){\n\t\t\t// summary:\n\t\t\t//\t\tUpdate the visual state of the widget by setting the css classes on this.domNode\n\t\t\t//\t\t(or this.stateNode if defined) by combining this.baseClass with\n\t\t\t//\t\tvarious suffixes that represent the current widget state(s).\n\t\t\t//\n\t\t\t// description:\n\t\t\t//\t\tIn the case where a widget has multiple\n\t\t\t//\t\tstates, it sets the class based on all possible\n\t\t\t//\t\tcombinations. For example, an invalid form widget that is being hovered\n\t\t\t//\t\twill be \"dijitInput dijitInputInvalid dijitInputHover dijitInputInvalidHover\".\n\t\t\t//\n\t\t\t//\t\tThe widget may have one or more of the following states, determined\n\t\t\t//\t\tby this.state, this.checked, this.valid, and this.selected:\n\t\t\t//\n\t\t\t//\t\t- Error - ValidationTextBox sets this.state to \"Error\" if the current input value is invalid\n\t\t\t//\t\t- Incomplete - ValidationTextBox sets this.state to \"Incomplete\" if the current input value is not finished yet\n\t\t\t//\t\t- Checked - ex: a checkmark or a ToggleButton in a checked state, will have this.checked==true\n\t\t\t//\t\t- Selected - ex: currently selected tab will have this.selected==true\n\t\t\t//\n\t\t\t//\t\tIn addition, it may have one or more of the following states,\n\t\t\t//\t\tbased on this.disabled and flags set in _onMouse (this.active, this.hovering) and from focus manager (this.focused):\n\t\t\t//\n\t\t\t//\t\t- Disabled\t- if the widget is disabled\n\t\t\t//\t\t- Active\t\t- if the mouse (or space/enter key?) is being pressed down\n\t\t\t//\t\t- Focused\t\t- if the widget has focus\n\t\t\t//\t\t- Hover\t\t- if the mouse is over the widget\n\n\t\t\t// Compute new set of classes\n\t\t\tvar newStateClasses = this.baseClass.split(\" \");\n\n\t\t\tfunction multiply(modifier){\n\t\t\t\tnewStateClasses = newStateClasses.concat(array.map(newStateClasses, function(c){\n\t\t\t\t\treturn c + modifier;\n\t\t\t\t}), \"dijit\" + modifier);\n\t\t\t}\n\n\t\t\tif(!this.isLeftToRight()){\n\t\t\t\t// For RTL mode we need to set an addition class like dijitTextBoxRtl.\n\t\t\t\tmultiply(\"Rtl\");\n\t\t\t}\n\n\t\t\tvar checkedState = this.checked == \"mixed\" ? \"Mixed\" : (this.checked ? \"Checked\" : \"\");\n\t\t\tif(this.checked){\n\t\t\t\tmultiply(checkedState);\n\t\t\t}\n\t\t\tif(this.state){\n\t\t\t\tmultiply(this.state);\n\t\t\t}\n\t\t\tif(this.selected){\n\t\t\t\tmultiply(\"Selected\");\n\t\t\t}\n\t\t\tif(this._opened){\n\t\t\t\tmultiply(\"Opened\");\n\t\t\t}\n\n\t\t\tif(this.disabled){\n\t\t\t\tmultiply(\"Disabled\");\n\t\t\t}else if(this.readOnly){\n\t\t\t\tmultiply(\"ReadOnly\");\n\t\t\t}else{\n\t\t\t\tif(this.active){\n\t\t\t\t\tmultiply(\"Active\");\n\t\t\t\t}else if(this.hovering){\n\t\t\t\t\tmultiply(\"Hover\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.focused){\n\t\t\t\tmultiply(\"Focused\");\n\t\t\t}\n\n\t\t\t// Remove old state classes and add new ones.\n\t\t\t// For performance concerns we only write into domNode.className once.\n\t\t\tvar tn = this.stateNode || this.domNode,\n\t\t\t\tclassHash = {};\t// set of all classes (state and otherwise) for node\n\n\t\t\tarray.forEach(tn.className.split(\" \"), function(c){\n\t\t\t\tclassHash[c] = true;\n\t\t\t});\n\n\t\t\tif(\"_stateClasses\" in this){\n\t\t\t\tarray.forEach(this._stateClasses, function(c){\n\t\t\t\t\tdelete classHash[c];\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tarray.forEach(newStateClasses, function(c){\n\t\t\t\tclassHash[c] = true;\n\t\t\t});\n\n\t\t\tvar newClasses = [];\n\t\t\tfor(var c in classHash){\n\t\t\t\tnewClasses.push(c);\n\t\t\t}\n\t\t\ttn.className = newClasses.join(\" \");\n\n\t\t\tthis._stateClasses = newStateClasses;\n\t\t},\n\n\t\t_subnodeCssMouseEvent: function(node, clazz, evt){\n\t\t\t// summary:\n\t\t\t//\t\tHandler for hover/active mouse event on widget's subnode\n\t\t\tif(this.disabled || this.readOnly){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfunction hover(isHovering){\n\t\t\t\tdomClass.toggle(node, clazz + \"Hover\", isHovering);\n\t\t\t}\n\n\t\t\tfunction active(isActive){\n\t\t\t\tdomClass.toggle(node, clazz + \"Active\", isActive);\n\t\t\t}\n\n\t\t\tfunction focused(isFocused){\n\t\t\t\tdomClass.toggle(node, clazz + \"Focused\", isFocused);\n\t\t\t}\n\n\t\t\tswitch(evt.type){\n\t\t\t\tcase \"mouseover\":\n\t\t\t\tcase \"MSPointerOver\":\n\t\t\t\tcase \"pointerover\":\n\t\t\t\t\thover(true);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"mouseout\":\n\t\t\t\tcase \"MSPointerOut\":\n\t\t\t\tcase \"pointerout\":\n\t\t\t\t\thover(false);\n\t\t\t\t\tactive(false);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"mousedown\":\n\t\t\t\tcase \"touchstart\":\n\t\t\t\tcase \"MSPointerDown\":\n\t\t\t\tcase \"pointerdown\":\n\t\t\t\tcase \"keydown\":\n\t\t\t\t\tactive(true);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"mouseup\":\n\t\t\t\tcase \"MSPointerUp\":\n\t\t\t\tcase \"pointerup\":\n\t\t\t\tcase \"dojotouchend\":\n\t\t\t\tcase \"keyup\":\n\t\t\t\t\tactive(false);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"focus\":\n\t\t\t\tcase \"focusin\":\n\t\t\t\t\tfocused(true);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"blur\":\n\t\t\t\tcase \"focusout\":\n\t\t\t\t\tfocused(false);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\t\t_trackMouseState: function(/*DomNode*/ node, /*String*/ clazz){\n\t\t\t// summary:\n\t\t\t//\t\tTrack mouse/focus events on specified node and set CSS class on that node to indicate\n\t\t\t//\t\tcurrent state. Usually not called directly, but via cssStateNodes attribute.\n\t\t\t// description:\n\t\t\t//\t\tGiven class=foo, will set the following CSS class on the node\n\t\t\t//\n\t\t\t//\t\t- fooActive: if the user is currently pressing down the mouse button while over the node\n\t\t\t//\t\t- fooHover: if the user is hovering the mouse over the node, but not pressing down a button\n\t\t\t//\t\t- fooFocus: if the node is focused\n\t\t\t//\n\t\t\t//\t\tNote that it won't set any classes if the widget is disabled.\n\t\t\t// node: DomNode\n\t\t\t//\t\tShould be a sub-node of the widget, not the top node (this.domNode), since the top node\n\t\t\t//\t\tis handled specially and automatically just by mixing in this class.\n\t\t\t// clazz: String\n\t\t\t//\t\tCSS class name (ex: dijitSliderUpArrow)\n\n\t\t\t// Flag for listener code below to call this._cssMouseEvent() or this._subnodeCssMouseEvent()\n\t\t\t// when node is hovered/active\n\t\t\tnode._cssState = clazz;\n\t\t}\n\t});\n\n\tdomReady(function(){\n\t\t// Document level listener to catch hover etc. events on widget root nodes and subnodes.\n\t\t// Note that when the mouse is moved quickly, a single onmouseenter event could signal that multiple widgets\n\t\t// have been hovered or unhovered (try test_Accordion.html)\n\n\t\tfunction pointerHandler(evt, target, relatedTarget){\n\t\t\t// Handler for mouseover, mouseout, a11yclick.press and a11click.release events\n\n\t\t\t// Poor man's event propagation. Don't propagate event to ancestors of evt.relatedTarget,\n\t\t\t// to avoid processing mouseout events moving from a widget's domNode to a descendant node;\n\t\t\t// such events shouldn't be interpreted as a mouseleave on the widget.\n\t\t\tif(relatedTarget && dom.isDescendant(relatedTarget, target)){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor(var node = target; node && node != relatedTarget; node = node.parentNode){\n\t\t\t\t// Process any nodes with _cssState property. They are generally widget root nodes,\n\t\t\t\t// but could also be sub-nodes within a widget\n\t\t\t\tif(node._cssState){\n\t\t\t\t\tvar widget = registry.getEnclosingWidget(node);\n\t\t\t\t\tif(widget){\n\t\t\t\t\t\tif(node == widget.domNode){\n\t\t\t\t\t\t\t// event on the widget's root node\n\t\t\t\t\t\t\twidget._cssMouseEvent(evt);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t// event on widget's sub-node\n\t\t\t\t\t\t\twidget._subnodeCssMouseEvent(node, node._cssState, evt);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar body = win.body(), activeNode;\n\n\t\t// Handle pointer related events (i.e. mouse or touch)\n\t\ton(body, touch.over, function(evt){\n\t\t\t// Using touch.over rather than mouseover mainly to ignore phantom mouse events on iOS.\n\t\t\tpointerHandler(evt, evt.target, evt.relatedTarget);\n\t\t});\n\t\ton(body, touch.out, function(evt){\n\t\t\t// Using touch.out rather than mouseout mainly to ignore phantom mouse events on iOS.\n\t\t\tpointerHandler(evt, evt.target, evt.relatedTarget);\n\t\t});\n\t\ton(body, a11yclick.press, function(evt){\n\t\t\t// Save the a11yclick.press target to reference when the a11yclick.release comes.\n\t\t\tactiveNode = evt.target;\n\t\t\tpointerHandler(evt, activeNode)\n\t\t});\n\t\ton(body, a11yclick.release, function(evt){\n\t\t\t// The release event could come on a separate node than the press event, if for example user slid finger.\n\t\t\t// Reference activeNode to reset the state of the node that got state set in the a11yclick.press handler.\n\t\t\tpointerHandler(evt, activeNode);\n\t\t\tactiveNode = null;\n\t\t});\n\n\t\t// Track focus events on widget sub-nodes that have been registered via _trackMouseState().\n\t\t// However, don't track focus events on the widget root nodes, because focus is tracked via the\n\t\t// focus manager (and it's not really tracking focus, but rather tracking that focus is on one of the widget's\n\t\t// nodes or a subwidget's node or a popup node, etc.)\n\t\t// Remove for 2.0 (if focus CSS needed, just use :focus pseudo-selector).\n\t\ton(body, \"focusin, focusout\", function(evt){\n\t\t\tvar node = evt.target;\n\t\t\tif(node._cssState && !node.getAttribute(\"widgetId\")){\n\t\t\t\tvar widget = registry.getEnclosingWidget(node);\n\t\t\t\tif(widget){\n\t\t\t\t\twidget._subnodeCssMouseEvent(node, node._cssState, evt);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\treturn CssStateMixin;\n});\n","define([\n\t\"dojo/_base/declare\", // declare\n\t\"./a11y\"\t// _getTabNavigable\n], function(declare, a11y){\n\n\t// module:\n\t//\t\tdijit/_DialogMixin\n\n\treturn declare(\"dijit._DialogMixin\", null, {\n\t\t// summary:\n\t\t//\t\tThis provides functions useful to Dialog and TooltipDialog\n\n\t\t// actionBarTemplate: String\n\t\t//\t\tHTML snippet to show the action bar (gray bar with OK/cancel buttons).\n\t\t//\t\tBlank by default, but used by ConfirmDialog/ConfirmTooltipDialog subclasses.\n\t\tactionBarTemplate: \"\",\n\n\t\texecute: function(/*Object*/ /*===== formContents =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tCallback when the user hits the submit button.\n\t\t\t//\t\tOverride this method to handle Dialog execution.\n\t\t\t// description:\n\t\t\t//\t\tAfter the user has pressed the submit button, the Dialog\n\t\t\t//\t\tfirst calls onExecute() to notify the container to hide the\n\t\t\t//\t\tdialog and restore focus to wherever it used to be.\n\t\t\t//\n\t\t\t//\t\t*Then* this method is called.\n\t\t\t// type:\n\t\t\t//\t\tcallback\n\t\t},\n\n\t\tonCancel: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when user has pressed the Dialog's cancel button, to notify container.\n\t\t\t// description:\n\t\t\t//\t\tDeveloper shouldn't override or connect to this method;\n\t\t\t//\t\tit's a private communication device between the TooltipDialog\n\t\t\t//\t\tand the thing that opened it (ex: `dijit/form/DropDownButton`)\n\t\t\t// type:\n\t\t\t//\t\tprotected\n\t\t},\n\n\t\tonExecute: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when user has pressed the dialog's OK button, to notify container.\n\t\t\t// description:\n\t\t\t//\t\tDeveloper shouldn't override or connect to this method;\n\t\t\t//\t\tit's a private communication device between the TooltipDialog\n\t\t\t//\t\tand the thing that opened it (ex: `dijit/form/DropDownButton`)\n\t\t\t// type:\n\t\t\t//\t\tprotected\n\t\t},\n\n\t\t_onSubmit: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCallback when user hits submit button\n\t\t\t// type:\n\t\t\t//\t\tprotected\n\t\t\tthis.onExecute();\t// notify container that we are about to execute\n\t\t\tthis.execute(this.get('value'));\n\t\t},\n\n\t\t_getFocusItems: function(){\n\t\t\t// summary:\n\t\t\t//\t\tFinds focusable items in dialog,\n\t\t\t//\t\tand sets this._firstFocusItem and this._lastFocusItem\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\tvar elems = a11y._getTabNavigable(this.domNode);\n\t\t\tthis._firstFocusItem = elems.lowest || elems.first || this.closeButtonNode || this.domNode;\n\t\t\tthis._lastFocusItem = elems.last || elems.highest || this._firstFocusItem;\n\t\t}\n\t});\n});\n","define([\n\t\"./focus\",\n\t\"./_WidgetBase\",\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/_base/lang\" // lang.extend\n], function(focus, _WidgetBase, declare, lang){\n\n\t// module:\n\t//\t\tdijit/_FocusMixin\n\n\t// We don't know where _FocusMixin will occur in the inheritance chain, but we need the _onFocus()/_onBlur() below\n\t// to be last in the inheritance chain, so mixin to _WidgetBase.\n\tlang.extend(_WidgetBase, {\n\t\t// focused: [readonly] Boolean\n\t\t//\t\tThis widget or a widget it contains has focus, or is \"active\" because\n\t\t//\t\tit was recently clicked.\n\t\tfocused: false,\n\n\t\tonFocus: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when the widget becomes \"active\" because\n\t\t\t//\t\tit or a widget inside of it either has focus, or has recently\n\t\t\t//\t\tbeen clicked.\n\t\t\t// tags:\n\t\t\t//\t\tcallback\n\t\t},\n\n\t\tonBlur: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when the widget stops being \"active\" because\n\t\t\t//\t\tfocus moved to something outside of it, or the user\n\t\t\t//\t\tclicked somewhere outside of it, or the widget was\n\t\t\t//\t\thidden.\n\t\t\t// tags:\n\t\t\t//\t\tcallback\n\t\t},\n\n\t\t_onFocus: function(){\n\t\t\t// summary:\n\t\t\t//\t\tThis is where widgets do processing for when they are active,\n\t\t\t//\t\tsuch as changing CSS classes. See onFocus() for more details.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\tthis.onFocus();\n\t\t},\n\n\t\t_onBlur: function(){\n\t\t\t// summary:\n\t\t\t//\t\tThis is where widgets do processing for when they stop being active,\n\t\t\t//\t\tsuch as changing CSS classes. See onBlur() for more details.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\tthis.onBlur();\n\t\t}\n\t});\n\n\treturn declare(\"dijit._FocusMixin\", null, {\n\t\t// summary:\n\t\t//\t\tMixin to widget to provide _onFocus() and _onBlur() methods that\n\t\t//\t\tfire when a widget or its descendants get/lose focus\n\n\t\t// flag that I want _onFocus()/_onBlur() notifications from focus manager\n\t\t_focusManager: focus\n\t});\n\n});\n","define([\n\t\"dojo/on\",\n\t\"dojo/_base/array\", // array.forEach\n\t\"dojo/keys\", // keys.ENTER keys.SPACE\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/has\", // has(\"dom-addeventlistener\")\n\t\"./a11yclick\"\n], function(on, array, keys, declare, has, a11yclick){\n\n\t// module:\n\t//\t\tdijit/_OnDijitClickMixin\n\n\tvar ret = declare(\"dijit._OnDijitClickMixin\", null, {\n\t\t// summary:\n\t\t//\t\tDeprecated. New code should access the dijit/a11yclick event directly, ex:\n\t\t//\t\t|\tthis.own(on(node, a11yclick, function(){ ... }));\n\t\t//\n\t\t//\t\tMixing in this class will make _WidgetBase.connect(node, \"ondijitclick\", ...) work.\n\t\t//\t\tIt also used to be necessary to make templates with ondijitclick work, but now you can just require\n\t\t//\t\tdijit/a11yclick.\n\n\t\tconnect: function(obj, event, method){\n\t\t\t// override _WidgetBase.connect() to make this.connect(node, \"ondijitclick\", ...) work\n\t\t\treturn this.inherited(arguments, [obj, event == \"ondijitclick\" ? a11yclick : event, method]);\n\t\t}\n\t});\n\n\tret.a11yclick = a11yclick;\t// back compat\n\n\treturn ret;\n});\n","define([\n\t\"dojo/cache\",\t// dojo.cache\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/dom-construct\", // domConstruct.destroy, domConstruct.toDom\n\t\"dojo/_base/lang\", // lang.getObject\n\t\"dojo/on\",\n\t\"dojo/sniff\", // has(\"ie\")\n\t\"dojo/string\", // string.substitute string.trim\n\t\"./_AttachMixin\"\n], function(cache, declare, domConstruct, lang, on, has, string, _AttachMixin){\n\n\t// module:\n\t//\t\tdijit/_TemplatedMixin\n\n\tvar _TemplatedMixin = declare(\"dijit._TemplatedMixin\", _AttachMixin, {\n\t\t// summary:\n\t\t//\t\tMixin for widgets that are instantiated from a template\n\n\t\t// templateString: [protected] String\n\t\t//\t\tA string that represents the widget template.\n\t\t//\t\tUse in conjunction with dojo.cache() to load from a file.\n\t\ttemplateString: null,\n\n\t\t// templatePath: [protected deprecated] String\n\t\t//\t\tPath to template (HTML file) for this widget relative to dojo.baseUrl.\n\t\t//\t\tDeprecated: use templateString with require([... \"dojo/text!...\"], ...) instead\n\t\ttemplatePath: null,\n\n\t\t// skipNodeCache: [protected] Boolean\n\t\t//\t\tIf using a cached widget template nodes poses issues for a\n\t\t//\t\tparticular widget class, it can set this property to ensure\n\t\t//\t\tthat its template is always re-built from a string\n\t\t_skipNodeCache: false,\n\n/*=====\n\t\t// _rendered: Boolean\n\t\t//\t\tNot normally use, but this flag can be set by the app if the server has already rendered the template,\n\t\t//\t\ti.e. already inlining the template for the widget into the main page. Reduces _TemplatedMixin to\n\t\t//\t\tjust function like _AttachMixin.\n\t\t_rendered: false,\n=====*/\n\n\t\t// Set _AttachMixin.searchContainerNode to true for back-compat for widgets that have data-dojo-attach-point's\n\t\t// and events inside this.containerNode. Remove for 2.0.\n\t\tsearchContainerNode: true,\n\n\t\t_stringRepl: function(tmpl){\n\t\t\t// summary:\n\t\t\t//\t\tDoes substitution of ${foo} type properties in template string\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\t\t\tvar className = this.declaredClass, _this = this;\n\t\t\t// Cache contains a string because we need to do property replacement\n\t\t\t// do the property replacement\n\t\t\treturn string.substitute(tmpl, this, function(value, key){\n\t\t\t\tif(key.charAt(0) == '!'){ value = lang.getObject(key.substr(1), false, _this); }\n\t\t\t\tif(typeof value == \"undefined\"){ throw new Error(className+\" template:\"+key); } // a debugging aide\n\t\t\t\tif(value == null){ return \"\"; }\n\n\t\t\t\t// Substitution keys beginning with ! will skip the transform step,\n\t\t\t\t// in case a user wishes to insert unescaped markup, e.g. ${!foo}\n\t\t\t\treturn key.charAt(0) == \"!\" ? value : this._escapeValue(\"\" + value);\n\t\t\t}, this);\n\t\t},\n\n\t\t_escapeValue: function(/*String*/ val){\n\t\t\t// summary:\n\t\t\t//\t\tEscape a value to be inserted into the template, either into an attribute value\n\t\t\t//\t\t(ex: foo=\"${bar}\") or as inner text of an element (ex: <span>${foo}</span>)\n\n\t\t\t// Safer substitution, see heading \"Attribute values\" in\n\t\t\t// http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.3.2\n\t\t\t// and also https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet#RULE_.231_-_HTML_Escape_Before_Inserting_Untrusted_Data_into_HTML_Element_Content\n\t\t\treturn val.replace(/[\"'<>&]/g, function(val){\n\t\t\t\treturn {\n\t\t\t\t\t\"&\": \"&\",\n\t\t\t\t\t\"<\": \"<\",\n\t\t\t\t\t\">\": \">\",\n\t\t\t\t\t\"\\\"\": \""\",\n\t\t\t\t\t\"'\": \"'\"\n\t\t\t\t}[val];\n\t\t\t});\n\t\t},\n\n\t\tbuildRendering: function(){\n\t\t\t// summary:\n\t\t\t//\t\tConstruct the UI for this widget from a template, setting this.domNode.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\tif(!this._rendered){\n\t\t\t\tif(!this.templateString){\n\t\t\t\t\tthis.templateString = cache(this.templatePath, {sanitize: true});\n\t\t\t\t}\n\n\t\t\t\t// Lookup cached version of template, and download to cache if it\n\t\t\t\t// isn't there already. Returns either a DomNode or a string, depending on\n\t\t\t\t// whether or not the template contains ${foo} replacement parameters.\n\t\t\t\tvar cached = _TemplatedMixin.getCachedTemplate(this.templateString, this._skipNodeCache, this.ownerDocument);\n\n\t\t\t\tvar node;\n\t\t\t\tif(lang.isString(cached)){\n\t\t\t\t\tnode = domConstruct.toDom(this._stringRepl(cached), this.ownerDocument);\n\t\t\t\t\tif(node.nodeType != 1){\n\t\t\t\t\t\t// Flag common problems such as templates with multiple top level nodes (nodeType == 11)\n\t\t\t\t\t\tthrow new Error(\"Invalid template: \" + cached);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\t// if it's a node, all we have to do is clone it\n\t\t\t\t\tnode = cached.cloneNode(true);\n\t\t\t\t}\n\n\t\t\t\tthis.domNode = node;\n\t\t\t}\n\n\t\t\t// Call down to _WidgetBase.buildRendering() to get base classes assigned\n\t\t\t// TODO: change the baseClass assignment to _setBaseClassAttr\n\t\t\tthis.inherited(arguments);\n\n\t\t\tif(!this._rendered){\n\t\t\t\tthis._fillContent(this.srcNodeRef);\n\t\t\t}\n\n\t\t\tthis._rendered = true;\n\t\t},\n\n\t\t_fillContent: function(/*DomNode*/ source){\n\t\t\t// summary:\n\t\t\t//\t\tRelocate source contents to templated container node.\n\t\t\t//\t\tthis.containerNode must be able to receive children, or exceptions will be thrown.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\tvar dest = this.containerNode;\n\t\t\tif(source && dest){\n\t\t\t\twhile(source.hasChildNodes()){\n\t\t\t\t\tdest.appendChild(source.firstChild);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t});\n\n\t// key is templateString; object is either string or DOM tree\n\t_TemplatedMixin._templateCache = {};\n\n\t_TemplatedMixin.getCachedTemplate = function(templateString, alwaysUseString, doc){\n\t\t// summary:\n\t\t//\t\tStatic method to get a template based on the templatePath or\n\t\t//\t\ttemplateString key\n\t\t// templateString: String\n\t\t//\t\tThe template\n\t\t// alwaysUseString: Boolean\n\t\t//\t\tDon't cache the DOM tree for this template, even if it doesn't have any variables\n\t\t// doc: Document?\n\t\t//\t\tThe target document. Defaults to document global if unspecified.\n\t\t// returns: Mixed\n\t\t//\t\tEither string (if there are ${} variables that need to be replaced) or just\n\t\t//\t\ta DOM tree (if the node can be cloned directly)\n\n\t\t// is it already cached?\n\t\tvar tmplts = _TemplatedMixin._templateCache;\n\t\tvar key = templateString;\n\t\tvar cached = tmplts[key];\n\t\tif(cached){\n\t\t\ttry{\n\t\t\t\t// if the cached value is an innerHTML string (no ownerDocument) or a DOM tree created within the\n\t\t\t\t// current document, then use the current cached value\n\t\t\t\tif(!cached.ownerDocument || cached.ownerDocument == (doc || document)){\n\t\t\t\t\t// string or node of the same document\n\t\t\t\t\treturn cached;\n\t\t\t\t}\n\t\t\t}catch(e){ /* squelch */ } // IE can throw an exception if cached.ownerDocument was reloaded\n\t\t\tdomConstruct.destroy(cached);\n\t\t}\n\n\t\ttemplateString = string.trim(templateString);\n\n\t\tif(alwaysUseString || templateString.match(/\\$\\{([^\\}]+)\\}/g)){\n\t\t\t// there are variables in the template so all we can do is cache the string\n\t\t\treturn (tmplts[key] = templateString); //String\n\t\t}else{\n\t\t\t// there are no variables in the template so we can cache the DOM tree\n\t\t\tvar node = domConstruct.toDom(templateString, doc);\n\t\t\tif(node.nodeType != 1){\n\t\t\t\tthrow new Error(\"Invalid template: \" + templateString);\n\t\t\t}\n\t\t\treturn (tmplts[key] = node); //Node\n\t\t}\n\t};\n\n\tif(has(\"ie\")){\n\t\ton(window, \"unload\", function(){\n\t\t\tvar cache = _TemplatedMixin._templateCache;\n\t\t\tfor(var key in cache){\n\t\t\t\tvar value = cache[key];\n\t\t\t\tif(typeof value == \"object\"){ // value is either a string or a DOM node template\n\t\t\t\t\tdomConstruct.destroy(value);\n\t\t\t\t}\n\t\t\t\tdelete cache[key];\n\t\t\t}\n\t\t});\n\t}\n\n\treturn _TemplatedMixin;\n});\n","define([\n\t\"dojo/aspect\",\t// aspect.around\n\t\"dojo/_base/config\",\t// config.isDebug\n\t\"dojo/_base/connect\",\t// connect.connect\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/has\",\n\t\"dojo/_base/kernel\", // kernel.deprecated\n\t\"dojo/_base/lang\", // lang.hitch\n\t\"dojo/query\",\n\t\"dojo/ready\",\n\t\"./registry\",\t// registry.byNode\n\t\"./_WidgetBase\",\n\t\"./_OnDijitClickMixin\",\n\t\"./_FocusMixin\",\n\t\"dojo/uacss\",\t\t// browser sniffing (included for back-compat; subclasses may be using)\n\t\"./hccss\"\t\t// high contrast mode sniffing (included to set CSS classes on <body>, module ret value unused)\n], function(aspect, config, connect, declare, has, kernel, lang, query, ready,\n\t\t\tregistry, _WidgetBase, _OnDijitClickMixin, _FocusMixin){\n\n\n// module:\n//\t\tdijit/_Widget\n\n\nfunction connectToDomNode(){\n\t// summary:\n\t//\t\tIf user connects to a widget method === this function, then they will\n\t//\t\tinstead actually be connecting the equivalent event on this.domNode\n}\n\n// Trap dojo.connect() calls to connectToDomNode methods, and redirect to _Widget.on()\nfunction aroundAdvice(originalConnect){\n\treturn function(obj, event, scope, method){\n\t\tif(obj && typeof event == \"string\" && obj[event] == connectToDomNode){\n\t\t\treturn obj.on(event.substring(2).toLowerCase(), lang.hitch(scope, method));\n\t\t}\n\t\treturn originalConnect.apply(connect, arguments);\n\t};\n}\naspect.around(connect, \"connect\", aroundAdvice);\nif(kernel.connect){\n\taspect.around(kernel, \"connect\", aroundAdvice);\n}\n\nvar _Widget = declare(\"dijit._Widget\", [_WidgetBase, _OnDijitClickMixin, _FocusMixin], {\n\t// summary:\n\t//\t\tOld base class for widgets. New widgets should extend `dijit/_WidgetBase` instead\n\t// description:\n\t//\t\tOld Base class for Dijit widgets.\n\t//\n\t//\t\tExtends _WidgetBase, adding support for:\n\t//\n\t//\t\t- declaratively/programatically specifying widget initialization parameters like\n\t//\t\t\tonMouseMove=\"foo\" that call foo when this.domNode gets a mousemove event\n\t//\t\t- ondijitclick:\n\t//\t\t\tSupport new data-dojo-attach-event=\"ondijitclick: ...\" that is triggered by a mouse click or a SPACE/ENTER keypress\n\t//\t\t- focus related functions:\n\t//\t\t\tIn particular, the onFocus()/onBlur() callbacks. Driven internally by\n\t//\t\t\tdijit/_base/focus.js.\n\t//\t\t- deprecated methods\n\t//\t\t- onShow(), onHide(), onClose()\n\t//\n\t//\t\tAlso, by loading code in dijit/_base, turns on:\n\t//\n\t//\t\t- browser sniffing (putting browser class like `dj_ie` on `<html>` node)\n\t//\t\t- high contrast mode sniffing (add `dijit_a11y` class to `<body>` if machine is in high contrast mode)\n\n\n\t////////////////// DEFERRED CONNECTS ///////////////////\n\n\tonClick: connectToDomNode,\n\t/*=====\n\tonClick: function(event){\n\t\t// summary:\n\t\t//\t\tConnect to this function to receive notifications of mouse click events.\n\t\t// event:\n\t\t//\t\tmouse Event\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\t=====*/\n\tonDblClick: connectToDomNode,\n\t/*=====\n\tonDblClick: function(event){\n\t\t// summary:\n\t\t//\t\tConnect to this function to receive notifications of mouse double click events.\n\t\t// event:\n\t\t//\t\tmouse Event\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\t=====*/\n\tonKeyDown: connectToDomNode,\n\t/*=====\n\tonKeyDown: function(event){\n\t\t// summary:\n\t\t//\t\tConnect to this function to receive notifications of keys being pressed down.\n\t\t// event:\n\t\t//\t\tkey Event\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\t=====*/\n\tonKeyPress: connectToDomNode,\n\t/*=====\n\tonKeyPress: function(event){\n\t\t// summary:\n\t\t//\t\tConnect to this function to receive notifications of printable keys being typed.\n\t\t// event:\n\t\t//\t\tkey Event\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\t=====*/\n\tonKeyUp: connectToDomNode,\n\t/*=====\n\tonKeyUp: function(event){\n\t\t// summary:\n\t\t//\t\tConnect to this function to receive notifications of keys being released.\n\t\t// event:\n\t\t//\t\tkey Event\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\t=====*/\n\tonMouseDown: connectToDomNode,\n\t/*=====\n\tonMouseDown: function(event){\n\t\t// summary:\n\t\t//\t\tConnect to this function to receive notifications of when the mouse button is pressed down.\n\t\t// event:\n\t\t//\t\tmouse Event\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\t=====*/\n\tonMouseMove: connectToDomNode,\n\t/*=====\n\tonMouseMove: function(event){\n\t\t// summary:\n\t\t//\t\tConnect to this function to receive notifications of when the mouse moves over nodes contained within this widget.\n\t\t// event:\n\t\t//\t\tmouse Event\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\t=====*/\n\tonMouseOut: connectToDomNode,\n\t/*=====\n\tonMouseOut: function(event){\n\t\t// summary:\n\t\t//\t\tConnect to this function to receive notifications of when the mouse moves off of nodes contained within this widget.\n\t\t// event:\n\t\t//\t\tmouse Event\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\t=====*/\n\tonMouseOver: connectToDomNode,\n\t/*=====\n\tonMouseOver: function(event){\n\t\t// summary:\n\t\t//\t\tConnect to this function to receive notifications of when the mouse moves onto nodes contained within this widget.\n\t\t// event:\n\t\t//\t\tmouse Event\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\t=====*/\n\tonMouseLeave: connectToDomNode,\n\t/*=====\n\tonMouseLeave: function(event){\n\t\t// summary:\n\t\t//\t\tConnect to this function to receive notifications of when the mouse moves off of this widget.\n\t\t// event:\n\t\t//\t\tmouse Event\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\t=====*/\n\tonMouseEnter: connectToDomNode,\n\t/*=====\n\tonMouseEnter: function(event){\n\t\t// summary:\n\t\t//\t\tConnect to this function to receive notifications of when the mouse moves onto this widget.\n\t\t// event:\n\t\t//\t\tmouse Event\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\t=====*/\n\tonMouseUp: connectToDomNode,\n\t/*=====\n\tonMouseUp: function(event){\n\t\t// summary:\n\t\t//\t\tConnect to this function to receive notifications of when the mouse button is released.\n\t\t// event:\n\t\t//\t\tmouse Event\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\t=====*/\n\n\tconstructor: function(params /*===== ,srcNodeRef =====*/){\n\t\t// summary:\n\t\t//\t\tCreate the widget.\n\t\t// params: Object|null\n\t\t//\t\tHash of initialization parameters for widget, including scalar values (like title, duration etc.)\n\t\t//\t\tand functions, typically callbacks like onClick.\n\t\t//\t\tThe hash can contain any of the widget's properties, excluding read-only properties.\n\t\t// srcNodeRef: DOMNode|String?\n\t\t//\t\tIf a srcNodeRef (DOM node) is specified:\n\t\t//\n\t\t//\t\t- use srcNodeRef.innerHTML as my contents\n\t\t//\t\t- if this is a behavioral widget then apply behavior to that srcNodeRef\n\t\t//\t\t- otherwise, replace srcNodeRef with my generated DOM tree\n\n\t\t// extract parameters like onMouseMove that should connect directly to this.domNode\n\t\tthis._toConnect = {};\n\t\tfor(var name in params){\n\t\t\tif(this[name] === connectToDomNode){\n\t\t\t\tthis._toConnect[name.replace(/^on/, \"\").toLowerCase()] = params[name];\n\t\t\t\tdelete params[name];\n\t\t\t}\n\t\t}\n\t},\n\n\tpostCreate: function(){\n\t\tthis.inherited(arguments);\n\n\t\t// perform connection from this.domNode to user specified handlers (ex: onMouseMove)\n\t\tfor(var name in this._toConnect){\n\t\t\tthis.on(name, this._toConnect[name]);\n\t\t}\n\t\tdelete this._toConnect;\n\t},\n\n\ton: function(/*String|Function*/ type, /*Function*/ func){\n\t\tif(this[this._onMap(type)] === connectToDomNode){\n\t\t\t// Use connect.connect() rather than on() to get handling for \"onmouseenter\" on non-IE,\n\t\t\t// normalization of onkeypress/onkeydown to behave like firefox, etc.\n\t\t\t// Also, need to specify context as \"this\" rather than the default context of the DOMNode\n\t\t\t// Remove in 2.0.\n\t\t\treturn connect.connect(this.domNode, type.toLowerCase(), this, func);\n\t\t}\n\t\treturn this.inherited(arguments);\n\t},\n\n\t_setFocusedAttr: function(val){\n\t\t// Remove this method in 2.0 (or sooner), just here to set _focused == focused, for back compat\n\t\t// (but since it's a private variable we aren't required to keep supporting it).\n\t\tthis._focused = val;\n\t\tthis._set(\"focused\", val);\n\t},\n\n\t////////////////// DEPRECATED METHODS ///////////////////\n\n\tsetAttribute: function(/*String*/ attr, /*anything*/ value){\n\t\t// summary:\n\t\t//\t\tDeprecated. Use set() instead.\n\t\t// tags:\n\t\t//\t\tdeprecated\n\t\tkernel.deprecated(this.declaredClass+\"::setAttribute(attr, value) is deprecated. Use set() instead.\", \"\", \"2.0\");\n\t\tthis.set(attr, value);\n\t},\n\n\tattr: function(/*String|Object*/name, /*Object?*/value){\n\t\t// summary:\n\t\t//\t\tThis method is deprecated, use get() or set() directly.\n\t\t// name:\n\t\t//\t\tThe property to get or set. If an object is passed here and not\n\t\t//\t\ta string, its keys are used as names of attributes to be set\n\t\t//\t\tand the value of the object as values to set in the widget.\n\t\t// value:\n\t\t//\t\tOptional. If provided, attr() operates as a setter. If omitted,\n\t\t//\t\tthe current value of the named property is returned.\n\t\t// tags:\n\t\t//\t\tdeprecated\n\n\t\tvar args = arguments.length;\n\t\tif(args >= 2 || typeof name === \"object\"){ // setter\n\t\t\treturn this.set.apply(this, arguments);\n\t\t}else{ // getter\n\t\t\treturn this.get(name);\n\t\t}\n\t},\n\n\tgetDescendants: function(){\n\t\t// summary:\n\t\t//\t\tReturns all the widgets contained by this, i.e., all widgets underneath this.containerNode.\n\t\t//\t\tThis method should generally be avoided as it returns widgets declared in templates, which are\n\t\t//\t\tsupposed to be internal/hidden, but it's left here for back-compat reasons.\n\n\t\tkernel.deprecated(this.declaredClass+\"::getDescendants() is deprecated. Use getChildren() instead.\", \"\", \"2.0\");\n\t\treturn this.containerNode ? query('[widgetId]', this.containerNode).map(registry.byNode) : []; // dijit/_WidgetBase[]\n\t},\n\n\t////////////////// MISCELLANEOUS METHODS ///////////////////\n\n\t_onShow: function(){\n\t\t// summary:\n\t\t//\t\tInternal method called when this widget is made visible.\n\t\t//\t\tSee `onShow` for details.\n\t\tthis.onShow();\n\t},\n\n\tonShow: function(){\n\t\t// summary:\n\t\t//\t\tCalled when this widget becomes the selected pane in a\n\t\t//\t\t`dijit/layout/TabContainer`, `dijit/layout/StackContainer`,\n\t\t//\t\t`dijit/layout/AccordionContainer`, etc.\n\t\t//\n\t\t//\t\tAlso called to indicate display of a `dijit.Dialog`, `dijit.TooltipDialog`, or `dijit.TitlePane`.\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\n\tonHide: function(){\n\t\t// summary:\n\t\t//\t\tCalled when another widget becomes the selected pane in a\n\t\t//\t\t`dijit/layout/TabContainer`, `dijit/layout/StackContainer`,\n\t\t//\t\t`dijit/layout/AccordionContainer`, etc.\n\t\t//\n\t\t//\t\tAlso called to indicate hide of a `dijit.Dialog`, `dijit.TooltipDialog`, or `dijit.TitlePane`.\n\t\t// tags:\n\t\t//\t\tcallback\n\t},\n\n\tonClose: function(){\n\t\t// summary:\n\t\t//\t\tCalled when this widget is being displayed as a popup (ex: a Calendar popped\n\t\t//\t\tup from a DateTextBox), and it is hidden.\n\t\t//\t\tThis is called from the dijit.popup code, and should not be called directly.\n\t\t//\n\t\t//\t\tAlso used as a parameter for children of `dijit/layout/StackContainer` or subclasses.\n\t\t//\t\tCallback if a user tries to close the child. Child will be closed if this function returns true.\n\t\t// tags:\n\t\t//\t\textension\n\n\t\treturn true;\t\t// Boolean\n\t}\n});\n\n// For back-compat, remove in 2.0.\nif(has(\"dijit-legacy-requires\")){\n\tready(0, function(){\n\t\tvar requires = [\"dijit/_base\"];\n\t\trequire(requires);\t// use indirection so modules not rolled into a build\n\t});\n}\nreturn _Widget;\n});\n","define([\n\t\"require\", // require.toUrl\n\t\"dojo/_base/array\", // array.forEach array.map\n\t\"dojo/aspect\",\n\t\"dojo/_base/config\", // config.blankGif\n\t\"dojo/_base/connect\", // connect.connect\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/dom\", // dom.byId\n\t\"dojo/dom-attr\", // domAttr.set domAttr.remove\n\t\"dojo/dom-class\", // domClass.add domClass.replace\n\t\"dojo/dom-construct\", // domConstruct.destroy domConstruct.place\n\t\"dojo/dom-geometry\", // isBodyLtr\n\t\"dojo/dom-style\", // domStyle.set, domStyle.get\n\t\"dojo/has\",\n\t\"dojo/_base/kernel\",\n\t\"dojo/_base/lang\", // mixin(), isArray(), etc.\n\t\"dojo/on\",\n\t\"dojo/ready\",\n\t\"dojo/Stateful\", // Stateful\n\t\"dojo/topic\",\n\t\"dojo/_base/window\", // win.body()\n\t\"./Destroyable\",\n\t\"dojo/has!dojo-bidi?./_BidiMixin\",\n\t\"./registry\" // registry.getUniqueId(), registry.findWidgets()\n], function(require, array, aspect, config, connect, declare,\n\t\t\tdom, domAttr, domClass, domConstruct, domGeometry, domStyle, has, kernel,\n\t\t\tlang, on, ready, Stateful, topic, win, Destroyable, _BidiMixin, registry){\n\n\t// module:\n\t//\t\tdijit/_WidgetBase\n\n\t// Flag to make dijit load modules the app didn't explicitly request, for backwards compatibility\n\thas.add(\"dijit-legacy-requires\", !kernel.isAsync);\n\n\t// Flag to enable support for textdir attribute\n\thas.add(\"dojo-bidi\", false);\n\n\n\t// For back-compat, remove in 2.0.\n\tif(has(\"dijit-legacy-requires\")){\n\t\tready(0, function(){\n\t\t\tvar requires = [\"dijit/_base/manager\"];\n\t\t\trequire(requires);\t// use indirection so modules not rolled into a build\n\t\t});\n\t}\n\n\t// Nested hash listing attributes for each tag, all strings in lowercase.\n\t// ex: {\"div\": {\"style\": true, \"tabindex\" true}, \"form\": { ...\n\tvar tagAttrs = {};\n\n\tfunction getAttrs(obj){\n\t\tvar ret = {};\n\t\tfor(var attr in obj){\n\t\t\tret[attr.toLowerCase()] = true;\n\t\t}\n\t\treturn ret;\n\t}\n\n\tfunction nonEmptyAttrToDom(attr){\n\t\t// summary:\n\t\t//\t\tReturns a setter function that copies the attribute to this.domNode,\n\t\t//\t\tor removes the attribute from this.domNode, depending on whether the\n\t\t//\t\tvalue is defined or not.\n\t\treturn function(val){\n\t\t\tdomAttr[val ? \"set\" : \"remove\"](this.domNode, attr, val);\n\t\t\tthis._set(attr, val);\n\t\t};\n\t}\n\n\tfunction isEqual(a, b){\n\t\t//\tsummary:\n\t\t//\t\tFunction that determines whether two values are identical,\n\t\t//\t\ttaking into account that NaN is not normally equal to itself\n\t\t//\t\tin JS.\n\n\t\treturn a === b || (/* a is NaN */ a !== a && /* b is NaN */ b !== b);\n\t}\n\n\tvar _WidgetBase = declare(\"dijit._WidgetBase\", [Stateful, Destroyable], {\n\t\t// summary:\n\t\t//\t\tFuture base class for all Dijit widgets.\n\t\t// description:\n\t\t//\t\tFuture base class for all Dijit widgets.\n\t\t//\t\t_Widget extends this class adding support for various features needed by desktop.\n\t\t//\n\t\t//\t\tProvides stubs for widget lifecycle methods for subclasses to extend, like postMixInProperties(), buildRendering(),\n\t\t//\t\tpostCreate(), startup(), and destroy(), and also public API methods like set(), get(), and watch().\n\t\t//\n\t\t//\t\tWidgets can provide custom setters/getters for widget attributes, which are called automatically by set(name, value).\n\t\t//\t\tFor an attribute XXX, define methods _setXXXAttr() and/or _getXXXAttr().\n\t\t//\n\t\t//\t\t_setXXXAttr can also be a string/hash/array mapping from a widget attribute XXX to the widget's DOMNodes:\n\t\t//\n\t\t//\t\t- DOM node attribute\n\t\t// |\t\t_setFocusAttr: {node: \"focusNode\", type: \"attribute\"}\n\t\t// |\t\t_setFocusAttr: \"focusNode\"\t(shorthand)\n\t\t// |\t\t_setFocusAttr: \"\"\t\t(shorthand, maps to this.domNode)\n\t\t//\t\tMaps this.focus to this.focusNode.focus, or (last example) this.domNode.focus\n\t\t//\n\t\t//\t\t- DOM node innerHTML\n\t\t//\t|\t\t_setTitleAttr: { node: \"titleNode\", type: \"innerHTML\" }\n\t\t//\t\tMaps this.title to this.titleNode.innerHTML\n\t\t//\n\t\t//\t\t- DOM node innerText\n\t\t//\t|\t\t_setTitleAttr: { node: \"titleNode\", type: \"innerText\" }\n\t\t//\t\tMaps this.title to this.titleNode.innerText\n\t\t//\n\t\t//\t\t- DOM node CSS class\n\t\t// |\t\t_setMyClassAttr: { node: \"domNode\", type: \"class\" }\n\t\t//\t\tMaps this.myClass to this.domNode.className\n\t\t//\n\t\t//\t\t- Toggle DOM node CSS class\n\t\t// |\t\t_setMyClassAttr: { node: \"domNode\", type: \"toggleClass\" }\n\t\t//\t\tToggles myClass on this.domNode by this.myClass\n\t\t//\n\t\t//\t\tIf the value of _setXXXAttr is an array, then each element in the array matches one of the\n\t\t//\t\tformats of the above list.\n\t\t//\n\t\t//\t\tIf the custom setter is null, no action is performed other than saving the new value\n\t\t//\t\tin the widget (in this).\n\t\t//\n\t\t//\t\tIf no custom setter is defined for an attribute, then it will be copied\n\t\t//\t\tto this.focusNode (if the widget defines a focusNode), or this.domNode otherwise.\n\t\t//\t\tThat's only done though for attributes that match DOMNode attributes (title,\n\t\t//\t\talt, aria-labelledby, etc.)\n\n\t\t// id: [const] String\n\t\t//\t\tA unique, opaque ID string that can be assigned by users or by the\n\t\t//\t\tsystem. If the developer passes an ID which is known not to be\n\t\t//\t\tunique, the specified ID is ignored and the system-generated ID is\n\t\t//\t\tused instead.\n\t\tid: \"\",\n\t\t_setIdAttr: \"domNode\", // to copy to this.domNode even for auto-generated id's\n\n\t\t// lang: [const] String\n\t\t//\t\tRarely used. Overrides the default Dojo locale used to render this widget,\n\t\t//\t\tas defined by the [HTML LANG](http://www.w3.org/TR/html401/struct/dirlang.html#adef-lang) attribute.\n\t\t//\t\tValue must be among the list of locales specified during by the Dojo bootstrap,\n\t\t//\t\tformatted according to [RFC 3066](http://www.ietf.org/rfc/rfc3066.txt) (like en-us).\n\t\tlang: \"\",\n\t\t// set on domNode even when there's a focus node.\tbut don't set lang=\"\", since that's invalid.\n\t\t_setLangAttr: nonEmptyAttrToDom(\"lang\"),\n\n\t\t// dir: [const] String\n\t\t//\t\tBi-directional support, as defined by the [HTML DIR](http://www.w3.org/TR/html401/struct/dirlang.html#adef-dir)\n\t\t//\t\tattribute. Either left-to-right \"ltr\" or right-to-left \"rtl\". If undefined, widgets renders in page's\n\t\t//\t\tdefault direction.\n\t\tdir: \"\",\n\t\t// set on domNode even when there's a focus node.\tbut don't set dir=\"\", since that's invalid.\n\t\t_setDirAttr: nonEmptyAttrToDom(\"dir\"), // to set on domNode even when there's a focus node\n\n\t\t// class: String\n\t\t//\t\tHTML class attribute\n\t\t\"class\": \"\",\n\t\t_setClassAttr: { node: \"domNode\", type: \"class\" },\n\n\t\t// Override automatic assigning type --> focusNode, it causes exception on IE6-8.\n\t\t// Instead, type must be specified as ${type} in the template, as part of the original DOM.\n\t\t_setTypeAttr: null,\n\n\t\t// style: String||Object\n\t\t//\t\tHTML style attributes as cssText string or name/value hash\n\t\tstyle: \"\",\n\n\t\t// title: String\n\t\t//\t\tHTML title attribute.\n\t\t//\n\t\t//\t\tFor form widgets this specifies a tooltip to display when hovering over\n\t\t//\t\tthe widget (just like the native HTML title attribute).\n\t\t//\n\t\t//\t\tFor TitlePane or for when this widget is a child of a TabContainer, AccordionContainer,\n\t\t//\t\tetc., it's used to specify the tab label, accordion pane title, etc. In this case it's\n\t\t//\t\tinterpreted as HTML.\n\t\ttitle: \"\",\n\n\t\t// tooltip: String\n\t\t//\t\tWhen this widget's title attribute is used to for a tab label, accordion pane title, etc.,\n\t\t//\t\tthis specifies the tooltip to appear when the mouse is hovered over that text.\n\t\ttooltip: \"\",\n\n\t\t// baseClass: [protected] String\n\t\t//\t\tRoot CSS class of the widget (ex: dijitTextBox), used to construct CSS classes to indicate\n\t\t//\t\twidget state.\n\t\tbaseClass: \"\",\n\n\t\t// srcNodeRef: [readonly] DomNode\n\t\t//\t\tpointer to original DOM node\n\t\tsrcNodeRef: null,\n\n\t\t// domNode: [readonly] DomNode\n\t\t//\t\tThis is our visible representation of the widget! Other DOM\n\t\t//\t\tNodes may by assigned to other properties, usually through the\n\t\t//\t\ttemplate system's data-dojo-attach-point syntax, but the domNode\n\t\t//\t\tproperty is the canonical \"top level\" node in widget UI.\n\t\tdomNode: null,\n\n\t\t// containerNode: [readonly] DomNode\n\t\t//\t\tDesignates where children of the source DOM node will be placed.\n\t\t//\t\t\"Children\" in this case refers to both DOM nodes and widgets.\n\t\t//\t\tFor example, for myWidget:\n\t\t//\n\t\t//\t\t|\t<div data-dojo-type=myWidget>\n\t\t//\t\t|\t\t<b> here's a plain DOM node\n\t\t//\t\t|\t\t<span data-dojo-type=subWidget>and a widget</span>\n\t\t//\t\t|\t\t<i> and another plain DOM node </i>\n\t\t//\t\t|\t</div>\n\t\t//\n\t\t//\t\tcontainerNode would point to:\n\t\t//\n\t\t//\t\t|\t\t<b> here's a plain DOM node\n\t\t//\t\t|\t\t<span data-dojo-type=subWidget>and a widget</span>\n\t\t//\t\t|\t\t<i> and another plain DOM node </i>\n\t\t//\n\t\t//\t\tIn templated widgets, \"containerNode\" is set via a\n\t\t//\t\tdata-dojo-attach-point assignment.\n\t\t//\n\t\t//\t\tcontainerNode must be defined for any widget that accepts innerHTML\n\t\t//\t\t(like ContentPane or BorderContainer or even Button), and conversely\n\t\t//\t\tis null for widgets that don't, like TextBox.\n\t\tcontainerNode: null,\n\n\t\t// ownerDocument: [const] Document?\n\t\t//\t\tThe document this widget belongs to. If not specified to constructor, will default to\n\t\t//\t\tsrcNodeRef.ownerDocument, or if no sourceRef specified, then to the document global\n\t\townerDocument: null,\n\t\t_setOwnerDocumentAttr: function(val){\n\t\t\t// this setter is merely to avoid automatically trying to set this.domNode.ownerDocument\n\t\t\tthis._set(\"ownerDocument\", val);\n\t\t},\n\n\t\t/*=====\n\t\t// _started: [readonly] Boolean\n\t\t//\t\tstartup() has completed.\n\t\t_started: false,\n\t\t=====*/\n\n\t\t// attributeMap: [protected] Object\n\t\t//\t\tDeprecated.\tInstead of attributeMap, widget should have a _setXXXAttr attribute\n\t\t//\t\tfor each XXX attribute to be mapped to the DOM.\n\t\t//\n\t\t//\t\tattributeMap sets up a \"binding\" between attributes (aka properties)\n\t\t//\t\tof the widget and the widget's DOM.\n\t\t//\t\tChanges to widget attributes listed in attributeMap will be\n\t\t//\t\treflected into the DOM.\n\t\t//\n\t\t//\t\tFor example, calling set('title', 'hello')\n\t\t//\t\ton a TitlePane will automatically cause the TitlePane's DOM to update\n\t\t//\t\twith the new title.\n\t\t//\n\t\t//\t\tattributeMap is a hash where the key is an attribute of the widget,\n\t\t//\t\tand the value reflects a binding to a:\n\t\t//\n\t\t//\t\t- DOM node attribute\n\t\t// |\t\tfocus: {node: \"focusNode\", type: \"attribute\"}\n\t\t//\t\tMaps this.focus to this.focusNode.focus\n\t\t//\n\t\t//\t\t- DOM node innerHTML\n\t\t//\t|\t\ttitle: { node: \"titleNode\", type: \"innerHTML\" }\n\t\t//\t\tMaps this.title to this.titleNode.innerHTML\n\t\t//\n\t\t//\t\t- DOM node innerText\n\t\t//\t|\t\ttitle: { node: \"titleNode\", type: \"innerText\" }\n\t\t//\t\tMaps this.title to this.titleNode.innerText\n\t\t//\n\t\t//\t\t- DOM node CSS class\n\t\t// |\t\tmyClass: { node: \"domNode\", type: \"class\" }\n\t\t//\t\tMaps this.myClass to this.domNode.className\n\t\t//\n\t\t//\t\tIf the value is an array, then each element in the array matches one of the\n\t\t//\t\tformats of the above list.\n\t\t//\n\t\t//\t\tThere are also some shorthands for backwards compatibility:\n\t\t//\n\t\t//\t\t- string --> { node: string, type: \"attribute\" }, for example:\n\t\t//\n\t\t//\t|\t\"focusNode\" ---> { node: \"focusNode\", type: \"attribute\" }\n\t\t//\n\t\t//\t\t- \"\" --> { node: \"domNode\", type: \"attribute\" }\n\t\tattributeMap: {},\n\n\t\t// _blankGif: [protected] String\n\t\t//\t\tPath to a blank 1x1 image.\n\t\t//\t\tUsed by `<img>` nodes in templates that really get their image via CSS background-image.\n\t\t_blankGif: config.blankGif || require.toUrl(\"dojo/resources/blank.gif\"),\n\n\t\t// textDir: String\n\t\t//\t\tBi-directional support,\tthe main variable which is responsible for the direction of the text.\n\t\t//\t\tThe text direction can be different than the GUI direction by using this parameter in creation\n\t\t//\t\tof a widget.\n\t\t//\n\t\t//\t\tThis property is only effective when `has(\"dojo-bidi\")` is defined to be true.\n\t\t//\n\t\t//\t\tAllowed values:\n\t\t//\n\t\t//\t\t1. \"\" - default value; text is same direction as widget\n\t\t//\t\t2. \"ltr\"\n\t\t//\t\t3. \"rtl\"\n\t\t//\t\t4. \"auto\" - contextual the direction of a text defined by first strong letter.\n\t\ttextDir: \"\",\n\n\t\t//////////// INITIALIZATION METHODS ///////////////////////////////////////\n\n\t\t/*=====\n\t\tconstructor: function(params, srcNodeRef){\n\t\t\t// summary:\n\t\t\t//\t\tCreate the widget.\n\t\t\t// params: Object|null\n\t\t\t//\t\tHash of initialization parameters for widget, including scalar values (like title, duration etc.)\n\t\t\t//\t\tand functions, typically callbacks like onClick.\n\t\t\t//\t\tThe hash can contain any of the widget's properties, excluding read-only properties.\n\t\t\t// srcNodeRef: DOMNode|String?\n\t\t\t//\t\tIf a srcNodeRef (DOM node) is specified:\n\t\t\t//\n\t\t\t//\t\t- use srcNodeRef.innerHTML as my contents\n\t\t\t//\t\t- if this is a behavioral widget then apply behavior to that srcNodeRef\n\t\t\t//\t\t- otherwise, replace srcNodeRef with my generated DOM tree\n\t\t},\n\t\t=====*/\n\n\t\t_introspect: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCollect metadata about this widget (only once per class, not once per instance):\n\t\t\t//\n\t\t\t//\t\t\t- list of attributes with custom setters, storing in this.constructor._setterAttrs\n\t\t\t//\t\t\t- generate this.constructor._onMap, mapping names like \"mousedown\" to functions like onMouseDown\n\n\t\t\tvar ctor = this.constructor;\n\t\t\tif(!ctor._setterAttrs){\n\t\t\t\tvar proto = ctor.prototype,\n\t\t\t\t\tattrs = ctor._setterAttrs = [], // attributes with custom setters\n\t\t\t\t\tonMap = (ctor._onMap = {});\n\n\t\t\t\t// Items in this.attributeMap are like custom setters. For back-compat, remove for 2.0.\n\t\t\t\tfor(var name in proto.attributeMap){\n\t\t\t\t\tattrs.push(name);\n\t\t\t\t}\n\n\t\t\t\t// Loop over widget properties, collecting properties with custom setters and filling in ctor._onMap.\n\t\t\t\tfor(name in proto){\n\t\t\t\t\tif(/^on/.test(name)){\n\t\t\t\t\t\tonMap[name.substring(2).toLowerCase()] = name;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(/^_set[A-Z](.*)Attr$/.test(name)){\n\t\t\t\t\t\tname = name.charAt(4).toLowerCase() + name.substr(5, name.length - 9);\n\t\t\t\t\t\tif(!proto.attributeMap || !(name in proto.attributeMap)){\n\t\t\t\t\t\t\tattrs.push(name);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Note: this isn't picking up info on properties like aria-label and role, that don't have custom setters\n\t\t\t\t// but that set() maps to attributes on this.domNode or this.focusNode\n\t\t\t}\n\t\t},\n\n\t\tpostscript: function(/*Object?*/params, /*DomNode|String*/srcNodeRef){\n\t\t\t// summary:\n\t\t\t//\t\tKicks off widget instantiation. See create() for details.\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\n\t\t\t// Note that we skip calling this.inherited(), i.e. dojo/Stateful::postscript(), because 1.x widgets don't\n\t\t\t// expect their custom setters to get called until after buildRendering(). Consider changing for 2.0.\n\n\t\t\tthis.create(params, srcNodeRef);\n\t\t},\n\n\t\tcreate: function(params, srcNodeRef){\n\t\t\t// summary:\n\t\t\t//\t\tKick off the life-cycle of a widget\n\t\t\t// description:\n\t\t\t//\t\tCreate calls a number of widget methods (postMixInProperties, buildRendering, postCreate,\n\t\t\t//\t\tetc.), some of which of you'll want to override. See http://dojotoolkit.org/reference-guide/dijit/_WidgetBase.html\n\t\t\t//\t\tfor a discussion of the widget creation lifecycle.\n\t\t\t//\n\t\t\t//\t\tOf course, adventurous developers could override create entirely, but this should\n\t\t\t//\t\tonly be done as a last resort.\n\t\t\t// params: Object|null\n\t\t\t//\t\tHash of initialization parameters for widget, including scalar values (like title, duration etc.)\n\t\t\t//\t\tand functions, typically callbacks like onClick.\n\t\t\t//\t\tThe hash can contain any of the widget's properties, excluding read-only properties.\n\t\t\t// srcNodeRef: DOMNode|String?\n\t\t\t//\t\tIf a srcNodeRef (DOM node) is specified:\n\t\t\t//\n\t\t\t//\t\t- use srcNodeRef.innerHTML as my contents\n\t\t\t//\t\t- if this is a behavioral widget then apply behavior to that srcNodeRef\n\t\t\t//\t\t- otherwise, replace srcNodeRef with my generated DOM tree\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\n\t\t\t// First time widget is instantiated, scan prototype to figure out info about custom setters etc.\n\t\t\tthis._introspect();\n\n\t\t\t// store pointer to original DOM tree\n\t\t\tthis.srcNodeRef = dom.byId(srcNodeRef);\n\n\t\t\t// No longer used, remove for 2.0.\n\t\t\tthis._connects = [];\n\t\t\tthis._supportingWidgets = [];\n\n\t\t\t// this is here for back-compat, remove in 2.0 (but check NodeList-instantiate.html test)\n\t\t\tif(this.srcNodeRef && this.srcNodeRef.id && (typeof this.srcNodeRef.id == \"string\")){\n\t\t\t\tthis.id = this.srcNodeRef.id;\n\t\t\t}\n\n\t\t\t// mix in our passed parameters\n\t\t\tif(params){\n\t\t\t\tthis.params = params;\n\t\t\t\tlang.mixin(this, params);\n\t\t\t}\n\t\t\tthis.postMixInProperties();\n\n\t\t\t// Generate an id for the widget if one wasn't specified, or it was specified as id: undefined.\n\t\t\t// Do this before buildRendering() because it might expect the id to be there.\n\t\t\tif(!this.id){\n\t\t\t\tthis.id = registry.getUniqueId(this.declaredClass.replace(/\\./g, \"_\"));\n\t\t\t\tif(this.params){\n\t\t\t\t\t// if params contains {id: undefined}, prevent _applyAttributes() from processing it\n\t\t\t\t\tdelete this.params.id;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// The document and <body> node this widget is associated with\n\t\t\tthis.ownerDocument = this.ownerDocument || (this.srcNodeRef ? this.srcNodeRef.ownerDocument : document);\n\t\t\tthis.ownerDocumentBody = win.body(this.ownerDocument);\n\n\t\t\tregistry.add(this);\n\n\t\t\tthis.buildRendering();\n\n\t\t\tvar deleteSrcNodeRef;\n\n\t\t\tif(this.domNode){\n\t\t\t\t// Copy attributes listed in attributeMap into the [newly created] DOM for the widget.\n\t\t\t\t// Also calls custom setters for all attributes with custom setters.\n\t\t\t\tthis._applyAttributes();\n\n\t\t\t\t// If srcNodeRef was specified, then swap out original srcNode for this widget's DOM tree.\n\t\t\t\t// For 2.0, move this after postCreate(). postCreate() shouldn't depend on the\n\t\t\t\t// widget being attached to the DOM since it isn't when a widget is created programmatically like\n\t\t\t\t// new MyWidget({}).\tSee #11635.\n\t\t\t\tvar source = this.srcNodeRef;\n\t\t\t\tif(source && source.parentNode && this.domNode !== source){\n\t\t\t\t\tsource.parentNode.replaceChild(this.domNode, source);\n\t\t\t\t\tdeleteSrcNodeRef = true;\n\t\t\t\t}\n\n\t\t\t\t// Note: for 2.0 may want to rename widgetId to dojo._scopeName + \"_widgetId\",\n\t\t\t\t// assuming that dojo._scopeName even exists in 2.0\n\t\t\t\tthis.domNode.setAttribute(\"widgetId\", this.id);\n\t\t\t}\n\t\t\tthis.postCreate();\n\n\t\t\t// If srcNodeRef has been processed and removed from the DOM (e.g. TemplatedWidget) then delete it to allow GC.\n\t\t\t// I think for back-compatibility it isn't deleting srcNodeRef until after postCreate() has run.\n\t\t\tif(deleteSrcNodeRef){\n\t\t\t\tdelete this.srcNodeRef;\n\t\t\t}\n\n\t\t\tthis._created = true;\n\t\t},\n\n\t\t_applyAttributes: function(){\n\t\t\t// summary:\n\t\t\t//\t\tStep during widget creation to copy widget attributes to the\n\t\t\t//\t\tDOM according to attributeMap and _setXXXAttr objects, and also to call\n\t\t\t//\t\tcustom _setXXXAttr() methods.\n\t\t\t//\n\t\t\t//\t\tSkips over blank/false attribute values, unless they were explicitly specified\n\t\t\t//\t\tas parameters to the widget, since those are the default anyway,\n\t\t\t//\t\tand setting tabIndex=\"\" is different than not setting tabIndex at all.\n\t\t\t//\n\t\t\t//\t\tFor backwards-compatibility reasons attributeMap overrides _setXXXAttr when\n\t\t\t//\t\t_setXXXAttr is a hash/string/array, but _setXXXAttr as a functions override attributeMap.\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\n\t\t\t// Call this.set() for each property that was either specified as parameter to constructor,\n\t\t\t// or is in the list found above.\tFor correlated properties like value and displayedValue, the one\n\t\t\t// specified as a parameter should take precedence.\n\t\t\t// Particularly important for new DateTextBox({displayedValue: ...}) since DateTextBox's default value is\n\t\t\t// NaN and thus is not ignored like a default value of \"\".\n\n\t\t\t// Step 1: Save the current values of the widget properties that were specified as parameters to the constructor.\n\t\t\t// Generally this.foo == this.params.foo, except if postMixInProperties() changed the value of this.foo.\n\t\t\tvar params = {};\n\t\t\tfor(var key in this.params || {}){\n\t\t\t\tparams[key] = this._get(key);\n\t\t\t}\n\n\t\t\t// Step 2: Call set() for each property with a non-falsy value that wasn't passed as a parameter to the constructor\n\t\t\tarray.forEach(this.constructor._setterAttrs, function(key){\n\t\t\t\tif(!(key in params)){\n\t\t\t\t\tvar val = this._get(key);\n\t\t\t\t\tif(val){\n\t\t\t\t\t\tthis.set(key, val);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\t// Step 3: Call set() for each property that was specified as parameter to constructor.\n\t\t\t// Use params hash created above to ignore side effects from step #2 above.\n\t\t\tfor(key in params){\n\t\t\t\tthis.set(key, params[key]);\n\t\t\t}\n\t\t},\n\n\t\tpostMixInProperties: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled after the parameters to the widget have been read-in,\n\t\t\t//\t\tbut before the widget template is instantiated. Especially\n\t\t\t//\t\tuseful to set properties that are referenced in the widget\n\t\t\t//\t\ttemplate.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t},\n\n\t\tbuildRendering: function(){\n\t\t\t// summary:\n\t\t\t//\t\tConstruct the UI for this widget, setting this.domNode.\n\t\t\t//\t\tMost widgets will mixin `dijit._TemplatedMixin`, which implements this method.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\tif(!this.domNode){\n\t\t\t\t// Create root node if it wasn't created by _TemplatedMixin\n\t\t\t\tthis.domNode = this.srcNodeRef || this.ownerDocument.createElement(\"div\");\n\t\t\t}\n\n\t\t\t// baseClass is a single class name or occasionally a space-separated list of names.\n\t\t\t// Add those classes to the DOMNode. If RTL mode then also add with Rtl suffix.\n\t\t\t// TODO: make baseClass custom setter\n\t\t\tif(this.baseClass){\n\t\t\t\tvar classes = this.baseClass.split(\" \");\n\t\t\t\tif(!this.isLeftToRight()){\n\t\t\t\t\tclasses = classes.concat(array.map(classes, function(name){\n\t\t\t\t\t\treturn name + \"Rtl\";\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\tdomClass.add(this.domNode, classes);\n\t\t\t}\n\t\t},\n\n\t\tpostCreate: function(){\n\t\t\t// summary:\n\t\t\t//\t\tProcessing after the DOM fragment is created\n\t\t\t// description:\n\t\t\t//\t\tCalled after the DOM fragment has been created, but not necessarily\n\t\t\t//\t\tadded to the document. Do not include any operations which rely on\n\t\t\t//\t\tnode dimensions or placement.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t},\n\n\t\tstartup: function(){\n\t\t\t// summary:\n\t\t\t//\t\tProcessing after the DOM fragment is added to the document\n\t\t\t// description:\n\t\t\t//\t\tCalled after a widget and its children have been created and added to the page,\n\t\t\t//\t\tand all related widgets have finished their create() cycle, up through postCreate().\n\t\t\t//\n\t\t\t//\t\tNote that startup() may be called while the widget is still hidden, for example if the widget is\n\t\t\t//\t\tinside a hidden dijit/Dialog or an unselected tab of a dijit/layout/TabContainer.\n\t\t\t//\t\tFor widgets that need to do layout, it's best to put that layout code inside resize(), and then\n\t\t\t//\t\textend dijit/layout/_LayoutWidget so that resize() is called when the widget is visible.\n\t\t\tif(this._started){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._started = true;\n\t\t\tarray.forEach(this.getChildren(), function(obj){\n\t\t\t\tif(!obj._started && !obj._destroyed && lang.isFunction(obj.startup)){\n\t\t\t\t\tobj.startup();\n\t\t\t\t\tobj._started = true;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t//////////// DESTROY FUNCTIONS ////////////////////////////////\n\n\t\tdestroyRecursive: function(/*Boolean?*/ preserveDom){\n\t\t\t// summary:\n\t\t\t//\t\tDestroy this widget and its descendants\n\t\t\t// description:\n\t\t\t//\t\tThis is the generic \"destructor\" function that all widget users\n\t\t\t//\t\tshould call to cleanly discard with a widget. Once a widget is\n\t\t\t//\t\tdestroyed, it is removed from the manager object.\n\t\t\t// preserveDom:\n\t\t\t//\t\tIf true, this method will leave the original DOM structure\n\t\t\t//\t\talone of descendant Widgets. Note: This will NOT work with\n\t\t\t//\t\tdijit._TemplatedMixin widgets.\n\n\t\t\tthis._beingDestroyed = true;\n\t\t\tthis.destroyDescendants(preserveDom);\n\t\t\tthis.destroy(preserveDom);\n\t\t},\n\n\t\tdestroy: function(/*Boolean*/ preserveDom){\n\t\t\t// summary:\n\t\t\t//\t\tDestroy this widget, but not its descendants. Descendants means widgets inside of\n\t\t\t//\t\tthis.containerNode. Will also destroy any resources (including widgets) registered via this.own().\n\t\t\t//\n\t\t\t//\t\tThis method will also destroy internal widgets such as those created from a template,\n\t\t\t//\t\tassuming those widgets exist inside of this.domNode but outside of this.containerNode.\n\t\t\t//\n\t\t\t//\t\tFor 2.0 it's planned that this method will also destroy descendant widgets, so apps should not\n\t\t\t//\t\tdepend on the current ability to destroy a widget without destroying its descendants. Generally\n\t\t\t//\t\tthey should use destroyRecursive() for widgets with children.\n\t\t\t// preserveDom: Boolean\n\t\t\t//\t\tIf true, this method will leave the original DOM structure alone.\n\t\t\t//\t\tNote: This will not yet work with _TemplatedMixin widgets\n\n\t\t\tthis._beingDestroyed = true;\n\t\t\tthis.uninitialize();\n\n\t\t\tfunction destroy(w){\n\t\t\t\tif(w.destroyRecursive){\n\t\t\t\t\tw.destroyRecursive(preserveDom);\n\t\t\t\t}else if(w.destroy){\n\t\t\t\t\tw.destroy(preserveDom);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Back-compat, remove for 2.0\n\t\t\tarray.forEach(this._connects, lang.hitch(this, \"disconnect\"));\n\t\t\tarray.forEach(this._supportingWidgets, destroy);\n\n\t\t\t// Destroy supporting widgets, but not child widgets under this.containerNode (for 2.0, destroy child widgets\n\t\t\t// here too). if() statement is to guard against exception if destroy() called multiple times (see #15815).\n\t\t\tif(this.domNode){\n\t\t\t\tarray.forEach(registry.findWidgets(this.domNode, this.containerNode), destroy);\n\t\t\t}\n\n\t\t\tthis.destroyRendering(preserveDom);\n\t\t\tregistry.remove(this.id);\n\t\t\tthis._destroyed = true;\n\t\t},\n\n\t\tdestroyRendering: function(/*Boolean?*/ preserveDom){\n\t\t\t// summary:\n\t\t\t//\t\tDestroys the DOM nodes associated with this widget.\n\t\t\t// preserveDom:\n\t\t\t//\t\tIf true, this method will leave the original DOM structure alone\n\t\t\t//\t\tduring tear-down. Note: this will not work with _Templated\n\t\t\t//\t\twidgets yet.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\tif(this.bgIframe){\n\t\t\t\tthis.bgIframe.destroy(preserveDom);\n\t\t\t\tdelete this.bgIframe;\n\t\t\t}\n\n\t\t\tif(this.domNode){\n\t\t\t\tif(preserveDom){\n\t\t\t\t\tdomAttr.remove(this.domNode, \"widgetId\");\n\t\t\t\t}else{\n\t\t\t\t\tdomConstruct.destroy(this.domNode);\n\t\t\t\t}\n\t\t\t\tdelete this.domNode;\n\t\t\t}\n\n\t\t\tif(this.srcNodeRef){\n\t\t\t\tif(!preserveDom){\n\t\t\t\t\tdomConstruct.destroy(this.srcNodeRef);\n\t\t\t\t}\n\t\t\t\tdelete this.srcNodeRef;\n\t\t\t}\n\t\t},\n\n\t\tdestroyDescendants: function(/*Boolean?*/ preserveDom){\n\t\t\t// summary:\n\t\t\t//\t\tRecursively destroy the children of this widget and their\n\t\t\t//\t\tdescendants.\n\t\t\t// preserveDom:\n\t\t\t//\t\tIf true, the preserveDom attribute is passed to all descendant\n\t\t\t//\t\twidget's .destroy() method. Not for use with _Templated\n\t\t\t//\t\twidgets.\n\n\t\t\t// get all direct descendants and destroy them recursively\n\t\t\tarray.forEach(this.getChildren(), function(widget){\n\t\t\t\tif(widget.destroyRecursive){\n\t\t\t\t\twidget.destroyRecursive(preserveDom);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tuninitialize: function(){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated. Override destroy() instead to implement custom widget tear-down\n\t\t\t//\t\tbehavior.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\treturn false;\n\t\t},\n\n\t\t////////////////// GET/SET, CUSTOM SETTERS, ETC. ///////////////////\n\n\t\t_setStyleAttr: function(/*String||Object*/ value){\n\t\t\t// summary:\n\t\t\t//\t\tSets the style attribute of the widget according to value,\n\t\t\t//\t\twhich is either a hash like {height: \"5px\", width: \"3px\"}\n\t\t\t//\t\tor a plain string\n\t\t\t// description:\n\t\t\t//\t\tDetermines which node to set the style on based on style setting\n\t\t\t//\t\tin attributeMap.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\tvar mapNode = this.domNode;\n\n\t\t\t// Note: technically we should revert any style setting made in a previous call\n\t\t\t// to his method, but that's difficult to keep track of.\n\n\t\t\tif(lang.isObject(value)){\n\t\t\t\tdomStyle.set(mapNode, value);\n\t\t\t}else{\n\t\t\t\tif(mapNode.style.cssText){\n\t\t\t\t\tmapNode.style.cssText += \"; \" + value;\n\t\t\t\t}else{\n\t\t\t\t\tmapNode.style.cssText = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._set(\"style\", value);\n\t\t},\n\n\t\t_attrToDom: function(/*String*/ attr, /*String*/ value, /*Object?*/ commands){\n\t\t\t// summary:\n\t\t\t//\t\tReflect a widget attribute (title, tabIndex, duration etc.) to\n\t\t\t//\t\tthe widget DOM, as specified by commands parameter.\n\t\t\t//\t\tIf commands isn't specified then it's looked up from attributeMap.\n\t\t\t//\t\tNote some attributes like \"type\"\n\t\t\t//\t\tcannot be processed this way as they are not mutable.\n\t\t\t// attr:\n\t\t\t//\t\tName of member variable (ex: \"focusNode\" maps to this.focusNode) pointing\n\t\t\t//\t\tto DOMNode inside the widget, or alternately pointing to a subwidget\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\n\t\t\tcommands = arguments.length >= 3 ? commands : this.attributeMap[attr];\n\n\t\t\tarray.forEach(lang.isArray(commands) ? commands : [commands], function(command){\n\n\t\t\t\t// Get target node and what we are doing to that node\n\t\t\t\tvar mapNode = this[command.node || command || \"domNode\"];\t// DOM node\n\t\t\t\tvar type = command.type || \"attribute\";\t// class, innerHTML, innerText, or attribute\n\n\t\t\t\tswitch(type){\n\t\t\t\t\tcase \"attribute\":\n\t\t\t\t\t\tif(lang.isFunction(value)){ // functions execute in the context of the widget\n\t\t\t\t\t\t\tvalue = lang.hitch(this, value);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Get the name of the DOM node attribute; usually it's the same\n\t\t\t\t\t\t// as the name of the attribute in the widget (attr), but can be overridden.\n\t\t\t\t\t\t// Also maps handler names to lowercase, like onSubmit --> onsubmit\n\t\t\t\t\t\tvar attrName = command.attribute ? command.attribute :\n\t\t\t\t\t\t\t(/^on[A-Z][a-zA-Z]*$/.test(attr) ? attr.toLowerCase() : attr);\n\n\t\t\t\t\t\tif(mapNode.tagName){\n\t\t\t\t\t\t\t// Normal case, mapping to a DOMNode. Note that modern browsers will have a mapNode.set()\n\t\t\t\t\t\t\t// method, but for consistency we still call domAttr\n\t\t\t\t\t\t\tdomAttr.set(mapNode, attrName, value);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t// mapping to a sub-widget\n\t\t\t\t\t\t\tmapNode.set(attrName, value);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"innerText\":\n\t\t\t\t\t\t// Deprecated, use \"textContent\" instead.\n\t\t\t\t\t\tmapNode.innerHTML = \"\";\n\t\t\t\t\t\tmapNode.appendChild(this.ownerDocument.createTextNode(value));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"textContent\":\n\t\t\t\t\t\tmapNode.textContent = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"innerHTML\":\n\t\t\t\t\t\tmapNode.innerHTML = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"class\":\n\t\t\t\t\t\tdomClass.replace(mapNode, value, this[attr]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"toggleClass\":\n\t\t\t\t\t\tdomClass.toggle(mapNode, command.className || attr, value);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}, this);\n\t\t},\n\n\t\tget: function(name){\n\t\t\t// summary:\n\t\t\t//\t\tGet a property from a widget.\n\t\t\t// name:\n\t\t\t//\t\tThe property to get.\n\t\t\t// description:\n\t\t\t//\t\tGet a named property from a widget. The property may\n\t\t\t//\t\tpotentially be retrieved via a getter method. If no getter is defined, this\n\t\t\t//\t\tjust retrieves the object's property.\n\t\t\t//\n\t\t\t//\t\tFor example, if the widget has properties `foo` and `bar`\n\t\t\t//\t\tand a method named `_getFooAttr()`, calling:\n\t\t\t//\t\t`myWidget.get(\"foo\")` would be equivalent to calling\n\t\t\t//\t\t`widget._getFooAttr()` and `myWidget.get(\"bar\")`\n\t\t\t//\t\twould be equivalent to the expression\n\t\t\t//\t\t`widget.bar2`\n\t\t\tvar names = this._getAttrNames(name);\n\t\t\treturn this[names.g] ? this[names.g]() : this._get(name);\n\t\t},\n\n\t\tset: function(name, value){\n\t\t\t// summary:\n\t\t\t//\t\tSet a property on a widget\n\t\t\t// name:\n\t\t\t//\t\tThe property to set.\n\t\t\t// value:\n\t\t\t//\t\tThe value to set in the property.\n\t\t\t// description:\n\t\t\t//\t\tSets named properties on a widget which may potentially be handled by a\n\t\t\t//\t\tsetter in the widget.\n\t\t\t//\n\t\t\t//\t\tFor example, if the widget has properties `foo` and `bar`\n\t\t\t//\t\tand a method named `_setFooAttr()`, calling\n\t\t\t//\t\t`myWidget.set(\"foo\", \"Howdy!\")` would be equivalent to calling\n\t\t\t//\t\t`widget._setFooAttr(\"Howdy!\")` and `myWidget.set(\"bar\", 3)`\n\t\t\t//\t\twould be equivalent to the statement `widget.bar = 3;`\n\t\t\t//\n\t\t\t//\t\tset() may also be called with a hash of name/value pairs, ex:\n\t\t\t//\n\t\t\t//\t|\tmyWidget.set({\n\t\t\t//\t|\t\tfoo: \"Howdy\",\n\t\t\t//\t|\t\tbar: 3\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t//\tThis is equivalent to calling `set(foo, \"Howdy\")` and `set(bar, 3)`\n\n\t\t\tif(typeof name === \"object\"){\n\t\t\t\tfor(var x in name){\n\t\t\t\t\tthis.set(x, name[x]);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tvar names = this._getAttrNames(name),\n\t\t\t\tsetter = this[names.s];\n\t\t\tif(lang.isFunction(setter)){\n\t\t\t\t// use the explicit setter\n\t\t\t\tvar result = setter.apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t\t}else{\n\t\t\t\t// Mapping from widget attribute to DOMNode/subwidget attribute/value/etc.\n\t\t\t\t// Map according to:\n\t\t\t\t//\t\t1. attributeMap setting, if one exists (TODO: attributeMap deprecated, remove in 2.0)\n\t\t\t\t//\t\t2. _setFooAttr: {...} type attribute in the widget (if one exists)\n\t\t\t\t//\t\t3. apply to focusNode or domNode if standard attribute name, excluding funcs like onClick.\n\t\t\t\t// Checks if an attribute is a \"standard attribute\" by whether the DOMNode JS object has a similar\n\t\t\t\t// attribute name (ex: accept-charset attribute matches jsObject.acceptCharset).\n\t\t\t\t// Note also that Tree.focusNode() is a function not a DOMNode, so test for that.\n\t\t\t\tvar defaultNode = this.focusNode && !lang.isFunction(this.focusNode) ? \"focusNode\" : \"domNode\",\n\t\t\t\t\ttag = this[defaultNode] && this[defaultNode].tagName,\n\t\t\t\t\tattrsForTag = tag && (tagAttrs[tag] || (tagAttrs[tag] = getAttrs(this[defaultNode]))),\n\t\t\t\t\tmap = name in this.attributeMap ? this.attributeMap[name] :\n\t\t\t\t\t\tnames.s in this ? this[names.s] :\n\t\t\t\t\t\t\t((attrsForTag && names.l in attrsForTag && typeof value != \"function\") ||\n\t\t\t\t\t\t\t\t/^aria-|^data-|^role$/.test(name)) ? defaultNode : null;\n\t\t\t\tif(map != null){\n\t\t\t\t\tthis._attrToDom(name, value, map);\n\t\t\t\t}\n\t\t\t\tthis._set(name, value);\n\t\t\t}\n\t\t\treturn result || this;\n\t\t},\n\n\t\t_attrPairNames: {}, // shared between all widgets\n\t\t_getAttrNames: function(name){\n\t\t\t// summary:\n\t\t\t//\t\tHelper function for get() and set().\n\t\t\t//\t\tCaches attribute name values so we don't do the string ops every time.\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\n\t\t\tvar apn = this._attrPairNames;\n\t\t\tif(apn[name]){\n\t\t\t\treturn apn[name];\n\t\t\t}\n\t\t\tvar uc = name.replace(/^[a-z]|-[a-zA-Z]/g, function(c){\n\t\t\t\treturn c.charAt(c.length - 1).toUpperCase();\n\t\t\t});\n\t\t\treturn (apn[name] = {\n\t\t\t\tn: name + \"Node\",\n\t\t\t\ts: \"_set\" + uc + \"Attr\", // converts dashes to camel case, ex: accept-charset --> _setAcceptCharsetAttr\n\t\t\t\tg: \"_get\" + uc + \"Attr\",\n\t\t\t\tl: uc.toLowerCase() // lowercase name w/out dashes, ex: acceptcharset\n\t\t\t});\n\t\t},\n\n\t\t_set: function(/*String*/ name, /*anything*/ value){\n\t\t\t// summary:\n\t\t\t//\t\tHelper function to set new value for specified property, and call handlers\n\t\t\t//\t\tregistered with watch() if the value has changed.\n\t\t\tvar oldValue = this[name];\n\t\t\tthis[name] = value;\n\t\t\tif(this._created && !isEqual(oldValue, value)){\n\t\t\t\tif(this._watchCallbacks){\n\t\t\t\t\tthis._watchCallbacks(name, oldValue, value);\n\t\t\t\t}\n\t\t\t\tthis.emit(\"attrmodified-\" + name, {\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\tprevValue: oldValue,\n\t\t\t\t\t\tnewValue: value\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t_get: function(/*String*/ name){\n\t\t\t// summary:\n\t\t\t//\t\tHelper function to get value for specified property stored by this._set(),\n\t\t\t//\t\ti.e. for properties with custom setters. Used mainly by custom getters.\n\t\t\t//\n\t\t\t//\t\tFor example, CheckBox._getValueAttr() calls this._get(\"value\").\n\n\t\t\t// future: return name in this.props ? this.props[name] : this[name];\n\t\t\treturn this[name];\n\t\t},\n\n\t\temit: function(/*String*/ type, /*Object?*/ eventObj, /*Array?*/ callbackArgs){\n\t\t\t// summary:\n\t\t\t//\t\tUsed by widgets to signal that a synthetic event occurred, ex:\n\t\t\t//\t|\tmyWidget.emit(\"attrmodified-selectedChildWidget\", {}).\n\t\t\t//\n\t\t\t//\t\tEmits an event on this.domNode named type.toLowerCase(), based on eventObj.\n\t\t\t//\t\tAlso calls onType() method, if present, and returns value from that method.\n\t\t\t//\t\tBy default passes eventObj to callback, but will pass callbackArgs instead, if specified.\n\t\t\t//\t\tModifies eventObj by adding missing parameters (bubbles, cancelable, widget).\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\t// Specify fallback values for bubbles, cancelable in case they are not set in eventObj.\n\t\t\t// Also set pointer to widget, although since we can't add a pointer to the widget for native events\n\t\t\t// (see #14729), maybe we shouldn't do it here?\n\t\t\teventObj = eventObj || {};\n\t\t\tif(eventObj.bubbles === undefined){\n\t\t\t\teventObj.bubbles = true;\n\t\t\t}\n\t\t\tif(eventObj.cancelable === undefined){\n\t\t\t\teventObj.cancelable = true;\n\t\t\t}\n\t\t\tif(!eventObj.detail){\n\t\t\t\teventObj.detail = {};\n\t\t\t}\n\t\t\teventObj.detail.widget = this;\n\n\t\t\tvar ret, callback = this[\"on\" + type];\n\t\t\tif(callback){\n\t\t\t\tret = callback.apply(this, callbackArgs ? callbackArgs : [eventObj]);\n\t\t\t}\n\n\t\t\t// Emit event, but avoid spurious emit()'s as parent sets properties on child during startup/destroy\n\t\t\tif(this._started && !this._beingDestroyed){\n\t\t\t\ton.emit(this.domNode, type.toLowerCase(), eventObj);\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t},\n\n\t\ton: function(/*String|Function*/ type, /*Function*/ func){\n\t\t\t// summary:\n\t\t\t//\t\tCall specified function when event occurs, ex: myWidget.on(\"click\", function(){ ... }).\n\t\t\t// type:\n\t\t\t//\t\tName of event (ex: \"click\") or extension event like touch.press.\n\t\t\t// description:\n\t\t\t//\t\tCall specified function when event `type` occurs, ex: `myWidget.on(\"click\", function(){ ... })`.\n\t\t\t//\t\tNote that the function is not run in any particular scope, so if (for example) you want it to run in the\n\t\t\t//\t\twidget's scope you must do `myWidget.on(\"click\", lang.hitch(myWidget, func))`.\n\n\t\t\t// For backwards compatibility, if there's an onType() method in the widget then connect to that.\n\t\t\t// Remove in 2.0.\n\t\t\tvar widgetMethod = this._onMap(type);\n\t\t\tif(widgetMethod){\n\t\t\t\treturn aspect.after(this, widgetMethod, func, true);\n\t\t\t}\n\n\t\t\t// Otherwise, just listen for the event on this.domNode.\n\t\t\treturn this.own(on(this.domNode, type, func))[0];\n\t\t},\n\n\t\t_onMap: function(/*String|Function*/ type){\n\t\t\t// summary:\n\t\t\t//\t\tMaps on() type parameter (ex: \"mousemove\") to method name (ex: \"onMouseMove\").\n\t\t\t//\t\tIf type is a synthetic event like touch.press then returns undefined.\n\t\t\tvar ctor = this.constructor, map = ctor._onMap;\n\t\t\tif(!map){\n\t\t\t\tmap = (ctor._onMap = {});\n\t\t\t\tfor(var attr in ctor.prototype){\n\t\t\t\t\tif(/^on/.test(attr)){\n\t\t\t\t\t\tmap[attr.replace(/^on/, \"\").toLowerCase()] = attr;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn map[typeof type == \"string\" && type.toLowerCase()];\t// String\n\t\t},\n\n\t\ttoString: function(){\n\t\t\t// summary:\n\t\t\t//\t\tReturns a string that represents the widget.\n\t\t\t// description:\n\t\t\t//\t\tWhen a widget is cast to a string, this method will be used to generate the\n\t\t\t//\t\toutput. Currently, it does not implement any sort of reversible\n\t\t\t//\t\tserialization.\n\t\t\treturn '[Widget ' + this.declaredClass + ', ' + (this.id || 'NO ID') + ']'; // String\n\t\t},\n\n\t\tgetChildren: function(){\n\t\t\t// summary:\n\t\t\t//\t\tReturns all direct children of this widget, i.e. all widgets underneath this.containerNode whose parent\n\t\t\t//\t\tis this widget. Note that it does not return all descendants, but rather just direct children.\n\t\t\t//\t\tAnalogous to [Node.childNodes](https://developer.mozilla.org/en-US/docs/DOM/Node.childNodes),\n\t\t\t//\t\texcept containing widgets rather than DOMNodes.\n\t\t\t//\n\t\t\t//\t\tThe result intentionally excludes internally created widgets (a.k.a. supporting widgets)\n\t\t\t//\t\toutside of this.containerNode.\n\t\t\t//\n\t\t\t//\t\tNote that the array returned is a simple array. Application code should not assume\n\t\t\t//\t\texistence of methods like forEach().\n\n\t\t\treturn this.containerNode ? registry.findWidgets(this.containerNode) : []; // dijit/_WidgetBase[]\n\t\t},\n\n\t\tgetParent: function(){\n\t\t\t// summary:\n\t\t\t//\t\tReturns the parent widget of this widget.\n\n\t\t\treturn registry.getEnclosingWidget(this.domNode.parentNode);\n\t\t},\n\n\t\tconnect: function(/*Object|null*/ obj, /*String|Function*/ event, /*String|Function*/ method){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated, will be removed in 2.0, use this.own(on(...)) or this.own(aspect.after(...)) instead.\n\t\t\t//\n\t\t\t//\t\tConnects specified obj/event to specified method of this object\n\t\t\t//\t\tand registers for disconnect() on widget destroy.\n\t\t\t//\n\t\t\t//\t\tProvide widget-specific analog to dojo.connect, except with the\n\t\t\t//\t\timplicit use of this widget as the target object.\n\t\t\t//\t\tEvents connected with `this.connect` are disconnected upon\n\t\t\t//\t\tdestruction.\n\t\t\t// returns:\n\t\t\t//\t\tA handle that can be passed to `disconnect` in order to disconnect before\n\t\t\t//\t\tthe widget is destroyed.\n\t\t\t// example:\n\t\t\t//\t|\tvar btn = new Button();\n\t\t\t//\t|\t// when foo.bar() is called, call the listener we're going to\n\t\t\t//\t|\t// provide in the scope of btn\n\t\t\t//\t|\tbtn.connect(foo, \"bar\", function(){\n\t\t\t//\t|\t\tconsole.debug(this.toString());\n\t\t\t//\t|\t});\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\treturn this.own(connect.connect(obj, event, this, method))[0];\t// handle\n\t\t},\n\n\t\tdisconnect: function(handle){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated, will be removed in 2.0, use handle.remove() instead.\n\t\t\t//\n\t\t\t//\t\tDisconnects handle created by `connect`.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\thandle.remove();\n\t\t},\n\n\t\tsubscribe: function(t, method){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated, will be removed in 2.0, use this.own(topic.subscribe()) instead.\n\t\t\t//\n\t\t\t//\t\tSubscribes to the specified topic and calls the specified method\n\t\t\t//\t\tof this object and registers for unsubscribe() on widget destroy.\n\t\t\t//\n\t\t\t//\t\tProvide widget-specific analog to dojo.subscribe, except with the\n\t\t\t//\t\timplicit use of this widget as the target object.\n\t\t\t// t: String\n\t\t\t//\t\tThe topic\n\t\t\t// method: Function\n\t\t\t//\t\tThe callback\n\t\t\t// example:\n\t\t\t//\t|\tvar btn = new Button();\n\t\t\t//\t|\t// when /my/topic is published, this button changes its label to\n\t\t\t//\t|\t// be the parameter of the topic.\n\t\t\t//\t|\tbtn.subscribe(\"/my/topic\", function(v){\n\t\t\t//\t|\t\tthis.set(\"label\", v);\n\t\t\t//\t|\t});\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\treturn this.own(topic.subscribe(t, lang.hitch(this, method)))[0];\t// handle\n\t\t},\n\n\t\tunsubscribe: function(/*Object*/ handle){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated, will be removed in 2.0, use handle.remove() instead.\n\t\t\t//\n\t\t\t//\t\tUnsubscribes handle created by this.subscribe.\n\t\t\t//\t\tAlso removes handle from this widget's list of subscriptions\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\thandle.remove();\n\t\t},\n\n\t\tisLeftToRight: function(){\n\t\t\t// summary:\n\t\t\t//\t\tReturn this widget's explicit or implicit orientation (true for LTR, false for RTL)\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\treturn this.dir ? (this.dir.toLowerCase() == \"ltr\") : domGeometry.isBodyLtr(this.ownerDocument); //Boolean\n\t\t},\n\n\t\tisFocusable: function(){\n\t\t\t// summary:\n\t\t\t//\t\tReturn true if this widget can currently be focused\n\t\t\t//\t\tand false if not\n\t\t\treturn this.focus && (domStyle.get(this.domNode, \"display\") != \"none\");\n\t\t},\n\n\t\tplaceAt: function(/*String|DomNode|DocumentFragment|dijit/_WidgetBase*/ reference, /*String|Int?*/ position){\n\t\t\t// summary:\n\t\t\t//\t\tPlace this widget somewhere in the DOM based\n\t\t\t//\t\ton standard domConstruct.place() conventions.\n\t\t\t// description:\n\t\t\t//\t\tA convenience function provided in all _Widgets, providing a simple\n\t\t\t//\t\tshorthand mechanism to put an existing (or newly created) Widget\n\t\t\t//\t\tsomewhere in the dom, and allow chaining.\n\t\t\t// reference:\n\t\t\t//\t\tWidget, DOMNode, DocumentFragment, or id of widget or DOMNode\n\t\t\t// position:\n\t\t\t//\t\tIf reference is a widget (or id of widget), and that widget has an \".addChild\" method,\n\t\t\t//\t\tit will be called passing this widget instance into that method, supplying the optional\n\t\t\t//\t\tposition index passed. In this case position (if specified) should be an integer.\n\t\t\t//\n\t\t\t//\t\tIf reference is a DOMNode (or id matching a DOMNode but not a widget),\n\t\t\t//\t\tthe position argument can be a numeric index or a string\n\t\t\t//\t\t\"first\", \"last\", \"before\", or \"after\", same as dojo/dom-construct::place().\n\t\t\t// returns: dijit/_WidgetBase\n\t\t\t//\t\tProvides a useful return of the newly created dijit._Widget instance so you\n\t\t\t//\t\tcan \"chain\" this function by instantiating, placing, then saving the return value\n\t\t\t//\t\tto a variable.\n\t\t\t// example:\n\t\t\t//\t|\t// create a Button with no srcNodeRef, and place it in the body:\n\t\t\t//\t|\tvar button = new Button({ label:\"click\" }).placeAt(win.body());\n\t\t\t//\t|\t// now, 'button' is still the widget reference to the newly created button\n\t\t\t//\t|\tbutton.on(\"click\", function(e){ console.log('click'); }));\n\t\t\t// example:\n\t\t\t//\t|\t// create a button out of a node with id=\"src\" and append it to id=\"wrapper\":\n\t\t\t//\t|\tvar button = new Button({},\"src\").placeAt(\"wrapper\");\n\t\t\t// example:\n\t\t\t//\t|\t// place a new button as the first element of some div\n\t\t\t//\t|\tvar button = new Button({ label:\"click\" }).placeAt(\"wrapper\",\"first\");\n\t\t\t// example:\n\t\t\t//\t|\t// create a contentpane and add it to a TabContainer\n\t\t\t//\t|\tvar tc = dijit.byId(\"myTabs\");\n\t\t\t//\t|\tnew ContentPane({ href:\"foo.html\", title:\"Wow!\" }).placeAt(tc)\n\n\t\t\tvar refWidget = !reference.tagName && registry.byId(reference);\n\t\t\tif(refWidget && refWidget.addChild && (!position || typeof position === \"number\")){\n\t\t\t\t// Adding this to refWidget and can use refWidget.addChild() to handle everything.\n\t\t\t\trefWidget.addChild(this, position);\n\t\t\t}else{\n\t\t\t\t// \"reference\" is a plain DOMNode, or we can't use refWidget.addChild(). Use domConstruct.place() and\n\t\t\t\t// target refWidget.containerNode for nested placement (position==number, \"first\", \"last\", \"only\"), and\n\t\t\t\t// refWidget.domNode otherwise (\"after\"/\"before\"/\"replace\"). (But not supported officially, see #14946.)\n\t\t\t\tvar ref = refWidget && (\"domNode\" in refWidget) ?\n\t\t\t\t\t(refWidget.containerNode && !/after|before|replace/.test(position || \"\") ?\n\t\t\t\t\t\trefWidget.containerNode : refWidget.domNode) : dom.byId(reference, this.ownerDocument);\n\t\t\t\tdomConstruct.place(this.domNode, ref, position);\n\n\t\t\t\t// Start this iff it has a parent widget that's already started.\n\t\t\t\t// TODO: for 2.0 maybe it should also start the widget when this.getParent() returns null??\n\t\t\t\tif(!this._started && (this.getParent() || {})._started){\n\t\t\t\t\tthis.startup();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tdefer: function(fcn, delay){\n\t\t\t// summary:\n\t\t\t//\t\tWrapper to setTimeout to avoid deferred functions executing\n\t\t\t//\t\tafter the originating widget has been destroyed.\n\t\t\t//\t\tReturns an object handle with a remove method (that returns null) (replaces clearTimeout).\n\t\t\t// fcn: Function\n\t\t\t//\t\tFunction reference.\n\t\t\t// delay: Number?\n\t\t\t//\t\tDelay, defaults to 0.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\tvar timer = setTimeout(lang.hitch(this,\n\t\t\t\tfunction(){\n\t\t\t\t\tif(!timer){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\ttimer = null;\n\t\t\t\t\tif(!this._destroyed){\n\t\t\t\t\t\tlang.hitch(this, fcn)();\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tdelay || 0\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tremove: function(){\n\t\t\t\t\tif(timer){\n\t\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\t\ttimer = null;\n\t\t\t\t\t}\n\t\t\t\t\treturn null; // so this works well: handle = handle.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n\n\tif(has(\"dojo-bidi\")){\n\t\t_WidgetBase.extend(_BidiMixin);\n\t}\n\n\treturn _WidgetBase;\n});\n","define([\n\t\"dojo/_base/array\",\n\t\"dojo/_base/config\", // defaultDuration\n\t\"dojo/_base/lang\",\n\t\"../registry\",\n\t\"../main\"\t// for setting exports to dijit namespace\n], function(array, config, lang, registry, dijit){\n\n\t// module:\n\t//\t\tdijit/_base/manager\n\n\tvar exports = {\n\t\t// summary:\n\t\t//\t\tDeprecated. Shim to methods on registry, plus a few other declarations.\n\t\t//\t\tNew code should access dijit/registry directly when possible.\n\t};\n\n\tarray.forEach([\"byId\", \"getUniqueId\", \"findWidgets\", \"_destroyAll\", \"byNode\", \"getEnclosingWidget\"], function(name){\n\t\texports[name] = registry[name];\n\t});\n\n\t lang.mixin(exports, {\n\t\t // defaultDuration: Integer\n\t\t //\t\tThe default fx.animation speed (in ms) to use for all Dijit\n\t\t //\t\ttransitional fx.animations, unless otherwise specified\n\t\t //\t\ton a per-instance basis. Defaults to 200, overrided by\n\t\t //\t\t`djConfig.defaultDuration`\n\t\t defaultDuration: config[\"defaultDuration\"] || 200\n\t });\n\n\tlang.mixin(dijit, exports);\n\n\t/*===== return exports; =====*/\n\treturn dijit;\t// for back compat :-(\n});\n","define([\n\t\"dojo/_base/array\", // array.forEach array.map\n\t\"dojo/dom\",\t\t\t// dom.byId\n\t\"dojo/dom-attr\", // domAttr.attr domAttr.has\n\t\"dojo/dom-style\", // domStyle.style\n\t\"dojo/_base/lang\", // lang.mixin()\n\t\"dojo/sniff\", // has(\"ie\") has(\"extend-dojo\")\n\t\"./main\"\t// for exporting methods to dijit namespace\n], function(array, dom, domAttr, domStyle, lang, has, dijit){\n\n\t// module:\n\t//\t\tdijit/a11y\n\n\tvar undefined;\n\n\tvar a11y = {\n\t\t// summary:\n\t\t//\t\tAccessibility utility functions (keyboard, tab stops, etc.)\n\n\t\t_isElementShown: function(/*Element*/ elem){\n\t\t\tvar s = domStyle.get(elem);\n\t\t\treturn (s.visibility != \"hidden\")\n\t\t\t\t&& (s.visibility != \"collapsed\")\n\t\t\t\t&& (s.display != \"none\")\n\t\t\t\t&& (domAttr.get(elem, \"type\") != \"hidden\");\n\t\t},\n\n\t\thasDefaultTabStop: function(/*Element*/ elem){\n\t\t\t// summary:\n\t\t\t//\t\tTests if element is tab-navigable even without an explicit tabIndex setting\n\n\t\t\t// No explicit tabIndex setting, need to investigate node type\n\t\t\tswitch(elem.nodeName.toLowerCase()){\n\t\t\t\tcase \"a\":\n\t\t\t\t\t// An <a> w/out a tabindex is only navigable if it has an href\n\t\t\t\t\treturn domAttr.has(elem, \"href\");\n\t\t\t\tcase \"area\":\n\t\t\t\tcase \"button\":\n\t\t\t\tcase \"input\":\n\t\t\t\tcase \"object\":\n\t\t\t\tcase \"select\":\n\t\t\t\tcase \"textarea\":\n\t\t\t\t\t// These are navigable by default\n\t\t\t\t\treturn true;\n\t\t\t\tcase \"iframe\":\n\t\t\t\t\t// If it's an editor <iframe> then it's tab navigable.\n\t\t\t\t\tvar body;\n\t\t\t\t\ttry{\n\t\t\t\t\t\t// non-IE\n\t\t\t\t\t\tvar contentDocument = elem.contentDocument;\n\t\t\t\t\t\tif(\"designMode\" in contentDocument && contentDocument.designMode == \"on\"){\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody = contentDocument.body;\n\t\t\t\t\t}catch(e1){\n\t\t\t\t\t\t// contentWindow.document isn't accessible within IE7/8\n\t\t\t\t\t\t// if the iframe.src points to a foreign url and this\n\t\t\t\t\t\t// page contains an element, that could get focus\n\t\t\t\t\t\ttry{\n\t\t\t\t\t\t\tbody = elem.contentWindow.document.body;\n\t\t\t\t\t\t}catch(e2){\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn body && (body.contentEditable == 'true' ||\n\t\t\t\t\t\t(body.firstChild && body.firstChild.contentEditable == 'true'));\n\t\t\t\tdefault:\n\t\t\t\t\treturn elem.contentEditable == 'true';\n\t\t\t}\n\t\t},\n\n\t\teffectiveTabIndex: function(/*Element*/ elem){\n\t\t\t// summary:\n\t\t\t//\t\tReturns effective tabIndex of an element, either a number, or undefined if element isn't focusable.\n\n\t\t\tif(domAttr.get(elem, \"disabled\")){\n\t\t\t\treturn undefined;\n\t\t\t}else if(domAttr.has(elem, \"tabIndex\")){\n\t\t\t\t// Explicit tab index setting\n\t\t\t\treturn +domAttr.get(elem, \"tabIndex\");// + to convert string --> number\n\t\t\t}else{\n\t\t\t\t// No explicit tabIndex setting, so depends on node type\n\t\t\t\treturn a11y.hasDefaultTabStop(elem) ? 0 : undefined;\n\t\t\t}\n\t\t},\n\n\t\tisTabNavigable: function(/*Element*/ elem){\n\t\t\t// summary:\n\t\t\t//\t\tTests if an element is tab-navigable\n\n\t\t\treturn a11y.effectiveTabIndex(elem) >= 0;\n\t\t},\n\n\t\tisFocusable: function(/*Element*/ elem){\n\t\t\t// summary:\n\t\t\t//\t\tTests if an element is focusable by tabbing to it, or clicking it with the mouse.\n\n\t\t\treturn a11y.effectiveTabIndex(elem) >= -1;\n\t\t},\n\n\t\t_getTabNavigable: function(/*DOMNode*/ root){\n\t\t\t// summary:\n\t\t\t//\t\tFinds descendants of the specified root node.\n\t\t\t// description:\n\t\t\t//\t\tFinds the following descendants of the specified root node:\n\t\t\t//\n\t\t\t//\t\t- the first tab-navigable element in document order\n\t\t\t//\t\t without a tabIndex or with tabIndex=\"0\"\n\t\t\t//\t\t- the last tab-navigable element in document order\n\t\t\t//\t\t without a tabIndex or with tabIndex=\"0\"\n\t\t\t//\t\t- the first element in document order with the lowest\n\t\t\t//\t\t positive tabIndex value\n\t\t\t//\t\t- the last element in document order with the highest\n\t\t\t//\t\t positive tabIndex value\n\t\t\tvar first, last, lowest, lowestTabindex, highest, highestTabindex, radioSelected = {};\n\n\t\t\tfunction radioName(node){\n\t\t\t\t// If this element is part of a radio button group, return the name for that group.\n\t\t\t\treturn node && node.tagName.toLowerCase() == \"input\" &&\n\t\t\t\t\tnode.type && node.type.toLowerCase() == \"radio\" &&\n\t\t\t\t\tnode.name && node.name.toLowerCase();\n\t\t\t}\n\n\t\t\tvar shown = a11y._isElementShown, effectiveTabIndex = a11y.effectiveTabIndex;\n\t\t\tvar walkTree = function(/*DOMNode*/ parent){\n\t\t\t\tfor(var child = parent.firstChild; child; child = child.nextSibling){\n\t\t\t\t\t// Skip text elements, hidden elements, and also non-HTML elements (those in custom namespaces) in IE,\n\t\t\t\t\t// since show() invokes getAttribute(\"type\"), which crash on VML nodes in IE.\n\t\t\t\t\tif(child.nodeType != 1 || (has(\"ie\") <= 9 && child.scopeName !== \"HTML\") || !shown(child)){\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tabindex = effectiveTabIndex(child);\n\t\t\t\t\tif(tabindex >= 0){\n\t\t\t\t\t\tif(tabindex == 0){\n\t\t\t\t\t\t\tif(!first){\n\t\t\t\t\t\t\t\tfirst = child;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlast = child;\n\t\t\t\t\t\t}else if(tabindex > 0){\n\t\t\t\t\t\t\tif(!lowest || tabindex < lowestTabindex){\n\t\t\t\t\t\t\t\tlowestTabindex = tabindex;\n\t\t\t\t\t\t\t\tlowest = child;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!highest || tabindex >= highestTabindex){\n\t\t\t\t\t\t\t\thighestTabindex = tabindex;\n\t\t\t\t\t\t\t\thighest = child;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar rn = radioName(child);\n\t\t\t\t\t\tif(domAttr.get(child, \"checked\") && rn){\n\t\t\t\t\t\t\tradioSelected[rn] = child;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(child.nodeName.toUpperCase() != 'SELECT'){\n\t\t\t\t\t\twalkTree(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\tif(shown(root)){\n\t\t\t\twalkTree(root);\n\t\t\t}\n\t\t\tfunction rs(node){\n\t\t\t\t// substitute checked radio button for unchecked one, if there is a checked one with the same name.\n\t\t\t\treturn radioSelected[radioName(node)] || node;\n\t\t\t}\n\n\t\t\treturn { first: rs(first), last: rs(last), lowest: rs(lowest), highest: rs(highest) };\n\t\t},\n\n\t\tgetFirstInTabbingOrder: function(/*String|DOMNode*/ root, /*Document?*/ doc){\n\t\t\t// summary:\n\t\t\t//\t\tFinds the descendant of the specified root node\n\t\t\t//\t\tthat is first in the tabbing order\n\t\t\tvar elems = a11y._getTabNavigable(dom.byId(root, doc));\n\t\t\treturn elems.lowest ? elems.lowest : elems.first; // DomNode\n\t\t},\n\n\t\tgetLastInTabbingOrder: function(/*String|DOMNode*/ root, /*Document?*/ doc){\n\t\t\t// summary:\n\t\t\t//\t\tFinds the descendant of the specified root node\n\t\t\t//\t\tthat is last in the tabbing order\n\t\t\tvar elems = a11y._getTabNavigable(dom.byId(root, doc));\n\t\t\treturn elems.last ? elems.last : elems.highest; // DomNode\n\t\t}\n\t};\n\n\thas(\"extend-dojo\") && lang.mixin(dijit, a11y);\n\n\treturn a11y;\n});\n","define([\n\t\"dojo/keys\", // keys.ENTER keys.SPACE\n\t\"dojo/mouse\",\n\t\"dojo/on\",\n\t\"dojo/touch\" // touch support for click is now there\n], function(keys, mouse, on, touch){\n\n\t// module:\n\t//\t\tdijit/a11yclick\n\n\t/*=====\n\treturn {\n\t\t// summary:\n\t\t//\t\tCustom press, release, and click synthetic events\n\t\t//\t\twhich trigger on a left mouse click, touch, or space/enter keyup.\n\n\t\tclick: function(node, listener){\n\t\t\t// summary:\n\t\t\t//\t\tLogical click operation for mouse, touch, or keyboard (space/enter key)\n\t\t},\n\t\tpress: function(node, listener){\n\t\t\t// summary:\n\t\t\t//\t\tMousedown (left button), touchstart, or keydown (space or enter) corresponding to logical click operation.\n\t\t},\n\t\trelease: function(node, listener){\n\t\t\t// summary:\n\t\t\t//\t\tMouseup (left button), touchend, or keyup (space or enter) corresponding to logical click operation.\n\t\t},\n\t\tmove: function(node, listener){\n\t\t\t// summary:\n\t\t\t//\t\tMouse cursor or a finger is dragged over the given node.\n\t\t}\n\t};\n\t=====*/\n\n\tfunction clickKey(/*Event*/ e){\n\t\t// Test if this keyboard event should be tracked as the start (if keydown) or end (if keyup) of a click event.\n\t\t// Only track for nodes marked to be tracked, and not for buttons or inputs,\n\t\t// since buttons handle keyboard click natively, and text inputs should not\n\t\t// prevent typing spaces or newlines.\n\t\tif((e.keyCode === keys.ENTER || e.keyCode === keys.SPACE) && !/input|button|textarea/i.test(e.target.nodeName)){\n\n\t\t\t// Test if a node or its ancestor has been marked with the dojoClick property to indicate special processing\n\t\t\tfor(var node = e.target; node; node = node.parentNode){\n\t\t\t\tif(node.dojoClick){ return true; }\n\t\t\t}\n\t\t}\n\t}\n\n\tvar lastKeyDownNode;\n\n\ton(document, \"keydown\", function(e){\n\t\t//console.log(\"a11yclick: onkeydown, e.target = \", e.target, \", lastKeyDownNode was \", lastKeyDownNode, \", equality is \", (e.target === lastKeyDownNode));\n\t\tif(clickKey(e)){\n\t\t\t// needed on IE for when focus changes between keydown and keyup - otherwise dropdown menus do not work\n\t\t\tlastKeyDownNode = e.target;\n\n\t\t\t// Prevent viewport scrolling on space key in IE<9.\n\t\t\t// (Reproducible on test_Button.html on any of the first dijit/form/Button examples)\n\t\t\te.preventDefault();\n\t\t}else{\n\t\t\tlastKeyDownNode = null;\n\t\t}\n\t});\n\n\ton(document, \"keyup\", function(e){\n\t\t//console.log(\"a11yclick: onkeyup, e.target = \", e.target, \", lastKeyDownNode was \", lastKeyDownNode, \", equality is \", (e.target === lastKeyDownNode));\n\t\tif(clickKey(e) && e.target == lastKeyDownNode){\t// === breaks greasemonkey\n\t\t\t//need reset here or have problems in FF when focus returns to trigger element after closing popup/alert\n\t\t\tlastKeyDownNode = null;\n\n\t\t\ton.emit(e.target, \"click\", {\n\t\t\t\tcancelable: true,\n\t\t\t\tbubbles: true,\n\t\t\t\tctrlKey: e.ctrlKey,\n\t\t\t\tshiftKey: e.shiftKey,\n\t\t\t\tmetaKey: e.metaKey,\n\t\t\t\taltKey: e.altKey,\n\t\t\t\t_origType: e.type\n\t\t\t});\n\t\t}\n\t});\n\n\t// I want to return a hash of the synthetic events, but for backwards compatibility the main return value\n\t// needs to be the click event. Change for 2.0.\n\n\tvar click = function(node, listener){\n\t\t// Set flag on node so that keydown/keyup above emits click event.\n\t\t// Also enables fast click processing from dojo/touch.\n\t\tnode.dojoClick = true;\n\n\t\treturn on(node, \"click\", listener);\n\t};\n\tclick.click = click;\t// forward compatibility with 2.0\n\n\tclick.press = function(node, listener){\n\t\tvar touchListener = on(node, touch.press, function(evt){\n\t\t\tif(evt.type == \"mousedown\" && !mouse.isLeft(evt)){\n\t\t\t\t// Ignore right click\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlistener(evt);\n\t\t}), keyListener = on(node, \"keydown\", function(evt){\n\t\t\tif(evt.keyCode === keys.ENTER || evt.keyCode === keys.SPACE){\n\t\t\t\tlistener(evt);\n\t\t\t}\n\t\t});\n\t\treturn {\n\t\t\tremove: function(){\n\t\t\t\ttouchListener.remove();\n\t\t\t\tkeyListener.remove();\n\t\t\t}\n\t\t};\n\t};\n\n\tclick.release = function(node, listener){\n\t\tvar touchListener = on(node, touch.release, function(evt){\n\t\t\tif(evt.type == \"mouseup\" && !mouse.isLeft(evt)){\n\t\t\t\t// Ignore right click\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlistener(evt);\n\t\t}), keyListener = on(node, \"keyup\", function(evt){\n\t\t\tif(evt.keyCode === keys.ENTER || evt.keyCode === keys.SPACE){\n\t\t\t\tlistener(evt);\n\t\t\t}\n\t\t});\n\t\treturn {\n\t\t\tremove: function(){\n\t\t\t\ttouchListener.remove();\n\t\t\t\tkeyListener.remove();\n\t\t\t}\n\t\t};\n\t};\n\n\tclick.move = touch.move;\t// just for convenience\n\n\treturn click;\n});\n","define([\n\t\"dojo/aspect\",\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/dom\", // domAttr.get dom.isDescendant\n\t\"dojo/dom-attr\", // domAttr.get dom.isDescendant\n\t\"dojo/dom-class\",\n\t\"dojo/dom-construct\", // connect to domConstruct.empty, domConstruct.destroy\n\t\"dojo/Evented\",\n\t\"dojo/_base/lang\", // lang.hitch\n\t\"dojo/on\",\n\t\"dojo/domReady\",\n\t\"dojo/sniff\", // has(\"ie\")\n\t\"dojo/Stateful\",\n\t\"dojo/_base/window\", // win.body\n\t\"dojo/window\", // winUtils.get\n\t\"./a11y\",\t// a11y.isTabNavigable\n\t\"./registry\",\t// registry.byId\n\t\"./main\"\t\t// to set dijit.focus\n], function(aspect, declare, dom, domAttr, domClass, domConstruct, Evented, lang, on, domReady, has, Stateful, win, winUtils,\n\t\t\ta11y, registry, dijit){\n\n\t// module:\n\t//\t\tdijit/focus\n\n\t// Time of the last focusin event\n\tvar lastFocusin;\n\n\t// Time of the last touch/mousedown or focusin event\n\tvar lastTouchOrFocusin;\n\n\tvar FocusManager = declare([Stateful, Evented], {\n\t\t// summary:\n\t\t//\t\tTracks the currently focused node, and which widgets are currently \"active\".\n\t\t//\t\tAccess via require([\"dijit/focus\"], function(focus){ ... }).\n\t\t//\n\t\t//\t\tA widget is considered active if it or a descendant widget has focus,\n\t\t//\t\tor if a non-focusable node of this widget or a descendant was recently clicked.\n\t\t//\n\t\t//\t\tCall focus.watch(\"curNode\", callback) to track the current focused DOMNode,\n\t\t//\t\tor focus.watch(\"activeStack\", callback) to track the currently focused stack of widgets.\n\t\t//\n\t\t//\t\tCall focus.on(\"widget-blur\", func) or focus.on(\"widget-focus\", ...) to monitor when\n\t\t//\t\twhen widgets become active/inactive\n\t\t//\n\t\t//\t\tFinally, focus(node) will focus a node, suppressing errors if the node doesn't exist.\n\n\t\t// curNode: DomNode\n\t\t//\t\tCurrently focused item on screen\n\t\tcurNode: null,\n\n\t\t// activeStack: dijit/_WidgetBase[]\n\t\t//\t\tList of currently active widgets (focused widget and it's ancestors)\n\t\tactiveStack: [],\n\n\t\tconstructor: function(){\n\t\t\t// Don't leave curNode/prevNode pointing to bogus elements\n\t\t\tvar check = lang.hitch(this, function(node){\n\t\t\t\tif(dom.isDescendant(this.curNode, node)){\n\t\t\t\t\tthis.set(\"curNode\", null);\n\t\t\t\t}\n\t\t\t\tif(dom.isDescendant(this.prevNode, node)){\n\t\t\t\t\tthis.set(\"prevNode\", null);\n\t\t\t\t}\n\t\t\t});\n\t\t\taspect.before(domConstruct, \"empty\", check);\n\t\t\taspect.before(domConstruct, \"destroy\", check);\n\t\t},\n\n\t\tregisterIframe: function(/*DomNode*/ iframe){\n\t\t\t// summary:\n\t\t\t//\t\tRegisters listeners on the specified iframe so that any click\n\t\t\t//\t\tor focus event on that iframe (or anything in it) is reported\n\t\t\t//\t\tas a focus/click event on the `<iframe>` itself.\n\t\t\t// description:\n\t\t\t//\t\tCurrently only used by editor.\n\t\t\t// returns:\n\t\t\t//\t\tHandle with remove() method to deregister.\n\t\t\treturn this.registerWin(iframe.contentWindow, iframe);\n\t\t},\n\n\t\tregisterWin: function(/*Window?*/targetWindow, /*DomNode?*/ effectiveNode){\n\t\t\t// summary:\n\t\t\t//\t\tRegisters listeners on the specified window (either the main\n\t\t\t//\t\twindow or an iframe's window) to detect when the user has clicked somewhere\n\t\t\t//\t\tor focused somewhere.\n\t\t\t// description:\n\t\t\t//\t\tUsers should call registerIframe() instead of this method.\n\t\t\t// targetWindow:\n\t\t\t//\t\tIf specified this is the window associated with the iframe,\n\t\t\t//\t\ti.e. iframe.contentWindow.\n\t\t\t// effectiveNode:\n\t\t\t//\t\tIf specified, report any focus events inside targetWindow as\n\t\t\t//\t\tan event on effectiveNode, rather than on evt.target.\n\t\t\t// returns:\n\t\t\t//\t\tHandle with remove() method to deregister.\n\n\t\t\t// TODO: make this function private in 2.0; Editor/users should call registerIframe(),\n\n\t\t\t// Listen for blur and focus events on targetWindow's document.\n\t\t\tvar _this = this,\n\t\t\t\tbody = targetWindow.document && targetWindow.document.body;\n\n\t\t\tif(body){\n\t\t\t\t// Listen for touches or mousedowns... could also use dojo/touch.press here.\n\t\t\t\tvar event = has(\"pointer-events\") ? \"pointerdown\" : has(\"MSPointer\") ? \"MSPointerDown\" :\n\t\t\t\t\thas(\"touch-events\") ? \"mousedown, touchstart\" : \"mousedown\";\n\t\t\t\tvar mdh = on(targetWindow.document, event, function(evt){\n\t\t\t\t\t// workaround weird IE bug where the click is on an orphaned node\n\t\t\t\t\t// (first time clicking a Select/DropDownButton inside a TooltipDialog).\n\t\t\t\t\t// actually, strangely this is happening on latest chrome too.\n\t\t\t\t\tif(evt && evt.target && evt.target.parentNode == null){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t_this._onTouchNode(effectiveNode || evt.target, \"mouse\");\n\t\t\t\t});\n\n\t\t\t\tvar fih = on(body, 'focusin', function(evt){\n\t\t\t\t\t// When you refocus the browser window, IE gives an event with an empty srcElement\n\t\t\t\t\tif(!evt.target.tagName) { return; }\n\n\t\t\t\t\t// IE reports that nodes like <body> have gotten focus, even though they have tabIndex=-1,\n\t\t\t\t\t// ignore those events\n\t\t\t\t\tvar tag = evt.target.tagName.toLowerCase();\n\t\t\t\t\tif(tag == \"#document\" || tag == \"body\"){ return; }\n\n\t\t\t\t\tif(a11y.isFocusable(evt.target)){\n\t\t\t\t\t\t_this._onFocusNode(effectiveNode || evt.target);\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// Previous code called _onTouchNode() for any activate event on a non-focusable node. Can\n\t\t\t\t\t\t// probably just ignore such an event as it will be handled by onmousedown handler above, but\n\t\t\t\t\t\t// leaving the code for now.\n\t\t\t\t\t\t_this._onTouchNode(effectiveNode || evt.target);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar foh = on(body, 'focusout', function(evt){\n\t\t\t\t\t_this._onBlurNode(effectiveNode || evt.target);\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tremove: function(){\n\t\t\t\t\t\tmdh.remove();\n\t\t\t\t\t\tfih.remove();\n\t\t\t\t\t\tfoh.remove();\n\t\t\t\t\t\tmdh = fih = foh = null;\n\t\t\t\t\t\tbody = null;\t// prevent memory leak (apparent circular reference via closure)\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\n\t\t_onBlurNode: function(/*DomNode*/ node){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when focus leaves a node.\n\t\t\t//\t\tUsually ignored, _unless_ it *isn't* followed by touching another node,\n\t\t\t//\t\twhich indicates that we tabbed off the last field on the page,\n\t\t\t//\t\tin which case every widget is marked inactive\n\n\t\t\tvar now = (new Date()).getTime();\n\n\t\t\t// IE9+ and chrome have a problem where focusout events come after the corresponding focusin event.\n\t\t\t// For chrome problem see https://bugs.dojotoolkit.org/ticket/17668.\n\t\t\t// IE problem happens when moving focus from the Editor's <iframe> to a normal DOMNode.\n\t\t\tif(now < lastFocusin + 100){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If the blur event isn't followed by a focus event, it means the user clicked on something unfocusable,\n\t\t\t// so clear focus.\n\t\t\tif(this._clearFocusTimer){\n\t\t\t\tclearTimeout(this._clearFocusTimer);\n\t\t\t}\n\t\t\tthis._clearFocusTimer = setTimeout(lang.hitch(this, function(){\n\t\t\t\tthis.set(\"prevNode\", this.curNode);\n\t\t\t\tthis.set(\"curNode\", null);\n\t\t\t}), 0);\n\n\t\t\t// Unset timer to zero-out widget stack; we'll reset it below if appropriate.\n\t\t\tif(this._clearActiveWidgetsTimer){\n\t\t\t\tclearTimeout(this._clearActiveWidgetsTimer);\n\t\t\t}\n\n\t\t\tif(now < lastTouchOrFocusin + 100){\n\t\t\t\t// This blur event is coming late (after the call to _onTouchNode() rather than before.\n\t\t\t\t// So let _onTouchNode() handle setting the widget stack.\n\t\t\t\t// See https://bugs.dojotoolkit.org/ticket/17668\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If the blur event isn't followed (or preceded) by a focus or touch event then mark all widgets as inactive.\n\t\t\tthis._clearActiveWidgetsTimer = setTimeout(lang.hitch(this, function(){\n\t\t\t\tdelete this._clearActiveWidgetsTimer;\n\t\t\t\tthis._setStack([]);\n\t\t\t}), 0);\n\t\t},\n\n\t\t_onTouchNode: function(/*DomNode*/ node, /*String*/ by){\n\t\t\t// summary:\n\t\t\t//\t\tCallback when node is focused or touched.\n\t\t\t//\t\tNote that _onFocusNode() calls _onTouchNode().\n\t\t\t// node:\n\t\t\t//\t\tThe node that was touched.\n\t\t\t// by:\n\t\t\t//\t\t\"mouse\" if the focus/touch was caused by a mouse down event\n\n\t\t\t// Keep track of time of last focusin or touch event.\n\t\t\tlastTouchOrFocusin = (new Date()).getTime();\n\n\t\t\tif(this._clearActiveWidgetsTimer){\n\t\t\t\t// forget the recent blur event\n\t\t\t\tclearTimeout(this._clearActiveWidgetsTimer);\n\t\t\t\tdelete this._clearActiveWidgetsTimer;\n\t\t\t}\n\n\t\t\t// if the click occurred on the scrollbar of a dropdown, treat it as a click on the dropdown,\n\t\t\t// even though the scrollbar is technically on the popup wrapper (see #10631)\n\t\t\tif(domClass.contains(node, \"dijitPopup\")){\n\t\t\t\tnode = node.firstChild;\n\t\t\t}\n\n\t\t\t// compute stack of active widgets (ex: ComboButton --> Menu --> MenuItem)\n\t\t\tvar newStack=[];\n\t\t\ttry{\n\t\t\t\twhile(node){\n\t\t\t\t\tvar popupParent = domAttr.get(node, \"dijitPopupParent\");\n\t\t\t\t\tif(popupParent){\n\t\t\t\t\t\tnode=registry.byId(popupParent).domNode;\n\t\t\t\t\t}else if(node.tagName && node.tagName.toLowerCase() == \"body\"){\n\t\t\t\t\t\t// is this the root of the document or just the root of an iframe?\n\t\t\t\t\t\tif(node === win.body()){\n\t\t\t\t\t\t\t// node is the root of the main document\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// otherwise, find the iframe this node refers to (can't access it via parentNode,\n\t\t\t\t\t\t// need to do this trick instead). window.frameElement is supported in IE/FF/Webkit\n\t\t\t\t\t\tnode=winUtils.get(node.ownerDocument).frameElement;\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// if this node is the root node of a widget, then add widget id to stack,\n\t\t\t\t\t\t// except ignore clicks on disabled widgets (actually focusing a disabled widget still works,\n\t\t\t\t\t\t// to support MenuItem)\n\t\t\t\t\t\tvar id = node.getAttribute && node.getAttribute(\"widgetId\"),\n\t\t\t\t\t\t\twidget = id && registry.byId(id);\n\t\t\t\t\t\tif(widget && !(by == \"mouse\" && widget.get(\"disabled\"))){\n\t\t\t\t\t\t\tnewStack.unshift(id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode=node.parentNode;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}catch(e){ /* squelch */ }\n\n\t\t\tthis._setStack(newStack, by);\n\t\t},\n\n\t\t_onFocusNode: function(/*DomNode*/ node){\n\t\t\t// summary:\n\t\t\t//\t\tCallback when node is focused\n\n\t\t\tif(!node){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(node.nodeType == 9){\n\t\t\t\t// Ignore focus events on the document itself. This is here so that\n\t\t\t\t// (for example) clicking the up/down arrows of a spinner\n\t\t\t\t// (which don't get focus) won't cause that widget to blur. (FF issue)\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Keep track of time of last focusin event.\n\t\t\tlastFocusin = (new Date()).getTime();\n\n\t\t\t// There was probably a blur event right before this event, but since we have a new focus,\n\t\t\t// forget about the blur\n\t\t\tif(this._clearFocusTimer){\n\t\t\t\tclearTimeout(this._clearFocusTimer);\n\t\t\t\tdelete this._clearFocusTimer;\n\t\t\t}\n\n\t\t\tthis._onTouchNode(node);\n\n\t\t\tif(node == this.curNode){ return; }\n\t\t\tthis.set(\"prevNode\", this.curNode);\n\t\t\tthis.set(\"curNode\", node);\n\t\t},\n\n\t\t_setStack: function(/*String[]*/ newStack, /*String*/ by){\n\t\t\t// summary:\n\t\t\t//\t\tThe stack of active widgets has changed. Send out appropriate events and records new stack.\n\t\t\t// newStack:\n\t\t\t//\t\tarray of widget id's, starting from the top (outermost) widget\n\t\t\t// by:\n\t\t\t//\t\t\"mouse\" if the focus/touch was caused by a mouse down event\n\n\t\t\tvar oldStack = this.activeStack, lastOldIdx = oldStack.length - 1, lastNewIdx = newStack.length - 1;\n\n\t\t\tif(newStack[lastNewIdx] == oldStack[lastOldIdx]){\n\t\t\t\t// no changes, return now to avoid spurious notifications about changes to activeStack\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.set(\"activeStack\", newStack);\n\n\t\t\tvar widget, i;\n\n\t\t\t// for all elements that have gone out of focus, set focused=false\n\t\t\tfor(i = lastOldIdx; i >= 0 && oldStack[i] != newStack[i]; i--){\n\t\t\t\twidget = registry.byId(oldStack[i]);\n\t\t\t\tif(widget){\n\t\t\t\t\twidget._hasBeenBlurred = true;\t\t// TODO: used by form widgets, should be moved there\n\t\t\t\t\twidget.set(\"focused\", false);\n\t\t\t\t\tif(widget._focusManager == this){\n\t\t\t\t\t\twidget._onBlur(by);\n\t\t\t\t\t}\n\t\t\t\t\tthis.emit(\"widget-blur\", widget, by);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// for all element that have come into focus, set focused=true\n\t\t\tfor(i++; i <= lastNewIdx; i++){\n\t\t\t\twidget = registry.byId(newStack[i]);\n\t\t\t\tif(widget){\n\t\t\t\t\twidget.set(\"focused\", true);\n\t\t\t\t\tif(widget._focusManager == this){\n\t\t\t\t\t\twidget._onFocus(by);\n\t\t\t\t\t}\n\t\t\t\t\tthis.emit(\"widget-focus\", widget, by);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfocus: function(node){\n\t\t\t// summary:\n\t\t\t//\t\tFocus the specified node, suppressing errors if they occur\n\t\t\tif(node){\n\t\t\t\ttry{ node.focus(); }catch(e){/*quiet*/}\n\t\t\t}\n\t\t}\n\t});\n\n\tvar singleton = new FocusManager();\n\n\t// register top window and all the iframes it contains\n\tdomReady(function(){\n\t\tvar handle = singleton.registerWin(winUtils.get(document));\n\t\tif(has(\"ie\")){\n\t\t\ton(window, \"unload\", function(){\n\t\t\t\tif(handle){\t// because this gets called twice when doh.robot is running\n\t\t\t\t\thandle.remove();\n\t\t\t\t\thandle = null;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\t// Setup dijit.focus as a pointer to the singleton but also (for backwards compatibility)\n\t// as a function to set focus. Remove for 2.0.\n\tdijit.focus = function(node){\n\t\tsingleton.focus(node);\t// indirection here allows dijit/_base/focus.js to override behavior\n\t};\n\tfor(var attr in singleton){\n\t\tif(!/^_/.test(attr)){\n\t\t\tdijit.focus[attr] = typeof singleton[attr] == \"function\" ? lang.hitch(singleton, attr) : singleton[attr];\n\t\t}\n\t}\n\tsingleton.watch(function(attr, oldVal, newVal){\n\t\tdijit.focus[attr] = newVal;\n\t});\n\n\treturn singleton;\n});\n","define([\n\t\"require\",\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/dom-class\", // domClass.toggle\n\t\"dojo/has\", // has(\"dijit-legacy-requires\")\n\t\"dojo/_base/kernel\", // kernel.deprecated\n\t\"dojo/_base/lang\", // lang.trim\n\t\"dojo/ready\",\n\t\"./_FormWidget\",\n\t\"./_ButtonMixin\",\n\t\"dojo/text!./templates/Button.html\",\n\t\"../a11yclick\"\t// template uses ondijitclick\n], function(require, declare, domClass, has, kernel, lang, ready, _FormWidget, _ButtonMixin, template){\n\n\t// module:\n\t//\t\tdijit/form/Button\n\n\t// Back compat w/1.6, remove for 2.0\n\tif(has(\"dijit-legacy-requires\")){\n\t\tready(0, function(){\n\t\t\tvar requires = [\"dijit/form/DropDownButton\", \"dijit/form/ComboButton\", \"dijit/form/ToggleButton\"];\n\t\t\trequire(requires);\t// use indirection so modules not rolled into a build\n\t\t});\n\t}\n\n\tvar Button = declare(\"dijit.form.Button\" + (has(\"dojo-bidi\") ? \"_NoBidi\" : \"\"), [_FormWidget, _ButtonMixin], {\n\t\t// summary:\n\t\t//\t\tBasically the same thing as a normal HTML button, but with special styling.\n\t\t// description:\n\t\t//\t\tButtons can display a label, an icon, or both.\n\t\t//\t\tA label should always be specified (through innerHTML) or the label\n\t\t//\t\tattribute. It can be hidden via showLabel=false.\n\t\t// example:\n\t\t// |\t<button data-dojo-type=\"dijit/form/Button\" onClick=\"...\">Hello world</button>\n\t\t//\n\t\t// example:\n\t\t// |\tvar button1 = new Button({label: \"hello world\", onClick: foo});\n\t\t// |\tdojo.body().appendChild(button1.domNode);\n\n\t\t// showLabel: Boolean\n\t\t//\t\tSet this to true to hide the label text and display only the icon.\n\t\t//\t\t(If showLabel=false then iconClass must be specified.)\n\t\t//\t\tEspecially useful for toolbars.\n\t\t//\t\tIf showLabel=true, the label will become the title (a.k.a. tooltip/hint) of the icon.\n\t\t//\n\t\t//\t\tThe exception case is for computers in high-contrast mode, where the label\n\t\t//\t\twill still be displayed, since the icon doesn't appear.\n\t\tshowLabel: true,\n\n\t\t// iconClass: String\n\t\t//\t\tClass to apply to DOMNode in button to make it display an icon\n\t\ticonClass: \"dijitNoIcon\",\n\t\t_setIconClassAttr: { node: \"iconNode\", type: \"class\" },\n\n\t\tbaseClass: \"dijitButton\",\n\n\t\ttemplateString: template,\n\n\t\t// Map widget attributes to DOMNode attributes.\n\t\t_setValueAttr: \"valueNode\",\n\t\t_setNameAttr: function(name){\n\t\t\t// avoid breaking existing subclasses where valueNode undefined. Perhaps in 2.0 require it to be defined?\n\t\t\tif(this.valueNode){\n\t\t\t\tthis.valueNode.setAttribute(\"name\", name);\n\t\t\t}\n\t\t},\n\n\t\tpostCreate: function(){\n\t\t\tthis.inherited(arguments);\n\t\t\tthis._setLabelFromContainer();\n\t\t},\n\n\t\t_setLabelFromContainer: function(){\n\t\t\tif(this.containerNode && !this.label){\n\t\t\t\t// When markup was set as srcNodeRef.innerHTML, copy it to this.label, in case someone tries to\n\t\t\t\t// reference that variable. Alternately, could have a _getLabelAttr() method to return\n\t\t\t\t// this.containerNode.innerHTML.\n\t\t\t\tthis.label = lang.trim(this.containerNode.innerHTML);\n\t\t\t\tthis.onLabelSet();\t\t// set this.titleNode.title etc. according to label\n\t\t\t}\n\t\t},\n\n\t\t_setShowLabelAttr: function(val){\n\t\t\tif(this.containerNode){\n\t\t\t\tdomClass.toggle(this.containerNode, \"dijitDisplayNone\", !val);\n\t\t\t}\n\t\t\tthis._set(\"showLabel\", val);\n\t\t},\n\n\t\tsetLabel: function(/*String*/ content){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated. Use set('label', ...) instead.\n\t\t\tkernel.deprecated(\"dijit.form.Button.setLabel() is deprecated. Use set('label', ...) instead.\", \"\", \"2.0\");\n\t\t\tthis.set(\"label\", content);\n\t\t},\n\n\t\tonLabelSet: function(){\n\t\t\tthis.inherited(arguments);\n\t\t\tif(!this.showLabel && !(\"title\" in this.params)){\n\t\t\t\tthis.titleNode.title = lang.trim(this.containerNode.innerText || this.containerNode.textContent || '');\n\t\t\t}\n\t\t}\n\t});\n\n\tif(has(\"dojo-bidi\")){\n\t\tButton = declare(\"dijit.form.Button\", Button, {\n\t\t\tonLabelSet: function(){\n\t\t\t\tthis.inherited(arguments);\n\t\t\t\tif(this.titleNode.title){\n\t\t\t\t\tthis.applyTextDir(this.titleNode, this.titleNode.title);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_setTextDirAttr: function(/*String*/ textDir){\n\t\t\t\tif(this._created && this.textDir != textDir){\n\t\t\t\t\tthis._set(\"textDir\", textDir);\n\t\t\t\t\tthis._setLabelAttr(this.label); // call applyTextDir on both focusNode and titleNode\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\treturn Button;\n});\n","define([\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/dom-attr\", // domAttr.set\n\t\"dojo/_base/kernel\", // kernel.deprecated\n\t\"dojo/sniff\", // has(\"ie\")\n\t\"../_Widget\",\n\t\"../_TemplatedMixin\",\n\t\"./_FormMixin\",\n\t\"../layout/_ContentPaneResizeMixin\"\n], function(declare, domAttr, kernel, has, _Widget, _TemplatedMixin, _FormMixin, _ContentPaneResizeMixin){\n\n\t// module:\n\t//\t\tdijit/form/Form\n\n\n\treturn declare(\"dijit.form.Form\", [_Widget, _TemplatedMixin, _FormMixin, _ContentPaneResizeMixin], {\n\t\t// summary:\n\t\t//\t\tWidget corresponding to HTML form tag, for validation and serialization\n\t\t//\n\t\t// example:\n\t\t//\t|\t<form data-dojo-type=\"dijit/form/Form\" id=\"myForm\">\n\t\t//\t|\t\tName: <input type=\"text\" name=\"name\" />\n\t\t//\t|\t</form>\n\t\t//\t|\t// Example assumes you have required dijit/registry\n\t\t//\t|\tmyObj = {name: \"John Doe\"};\n\t\t//\t|\tregistry.byId('myForm').set('value', myObj);\n\t\t//\t|\n\t\t//\t|\tmyObj=registry.byId('myForm').get('value');\n\n\t\t// HTML <FORM> attributes\n\n\t\t// name: String?\n\t\t//\t\tName of form for scripting.\n\t\tname: \"\",\n\n\t\t// action: String?\n\t\t//\t\tServer-side form handler.\n\t\taction: \"\",\n\n\t\t// method: String?\n\t\t//\t\tHTTP method used to submit the form, either \"GET\" or \"POST\".\n\t\tmethod: \"\",\n\n\t\t// encType: String?\n\t\t//\t\tEncoding type for the form, ex: application/x-www-form-urlencoded.\n\t\tencType: \"\",\n\n\t\t// accept-charset: String?\n\t\t//\t\tList of supported charsets.\n\t\t\"accept-charset\": \"\",\n\n\t\t// accept: String?\n\t\t//\t\tList of MIME types for file upload.\n\t\taccept: \"\",\n\n\t\t// target: String?\n\t\t//\t\tTarget frame for the document to be opened in.\n\t\ttarget: \"\",\n\n\t\ttemplateString: \"<form data-dojo-attach-point='containerNode' data-dojo-attach-event='onreset:_onReset,onsubmit:_onSubmit' ${!nameAttrSetting}></form>\",\n\n\t\tpostMixInProperties: function(){\n\t\t\t// Setup name=foo string to be referenced from the template (but only if a name has been specified)\n\t\t\t// Unfortunately we can't use _setNameAttr to set the name due to IE limitations, see #8660\n\t\t\tthis.nameAttrSetting = this.name ? (\"name='\" + this.name + \"'\") : \"\";\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\texecute: function(/*Object*/ /*===== formContents =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated: use submit()\n\t\t\t// tags:\n\t\t\t//\t\tdeprecated\n\t\t},\n\n\t\tonExecute: function(){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated: use onSubmit()\n\t\t\t// tags:\n\t\t\t//\t\tdeprecated\n\t\t},\n\n\t\t_setEncTypeAttr: function(/*String*/ value){\n\t\t\tdomAttr.set(this.domNode, \"encType\", value);\n\t\t\tif(has(\"ie\")){\n\t\t\t\tthis.domNode.encoding = value;\n\t\t\t}\n\t\t\tthis._set(\"encType\", value);\n\t\t},\n\n\t\treset: function(/*Event?*/ e){\n\t\t\t// summary:\n\t\t\t//\t\trestores all widget values back to their init values,\n\t\t\t//\t\tcalls onReset() which can cancel the reset by returning false\n\n\t\t\t// create fake event so we can know if preventDefault() is called\n\t\t\tvar faux = {\n\t\t\t\treturnValue: true, // the IE way\n\t\t\t\tpreventDefault: function(){ // not IE\n\t\t\t\t\tthis.returnValue = false;\n\t\t\t\t},\n\t\t\t\tstopPropagation: function(){\n\t\t\t\t},\n\t\t\t\tcurrentTarget: e ? e.target : this.domNode,\n\t\t\t\ttarget: e ? e.target : this.domNode\n\t\t\t};\n\t\t\t// if return value is not exactly false, and haven't called preventDefault(), then reset\n\t\t\tif(!(this.onReset(faux) === false) && faux.returnValue){\n\t\t\t\tthis.inherited(arguments, []);\n\t\t\t}\n\t\t},\n\n\t\tonReset: function(/*Event?*/ /*===== e =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tCallback when user resets the form. This method is intended\n\t\t\t//\t\tto be over-ridden. When the `reset` method is called\n\t\t\t//\t\tprogrammatically, the return value from `onReset` is used\n\t\t\t//\t\tto compute whether or not resetting should proceed\n\t\t\t// tags:\n\t\t\t//\t\tcallback\n\t\t\treturn true; // Boolean\n\t\t},\n\n\t\t_onReset: function(e){\n\t\t\tthis.reset(e);\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\treturn false;\n\t\t},\n\n\t\t_onSubmit: function(e){\n\t\t\tvar fp = this.constructor.prototype;\n\t\t\t// TODO: remove this if statement beginning with 2.0\n\t\t\tif(this.execute != fp.execute || this.onExecute != fp.onExecute){\n\t\t\t\tkernel.deprecated(\"dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.\", \"\", \"2.0\");\n\t\t\t\tthis.onExecute();\n\t\t\t\tthis.execute(this.getValues());\n\t\t\t}\n\t\t\tif(this.onSubmit(e) === false){ // only exactly false stops submit\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t},\n\n\t\tonSubmit: function(/*Event?*/ /*===== e =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tCallback when user submits the form.\n\t\t\t// description:\n\t\t\t//\t\tThis method is intended to be over-ridden, but by default it checks and\n\t\t\t//\t\treturns the validity of form elements. When the `submit`\n\t\t\t//\t\tmethod is called programmatically, the return value from\n\t\t\t//\t\t`onSubmit` is used to compute whether or not submission\n\t\t\t//\t\tshould proceed\n\t\t\t// tags:\n\t\t\t//\t\textension\n\n\t\t\treturn this.isValid(); // Boolean\n\t\t},\n\n\t\tsubmit: function(){\n\t\t\t// summary:\n\t\t\t//\t\tprogrammatically submit form if and only if the `onSubmit` returns true\n\t\t\tif(!(this.onSubmit() === false)){\n\t\t\t\tthis.containerNode.submit();\n\t\t\t}\n\t\t}\n\t});\n});\n","define([\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/dom-construct\", // domConstruct.create\n\t\"dojo/dom-style\", // domStyle.getComputedStyle\n\t\"dojo/_base/kernel\", // kernel.deprecated\n\t\"dojo/_base/lang\", // lang.hitch\n\t\"dojo/on\",\n\t\"dojo/sniff\", // has(\"ie\") has(\"mozilla\")\n\t\"./_FormValueWidget\",\n\t\"./_TextBoxMixin\",\n\t\"dojo/text!./templates/TextBox.html\",\n\t\"../main\"\t// to export dijit._setSelectionRange, remove in 2.0\n], function(declare, domConstruct, domStyle, kernel, lang, on, has,\n\t\t\t_FormValueWidget, _TextBoxMixin, template, dijit){\n\n\t// module:\n\t//\t\tdijit/form/TextBox\n\n\tvar TextBox = declare(\"dijit.form.TextBox\" + (has(\"dojo-bidi\") ? \"_NoBidi\" : \"\"), [_FormValueWidget, _TextBoxMixin], {\n\t\t// summary:\n\t\t//\t\tA base class for textbox form inputs\n\n\t\ttemplateString: template,\n\t\t_singleNodeTemplate: '<input class=\"dijit dijitReset dijitLeft dijitInputField\" data-dojo-attach-point=\"textbox,focusNode\" autocomplete=\"off\" type=\"${type}\" ${!nameAttrSetting} />',\n\n\t\t_buttonInputDisabled: has(\"ie\") ? \"disabled\" : \"\", // allows IE to disallow focus, but Firefox cannot be disabled for mousedown events\n\n\t\tbaseClass: \"dijitTextBox\",\n\n\t\tpostMixInProperties: function(){\n\t\t\tvar type = this.type.toLowerCase();\n\t\t\tif(this.templateString && this.templateString.toLowerCase() == \"input\" || ((type == \"hidden\" || type == \"file\") && this.templateString == this.constructor.prototype.templateString)){\n\t\t\t\tthis.templateString = this._singleNodeTemplate;\n\t\t\t}\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\tpostCreate: function(){\n\t\t\tthis.inherited(arguments);\n\n\t\t\tif(has(\"ie\") < 9){\n\t\t\t\t// IE INPUT tag fontFamily has to be set directly using STYLE\n\t\t\t\t// the defer gives IE a chance to render the TextBox and to deal with font inheritance\n\t\t\t\tthis.defer(function(){\n\t\t\t\t\ttry{\n\t\t\t\t\t\tvar s = domStyle.getComputedStyle(this.domNode); // can throw an exception if widget is immediately destroyed\n\t\t\t\t\t\tif(s){\n\t\t\t\t\t\t\tvar ff = s.fontFamily;\n\t\t\t\t\t\t\tif(ff){\n\t\t\t\t\t\t\t\tvar inputs = this.domNode.getElementsByTagName(\"INPUT\");\n\t\t\t\t\t\t\t\tif(inputs){\n\t\t\t\t\t\t\t\t\tfor(var i=0; i < inputs.length; i++){\n\t\t\t\t\t\t\t\t\t\tinputs[i].style.fontFamily = ff;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}catch(e){/*when used in a Dialog, and this is called before the dialog is\n\t\t\t\t\t shown, s.fontFamily would trigger \"Invalid Argument\" error.*/}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t_setPlaceHolderAttr: function(v){\n\t\t\tthis._set(\"placeHolder\", v);\n\t\t\tif(!this._phspan){\n\t\t\t\tthis._attachPoints.push('_phspan');\n\t\t\t\tthis._phspan = domConstruct.create('span', {\n\t\t\t\t\t// dijitInputField class gives placeHolder same padding as the input field\n\t\t\t\t\t// parent node already has dijitInputField class but it doesn't affect this <span>\n\t\t\t\t\t// since it's position: absolute.\n\t\t\t\t\tclassName: 'dijitPlaceHolder dijitInputField'\n\t\t\t\t}, this.textbox, 'after');\n\t\t\t\tthis.own(\n\t\t\t\t\ton(this._phspan, \"mousedown\", function(evt){ evt.preventDefault(); }),\n\t\t\t\t\ton(this._phspan, \"touchend, pointerup, MSPointerUp\", lang.hitch(this, function(){\n\t\t\t\t\t\t// If the user clicks placeholder rather than the <input>, need programmatic focus. Normally this\n\t\t\t\t\t\t// is done in _FormWidgetMixin._onFocus() but after [30663] it's done on a delay, which is ineffective.\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t}))\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis._phspan.innerHTML=\"\";\n\t\t\tthis._phspan.appendChild(this._phspan.ownerDocument.createTextNode(v));\n\t\t\tthis._updatePlaceHolder();\n\t\t},\n\n\t\t_onInput: function(/*Event*/ evt){\n\t\t\t// summary:\n\t\t\t//\t\tCalled AFTER the input event has happened\n\t\t\t//\t\tSee if the placeHolder text should be removed or added while editing.\n\t\t\tthis.inherited(arguments);\n\t\t\tthis._updatePlaceHolder();\n\t\t},\n\n\t\t_updatePlaceHolder: function(){\n\t\t\tif(this._phspan){\n\t\t\t\tthis._phspan.style.display = (this.placeHolder && !this.textbox.value) ? \"\" : \"none\";\n\t\t\t}\n\t\t},\n\n\t\t_setValueAttr: function(value, /*Boolean?*/ priorityChange, /*String?*/ formattedValue){\n\t\t\tthis.inherited(arguments);\n\t\t\tthis._updatePlaceHolder();\n\t\t},\n\n\t\tgetDisplayedValue: function(){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated. Use get('displayedValue') instead.\n\t\t\t// tags:\n\t\t\t//\t\tdeprecated\n\t\t\tkernel.deprecated(this.declaredClass+\"::getDisplayedValue() is deprecated. Use get('displayedValue') instead.\", \"\", \"2.0\");\n\t\t\treturn this.get('displayedValue');\n\t\t},\n\n\t\tsetDisplayedValue: function(/*String*/ value){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated. Use set('displayedValue', ...) instead.\n\t\t\t// tags:\n\t\t\t//\t\tdeprecated\n\t\t\tkernel.deprecated(this.declaredClass+\"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.\", \"\", \"2.0\");\n\t\t\tthis.set('displayedValue', value);\n\t\t},\n\n\t\t_onBlur: function(e){\n\t\t\tif(this.disabled){ return; }\n\t\t\tthis.inherited(arguments);\n\t\t\tthis._updatePlaceHolder();\n\n\t\t\tif(has(\"mozilla\")){\n\t\t\t\tif(this.selectOnClick){\n\t\t\t\t\t// clear selection so that the next mouse click doesn't reselect\n\t\t\t\t\tthis.textbox.selectionStart = this.textbox.selectionEnd = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_onFocus: function(/*String*/ by){\n\t\t\tif(this.disabled || this.readOnly){ return; }\n\t\t\tthis.inherited(arguments);\n\t\t\tthis._updatePlaceHolder();\n\t\t}\n\t});\n\n\tif(has(\"ie\") < 9){\n\t\tTextBox.prototype._isTextSelected = function(){\n\t\t\tvar range = this.ownerDocument.selection.createRange();\n\t\t\tvar parent = range.parentElement();\n\t\t\treturn parent == this.textbox && range.text.length > 0;\n\t\t};\n\n\t\t// Overrides definition of _setSelectionRange from _TextBoxMixin (TODO: move to _TextBoxMixin.js?)\n\t\tdijit._setSelectionRange = _TextBoxMixin._setSelectionRange = function(/*DomNode*/ element, /*Number?*/ start, /*Number?*/ stop){\n\t\t\tif(element.createTextRange){\n\t\t\t\tvar r = element.createTextRange();\n\t\t\t\tr.collapse(true);\n\t\t\t\tr.moveStart(\"character\", -99999); // move to 0\n\t\t\t\tr.moveStart(\"character\", start); // delta from 0 is the correct position\n\t\t\t\tr.moveEnd(\"character\", stop-start);\n\t\t\t\tr.select();\n\t\t\t}\n\t\t}\n\t}\n\n\tif(has(\"dojo-bidi\")){\n\t\tTextBox = declare(\"dijit.form.TextBox\", TextBox, {\n\t\t\t_setPlaceHolderAttr: function(v){\n\t\t\t\tthis.inherited(arguments);\n\t\t\t\tthis.applyTextDir(this._phspan);\n\t\t\t}\n\t\t});\n\t}\n\n\treturn TextBox;\n});\n","define([\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/_base/kernel\", // kernel.deprecated\n\t\"dojo/_base/lang\",\n\t\"dojo/i18n\", // i18n.getLocalization\n\t\"./TextBox\",\n\t\"../Tooltip\",\n\t\"dojo/text!./templates/ValidationTextBox.html\",\n\t\"dojo/i18n!./nls/validate\"\n], function(declare, kernel, lang, i18n, TextBox, Tooltip, template){\n\n\t// module:\n\t//\t\tdijit/form/ValidationTextBox\n\n\n\tvar ValidationTextBox = declare(\"dijit.form.ValidationTextBox\", TextBox, {\n\t\t// summary:\n\t\t//\t\tBase class for textbox widgets with the ability to validate content of various types and provide user feedback.\n\n\t\ttemplateString: template,\n\n\t\t// required: Boolean\n\t\t//\t\tUser is required to enter data into this field.\n\t\trequired: false,\n\n\t\t// promptMessage: String\n\t\t//\t\tIf defined, display this hint string immediately on focus to the textbox, if empty.\n\t\t//\t\tAlso displays if the textbox value is Incomplete (not yet valid but will be with additional input).\n\t\t//\t\tThink of this like a tooltip that tells the user what to do, not an error message\n\t\t//\t\tthat tells the user what they've done wrong.\n\t\t//\n\t\t//\t\tMessage disappears when user starts typing.\n\t\tpromptMessage: \"\",\n\n\t\t// invalidMessage: String\n\t\t//\t\tThe message to display if value is invalid.\n\t\t//\t\tThe translated string value is read from the message file by default.\n\t\t//\t\tSet to \"\" to use the promptMessage instead.\n\t\tinvalidMessage: \"$_unset_$\",\n\n\t\t// missingMessage: String\n\t\t//\t\tThe message to display if value is empty and the field is required.\n\t\t//\t\tThe translated string value is read from the message file by default.\n\t\t//\t\tSet to \"\" to use the invalidMessage instead.\n\t\tmissingMessage: \"$_unset_$\",\n\n\t\t// message: String\n\t\t//\t\tCurrently error/prompt message.\n\t\t//\t\tWhen using the default tooltip implementation, this will only be\n\t\t//\t\tdisplayed when the field is focused.\n\t\tmessage: \"\",\n\n\t\t// constraints: ValidationTextBox.__Constraints\n\t\t//\t\tDespite the name, this parameter specifies both constraints on the input as well as\n\t\t//\t\tformatting options. See `dijit/form/ValidationTextBox.__Constraints` for details.\n\t\tconstraints:{},\n\n\t\t// pattern: [extension protected] String|Function(constraints) returning a string.\n\t\t//\t\tThis defines the regular expression used to validate the input.\n\t\t//\t\tDo not add leading ^ or $ characters since the widget adds these.\n\t\t//\t\tA function may be used to generate a valid pattern when dependent on constraints or other runtime factors.\n\t\t//\t\tset('pattern', String|Function).\n\t\tpattern: \".*\",\n\n\t\t// regExp: Deprecated [extension protected] String. Use \"pattern\" instead.\n\t\tregExp: \"\",\n\n\t\tregExpGen: function(/*__Constraints*/ /*===== constraints =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated. Use set('pattern', Function) instead.\n\t\t},\n\n\t\t// state: [readonly] String\n\t\t//\t\tShows current state (ie, validation result) of input (\"\"=Normal, Incomplete, or Error)\n\t\tstate: \"\",\n\n\t\t// tooltipPosition: String[]\n\t\t//\t\tSee description of `dijit/Tooltip.defaultPosition` for details on this parameter.\n\t\ttooltipPosition: [],\n\n\t\t_deprecateRegExp: function(attr, value){\n\t\t\tif(value != ValidationTextBox.prototype[attr]){\n\t\t\t\tkernel.deprecated(\"ValidationTextBox id=\"+this.id+\", set('\" + attr + \"', ...) is deprecated. Use set('pattern', ...) instead.\", \"\", \"2.0\");\n\t\t\t\tthis.set('pattern', value);\n\t\t\t}\n\t\t},\n\t\t_setRegExpGenAttr: function(/*Function*/ newFcn){\n\t\t\tthis._deprecateRegExp(\"regExpGen\", newFcn);\n\t\t\tthis._set(\"regExpGen\", this._computeRegexp); // backward compat with this.regExpGen(this.constraints)\n\t\t},\n\t\t_setRegExpAttr: function(/*String*/ value){\n\t\t\tthis._deprecateRegExp(\"regExp\", value);\n\t\t},\n\n\t\t_setValueAttr: function(){\n\t\t\t// summary:\n\t\t\t//\t\tHook so set('value', ...) works.\n\t\t\tthis.inherited(arguments);\n\t\t\tthis._refreshState();\n\t\t},\n\n\t\tvalidator: function(/*anything*/ value, /*__Constraints*/ constraints){\n\t\t\t// summary:\n\t\t\t//\t\tOverridable function used to validate the text input against the regular expression.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\treturn (new RegExp(\"^(?:\" + this._computeRegexp(constraints) + \")\"+(this.required?\"\":\"?\")+\"$\")).test(value) &&\n\t\t\t\t(!this.required || !this._isEmpty(value)) &&\n\t\t\t\t(this._isEmpty(value) || this.parse(value, constraints) !== undefined); // Boolean\n\t\t},\n\n\t\t_isValidSubset: function(){\n\t\t\t// summary:\n\t\t\t//\t\tReturns true if the value is either already valid or could be made valid by appending characters.\n\t\t\t//\t\tThis is used for validation while the user [may be] still typing.\n\t\t\treturn this.textbox.value.search(this._partialre) == 0;\n\t\t},\n\n\t\tisValid: function(/*Boolean*/ /*===== isFocused =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tTests if value is valid.\n\t\t\t//\t\tCan override with your own routine in a subclass.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\treturn this.validator(this.textbox.value, this.get('constraints'));\n\t\t},\n\n\t\t_isEmpty: function(value){\n\t\t\t// summary:\n\t\t\t//\t\tChecks for whitespace\n\t\t\treturn (this.trim ? /^\\s*$/ : /^$/).test(value); // Boolean\n\t\t},\n\n\t\tgetErrorMessage: function(/*Boolean*/ /*===== isFocused =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tReturn an error message to show if appropriate\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\tvar invalid = this.invalidMessage == \"$_unset_$\" ? this.messages.invalidMessage :\n\t\t\t\t!this.invalidMessage ? this.promptMessage : this.invalidMessage;\n\t\t\tvar missing = this.missingMessage == \"$_unset_$\" ? this.messages.missingMessage :\n\t\t\t\t!this.missingMessage ? invalid : this.missingMessage;\n\t\t\treturn (this.required && this._isEmpty(this.textbox.value)) ? missing : invalid; // String\n\t\t},\n\n\t\tgetPromptMessage: function(/*Boolean*/ /*===== isFocused =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tReturn a hint message to show when widget is first focused\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\treturn this.promptMessage; // String\n\t\t},\n\n\t\t_maskValidSubsetError: true,\n\t\tvalidate: function(/*Boolean*/ isFocused){\n\t\t\t// summary:\n\t\t\t//\t\tCalled by oninit, onblur, and onkeypress.\n\t\t\t// description:\n\t\t\t//\t\tShow missing or invalid messages if appropriate, and highlight textbox field.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\tvar message = \"\";\n\t\t\tvar isValid = this.disabled || this.isValid(isFocused);\n\t\t\tif(isValid){ this._maskValidSubsetError = true; }\n\t\t\tvar isEmpty = this._isEmpty(this.textbox.value);\n\t\t\tvar isValidSubset = !isValid && isFocused && this._isValidSubset();\n\t\t\tthis._set(\"state\", isValid ? \"\" : (((((!this._hasBeenBlurred || isFocused) && isEmpty) || isValidSubset) && (this._maskValidSubsetError || (isValidSubset && !this._hasBeenBlurred && isFocused))) ? \"Incomplete\" : \"Error\"));\n\t\t\tthis.focusNode.setAttribute(\"aria-invalid\", this.state == \"Error\" ? \"true\" : \"false\");\n\n\t\t\tif(this.state == \"Error\"){\n\t\t\t\tthis._maskValidSubsetError = isFocused && isValidSubset; // we want the error to show up after a blur and refocus\n\t\t\t\tmessage = this.getErrorMessage(isFocused);\n\t\t\t}else if(this.state == \"Incomplete\"){\n\t\t\t\tmessage = this.getPromptMessage(isFocused); // show the prompt whenever the value is not yet complete\n\t\t\t\tthis._maskValidSubsetError = !this._hasBeenBlurred || isFocused; // no Incomplete warnings while focused\n\t\t\t}else if(isEmpty){\n\t\t\t\tmessage = this.getPromptMessage(isFocused); // show the prompt whenever there's no error and no text\n\t\t\t}\n\t\t\tthis.set(\"message\", message);\n\n\t\t\treturn isValid;\n\t\t},\n\n\t\tdisplayMessage: function(/*String*/ message){\n\t\t\t// summary:\n\t\t\t//\t\tOverridable method to display validation errors/hints.\n\t\t\t//\t\tBy default uses a tooltip.\n\t\t\t// tags:\n\t\t\t//\t\textension\n\t\t\tif(message && this.focused){\n\t\t\t\tTooltip.show(message, this.domNode, this.tooltipPosition, !this.isLeftToRight());\n\t\t\t}else{\n\t\t\t\tTooltip.hide(this.domNode);\n\t\t\t}\n\t\t},\n\n\t\t_refreshState: function(){\n\t\t\t// Overrides TextBox._refreshState()\n\t\t\tif(this._created){ // should instead be this._started but that would require all programmatic ValidationTextBox instantiations to call startup()\n\t\t\t\tthis.validate(this.focused);\n\t\t\t}\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\t//////////// INITIALIZATION METHODS ///////////////////////////////////////\n\n\t\tconstructor: function(params /*===== , srcNodeRef =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tCreate the widget.\n\t\t\t// params: Object|null\n\t\t\t//\t\tHash of initialization parameters for widget, including scalar values (like title, duration etc.)\n\t\t\t//\t\tand functions, typically callbacks like onClick.\n\t\t\t//\t\tThe hash can contain any of the widget's properties, excluding read-only properties.\n\t\t\t// srcNodeRef: DOMNode|String?\n\t\t\t//\t\tIf a srcNodeRef (DOM node) is specified, replace srcNodeRef with my generated DOM tree.\n\n\t\t\tthis.constraints = lang.clone(this.constraints);\n\t\t\tthis.baseClass += ' dijitValidationTextBox';\n\t\t},\n\n\t\tstartup: function(){\n\t\t\tthis.inherited(arguments);\n\t\t\tthis._refreshState(); // after all _set* methods have run\n\t\t},\n\n\t\t_setConstraintsAttr: function(/*__Constraints*/ constraints){\n\t\t\tif(!constraints.locale && this.lang){\n\t\t\t\tconstraints.locale = this.lang;\n\t\t\t}\n\t\t\tthis._set(\"constraints\", constraints);\n\t\t\tthis._refreshState();\n\t\t},\n\n\t\t_setPatternAttr: function(/*String|Function*/ pattern){\n\t\t\tthis._set(\"pattern\", pattern); // don't set on INPUT to avoid native HTML5 validation\n\t\t\tthis._refreshState();\n\t\t},\n\n\t\t_computeRegexp: function(/*__Constraints*/ constraints){\n\t\t\t// summary:\n\t\t\t//\t\tHook to get the current regExp and to compute the partial validation RE.\n\n\t\t\tvar p = this.pattern;\n\t\t\tif(typeof p == \"function\"){\n\t\t\t\tp = p.call(this, constraints);\n\t\t\t}\n\t\t\tif(p != this._lastRegExp){\n\t\t\t\tvar partialre = \"\";\n\t\t\t\tthis._lastRegExp = p;\n\t\t\t\t// parse the regexp and produce a new regexp that matches valid subsets\n\t\t\t\t// if the regexp is .* then there's no use in matching subsets since everything is valid\n\t\t\t\tif(p != \".*\"){\n\t\t\t\t\tp.replace(/\\\\.|\\[\\]|\\[.*?[^\\\\]{1}\\]|\\{.*?\\}|\\(\\?[=:!]|./g,\n\t\t\t\t\tfunction(re){\n\t\t\t\t\t\tswitch(re.charAt(0)){\n\t\t\t\t\t\t\tcase '{':\n\t\t\t\t\t\t\tcase '+':\n\t\t\t\t\t\t\tcase '?':\n\t\t\t\t\t\t\tcase '*':\n\t\t\t\t\t\t\tcase '^':\n\t\t\t\t\t\t\tcase '$':\n\t\t\t\t\t\t\tcase '|':\n\t\t\t\t\t\t\tcase '(':\n\t\t\t\t\t\t\t\tpartialre += re;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \")\":\n\t\t\t\t\t\t\t\tpartialre += \"|$)\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t default:\n\t\t\t\t\t\t\t\tpartialre += \"(?:\"+re+\"|$)\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\ttry{ // this is needed for now since the above regexp parsing needs more test verification\n\t\t\t\t\t\"\".search(partialre);\n\t\t\t\t}catch(e){ // should never be here unless the original RE is bad or the parsing is bad\n\t\t\t\t\tpartialre = this.pattern;\n\t\t\t\t\tconsole.warn('RegExp error in ' + this.declaredClass + ': ' + this.pattern);\n\t\t\t\t} // should never be here unless the original RE is bad or the parsing is bad\n\t\t\t\tthis._partialre = \"^(?:\" + partialre + \")$\";\n\t\t\t}\n\t\t\treturn p;\n\t\t},\n\n\t\tpostMixInProperties: function(){\n\t\t\tthis.inherited(arguments);\n\t\t\tthis.messages = i18n.getLocalization(\"dijit.form\", \"validate\", this.lang);\n\t\t\tthis._setConstraintsAttr(this.constraints); // this needs to happen now (and later) due to codependency on _set*Attr calls attachPoints\n\t\t},\n\n\t\t_setDisabledAttr: function(/*Boolean*/ value){\n\t\t\tthis.inherited(arguments);\t// call FormValueWidget._setDisabledAttr()\n\t\t\tthis._refreshState();\n\t\t},\n\n\t\t_setRequiredAttr: function(/*Boolean*/ value){\n\t\t\tthis._set(\"required\", value);\n\t\t\tthis.focusNode.setAttribute(\"aria-required\", value);\n\t\t\tthis._refreshState();\n\t\t},\n\n\t\t_setMessageAttr: function(/*String*/ message){\n\t\t\tthis._set(\"message\", message);\n\t\t\tthis.displayMessage(message);\n\t\t},\n\n\t\treset:function(){\n\t\t\t// Overrides dijit/form/TextBox.reset() by also\n\t\t\t// hiding errors about partial matches\n\t\t\tthis._maskValidSubsetError = true;\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\t_onBlur: function(){\n\t\t\t// the message still exists but for back-compat, and to erase the tooltip\n\t\t\t// (if the message is being displayed as a tooltip), call displayMessage('')\n\t\t\tthis.displayMessage('');\n\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tTooltip.hide(this.domNode);\t// in case tooltip show when ValidationTextBox (or enclosing Dialog) destroyed\n\t\t\tthis.inherited(arguments);\n\t\t}\n\t});\n\n\t/*=====\n\t ValidationTextBox.__Constraints = {\n\t\t // locale: String\n\t\t //\t\tlocale used for validation, picks up value from this widget's lang attribute\n\t\t // _flags_: anything\n\t\t //\t\tvarious flags passed to pattern function\n\t };\n\t =====*/\n\n\treturn ValidationTextBox;\n});\n","define([\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/dom\", // dom.setSelectable\n\t\"dojo/has\",\n\t\"../registry\" // registry.byNode\n], function(declare, dom, has, registry){\n\n\t// module:\n\t//\t\tdijit/form/_ButtonMixin\n\n\tvar ButtonMixin = declare(\"dijit.form._ButtonMixin\" + (has(\"dojo-bidi\") ? \"_NoBidi\" : \"\"), null, {\n\t\t// summary:\n\t\t//\t\tA mixin to add a thin standard API wrapper to a normal HTML button\n\t\t// description:\n\t\t//\t\tA label should always be specified (through innerHTML) or the label attribute.\n\t\t//\n\t\t//\t\tAttach points:\n\t\t//\n\t\t//\t\t- focusNode (required): this node receives focus\n\t\t//\t\t- valueNode (optional): this node's value gets submitted with FORM elements\n\t\t//\t\t- containerNode (optional): this node gets the innerHTML assignment for label\n\t\t// example:\n\t\t// |\t<button data-dojo-type=\"dijit/form/Button\" onClick=\"...\">Hello world</button>\n\t\t// example:\n\t\t// |\tvar button1 = new Button({label: \"hello world\", onClick: foo});\n\t\t// |\tdojo.body().appendChild(button1.domNode);\n\n\t\t// label: HTML String\n\t\t//\t\tContent to display in button.\n\t\tlabel: \"\",\n\n\t\t// type: [const] String\n\t\t//\t\tType of button (submit, reset, button, checkbox, radio)\n\t\ttype: \"button\",\n\n\t\t__onClick: function(/*Event*/ e){\n\t\t\t// summary:\n\t\t\t//\t\tInternal function to divert the real click onto the hidden INPUT that has a native default action associated with it\n\t\t\t// type:\n\t\t\t//\t\tprivate\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tif(!this.disabled){\n\t\t\t\t// cannot use on.emit since button default actions won't occur\n\t\t\t\tthis.valueNode.click(e);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\t_onClick: function(/*Event*/ e){\n\t\t\t// summary:\n\t\t\t//\t\tInternal function to handle click actions\n\t\t\tif(this.disabled){\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(this.onClick(e) === false){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\tvar cancelled = e.defaultPrevented;\n\n\t\t\t// Signal Form/Dialog to submit/close. For 2.0, consider removing this code and instead making the Form/Dialog\n\t\t\t// listen for bubbled click events where evt.target.type == \"submit\" && !evt.defaultPrevented.\n\t\t\tif(!cancelled && this.type == \"submit\" && !(this.valueNode || this.focusNode).form){\n\t\t\t\tfor(var node = this.domNode; node.parentNode; node = node.parentNode){\n\t\t\t\t\tvar widget = registry.byNode(node);\n\t\t\t\t\tif(widget && typeof widget._onSubmit == \"function\"){\n\t\t\t\t\t\twidget._onSubmit(e);\n\t\t\t\t\t\te.preventDefault(); // action has already occurred\n\t\t\t\t\t\tcancelled = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn !cancelled;\n\t\t},\n\n\t\tpostCreate: function(){\n\t\t\tthis.inherited(arguments);\n\t\t\tdom.setSelectable(this.focusNode, false);\n\t\t},\n\n\t\tonClick: function(/*Event*/ /*===== e =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tCallback for when button is clicked.\n\t\t\t//\t\tIf type=\"submit\", return true to perform submit, or false to cancel it.\n\t\t\t// type:\n\t\t\t//\t\tcallback\n\t\t\treturn true;\t\t// Boolean\n\t\t},\n\n\t\t_setLabelAttr: function(/*String*/ content){\n\t\t\t// summary:\n\t\t\t//\t\tHook for set('label', ...) to work.\n\t\t\t// description:\n\t\t\t//\t\tSet the label (text) of the button; takes an HTML string.\n\t\t\tthis._set(\"label\", content);\n\t\t\tvar labelNode = this.containerNode || this.focusNode;\n\t\t\tlabelNode.innerHTML = content;\n\t\t\tthis.onLabelSet();\n\t\t},\n\n\t\tonLabelSet: function(){\n\t\t}\n\t});\n\n\tif(has(\"dojo-bidi\")){\n\t\tButtonMixin = declare(\"dijit.form._ButtonMixin\", ButtonMixin, {\n\t\t\tonLabelSet: function(){\n\t\t\t\tthis.inherited(arguments);\n\t\t\t\tvar labelNode = this.containerNode || this.focusNode;\n\t\t\t\tthis.applyTextDir(labelNode);\n\t\t\t}\n\t\t});\n\t}\n\n\treturn ButtonMixin;\n});\n","define([\n\t\"dojo/_base/array\", // array.every array.filter array.forEach array.indexOf array.map\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/_base/kernel\", // kernel.deprecated\n\t\"dojo/_base/lang\", // lang.hitch lang.isArray\n\t\"dojo/on\",\n\t\"dojo/window\" // winUtils.scrollIntoView\n], function(array, declare, kernel, lang, on, winUtils){\n\n\t// module:\n\t//\t\tdijit/form/_FormMixin\n\n\treturn declare(\"dijit.form._FormMixin\", null, {\n\t\t// summary:\n\t\t//\t\tMixin for containers of form widgets (i.e. widgets that represent a single value\n\t\t//\t\tand can be children of a `<form>` node or `dijit/form/Form` widget)\n\t\t// description:\n\t\t//\t\tCan extract all the form widgets\n\t\t//\t\tvalues and combine them into a single javascript object, or alternately\n\t\t//\t\ttake such an object and set the values for all the contained\n\t\t//\t\tform widgets\n\n\t/*=====\n\t\t// value: Object\n\t\t//\t\tName/value hash for each child widget with a name and value.\n\t\t//\t\tChild widgets without names are not part of the hash.\n\t\t//\n\t\t//\t\tIf there are multiple child widgets w/the same name, value is an array,\n\t\t//\t\tunless they are radio buttons in which case value is a scalar (since only\n\t\t//\t\tone radio button can be checked at a time).\n\t\t//\n\t\t//\t\tIf a child widget's name is a dot separated list (like a.b.c.d), it's a nested structure.\n\t\t//\n\t\t//\t\tExample:\n\t\t//\t|\t{ name: \"John Smith\", interests: [\"sports\", \"movies\"] }\n\t=====*/\n\n\t\t// state: [readonly] String\n\t\t//\t\tWill be \"Error\" if one or more of the child widgets has an invalid value,\n\t\t//\t\t\"Incomplete\" if not all of the required child widgets are filled in. Otherwise, \"\",\n\t\t//\t\twhich indicates that the form is ready to be submitted.\n\t\tstate: \"\",\n\n\t\t// TODO:\n\t\t//\t* Repeater\n\t\t//\t* better handling for arrays. Often form elements have names with [] like\n\t\t//\t* people[3].sex (for a list of people [{name: Bill, sex: M}, ...])\n\n\n\t\t_getDescendantFormWidgets: function(/*dijit/_WidgetBase[]?*/ children){\n\t\t\t// summary:\n\t\t\t//\t\tReturns all form widget descendants, searching through non-form child widgets like BorderContainer\n\t\t\tvar res = [];\n\t\t\tarray.forEach(children || this.getChildren(), function(child){\n\t\t\t\tif(\"value\" in child){\n\t\t\t\t\tres.push(child);\n\t\t\t\t}else{\n\t\t\t\t\tres = res.concat(this._getDescendantFormWidgets(child.getChildren()));\n\t\t\t\t}\n\t\t\t}, this);\n\t\t\treturn res;\n\t\t},\n\n\t\treset: function(){\n\t\t\tarray.forEach(this._getDescendantFormWidgets(), function(widget){\n\t\t\t\tif(widget.reset){\n\t\t\t\t\twidget.reset();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tvalidate: function(){\n\t\t\t// summary:\n\t\t\t//\t\treturns if the form is valid - same as isValid - but\n\t\t\t//\t\tprovides a few additional (ui-specific) features:\n\t\t\t//\n\t\t\t//\t\t1. it will highlight any sub-widgets that are not valid\n\t\t\t//\t\t2. it will call focus() on the first invalid sub-widget\n\t\t\tvar didFocus = false;\n\t\t\treturn array.every(array.map(this._getDescendantFormWidgets(), function(widget){\n\t\t\t\t// Need to set this so that \"required\" widgets get their\n\t\t\t\t// state set.\n\t\t\t\twidget._hasBeenBlurred = true;\n\t\t\t\tvar valid = widget.disabled || !widget.validate || widget.validate();\n\t\t\t\tif(!valid && !didFocus){\n\t\t\t\t\t// Set focus of the first non-valid widget\n\t\t\t\t\twinUtils.scrollIntoView(widget.containerNode || widget.domNode);\n\t\t\t\t\twidget.focus();\n\t\t\t\t\tdidFocus = true;\n\t\t\t\t}\n\t\t\t\treturn valid;\n\t\t\t}), function(item){ return item; });\n\t\t},\n\n\t\tsetValues: function(val){\n\t\t\tkernel.deprecated(this.declaredClass+\"::setValues() is deprecated. Use set('value', val) instead.\", \"\", \"2.0\");\n\t\t\treturn this.set('value', val);\n\t\t},\n\t\t_setValueAttr: function(/*Object*/ obj){\n\t\t\t// summary:\n\t\t\t//\t\tFill in form values from according to an Object (in the format returned by get('value'))\n\n\t\t\t// generate map from name --> [list of widgets with that name]\n\t\t\tvar map = { };\n\t\t\tarray.forEach(this._getDescendantFormWidgets(), function(widget){\n\t\t\t\tif(!widget.name){ return; }\n\t\t\t\tvar entry = map[widget.name] || (map[widget.name] = [] );\n\t\t\t\tentry.push(widget);\n\t\t\t});\n\n\t\t\tfor(var name in map){\n\t\t\t\tif(!map.hasOwnProperty(name)){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvar widgets = map[name],\t\t\t\t\t\t// array of widgets w/this name\n\t\t\t\t\tvalues = lang.getObject(name, false, obj);\t// list of values for those widgets\n\n\t\t\t\tif(values === undefined){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvalues = [].concat(values);\n\t\t\t\tif(typeof widgets[0].checked == 'boolean'){\n\t\t\t\t\t// for checkbox/radio, values is a list of which widgets should be checked\n\t\t\t\t\tarray.forEach(widgets, function(w){\n\t\t\t\t\t\tw.set('value', array.indexOf(values, w._get('value')) != -1);\n\t\t\t\t\t});\n\t\t\t\t}else if(widgets[0].multiple){\n\t\t\t\t\t// it takes an array (e.g. multi-select)\n\t\t\t\t\twidgets[0].set('value', values);\n\t\t\t\t}else{\n\t\t\t\t\t// otherwise, values is a list of values to be assigned sequentially to each widget\n\t\t\t\t\tarray.forEach(widgets, function(w, i){\n\t\t\t\t\t\tw.set('value', values[i]);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/***\n\t\t\t *\tTODO: code for plain input boxes (this shouldn't run for inputs that are part of widgets)\n\n\t\t\tarray.forEach(this.containerNode.elements, function(element){\n\t\t\t\tif(element.name == ''){return};\t// like \"continue\"\n\t\t\t\tvar namePath = element.name.split(\".\");\n\t\t\t\tvar myObj=obj;\n\t\t\t\tvar name=namePath[namePath.length-1];\n\t\t\t\tfor(var j=1,len2=namePath.length;j<len2;++j){\n\t\t\t\t\tvar p=namePath[j - 1];\n\t\t\t\t\t// repeater support block\n\t\t\t\t\tvar nameA=p.split(\"[\");\n\t\t\t\t\tif(nameA.length > 1){\n\t\t\t\t\t\tif(typeof(myObj[nameA[0]]) == \"undefined\"){\n\t\t\t\t\t\t\tmyObj[nameA[0]]=[ ];\n\t\t\t\t\t\t} // if\n\n\t\t\t\t\t\tnameIndex=parseInt(nameA[1]);\n\t\t\t\t\t\tif(typeof(myObj[nameA[0]][nameIndex]) == \"undefined\"){\n\t\t\t\t\t\t\tmyObj[nameA[0]][nameIndex] = { };\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmyObj=myObj[nameA[0]][nameIndex];\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} // repeater support ends\n\n\t\t\t\t\tif(typeof(myObj[p]) == \"undefined\"){\n\t\t\t\t\t\tmyObj=undefined;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t};\n\t\t\t\t\tmyObj=myObj[p];\n\t\t\t\t}\n\n\t\t\t\tif(typeof(myObj) == \"undefined\"){\n\t\t\t\t\treturn;\t\t// like \"continue\"\n\t\t\t\t}\n\t\t\t\tif(typeof(myObj[name]) == \"undefined\" && this.ignoreNullValues){\n\t\t\t\t\treturn;\t\t// like \"continue\"\n\t\t\t\t}\n\n\t\t\t\t// TODO: widget values (just call set('value', ...) on the widget)\n\n\t\t\t\t// TODO: maybe should call dojo.getNodeProp() instead\n\t\t\t\tswitch(element.type){\n\t\t\t\t\tcase \"checkbox\":\n\t\t\t\t\t\telement.checked = (name in myObj) &&\n\t\t\t\t\t\t\tarray.some(myObj[name], function(val){ return val == element.value; });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"radio\":\n\t\t\t\t\t\telement.checked = (name in myObj) && myObj[name] == element.value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"select-multiple\":\n\t\t\t\t\t\telement.selectedIndex=-1;\n\t\t\t\t\t\tarray.forEach(element.options, function(option){\n\t\t\t\t\t\t\toption.selected = array.some(myObj[name], function(val){ return option.value == val; });\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"select-one\":\n\t\t\t\t\t\telement.selectedIndex=\"0\";\n\t\t\t\t\t\tarray.forEach(element.options, function(option){\n\t\t\t\t\t\t\toption.selected = option.value == myObj[name];\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"hidden\":\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\tcase \"textarea\":\n\t\t\t\t\tcase \"password\":\n\t\t\t\t\t\telement.value = myObj[name] || \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t\t*/\n\n\t\t\t// Note: no need to call this._set(\"value\", ...) as the child updates will trigger onChange events\n\t\t\t// which I am monitoring.\n\t\t},\n\n\t\tgetValues: function(){\n\t\t\tkernel.deprecated(this.declaredClass+\"::getValues() is deprecated. Use get('value') instead.\", \"\", \"2.0\");\n\t\t\treturn this.get('value');\n\t\t},\n\t\t_getValueAttr: function(){\n\t\t\t// summary:\n\t\t\t//\t\tReturns Object representing form values. See description of `value` for details.\n\t\t\t// description:\n\n\t\t\t// The value is updated into this.value every time a child has an onChange event,\n\t\t\t// so in the common case this function could just return this.value. However,\n\t\t\t// that wouldn't work when:\n\t\t\t//\n\t\t\t// 1. User presses return key to submit a form. That doesn't fire an onchange event,\n\t\t\t// and even if it did it would come too late due to the defer(...) in _handleOnChange()\n\t\t\t//\n\t\t\t// 2. app for some reason calls this.get(\"value\") while the user is typing into a\n\t\t\t// form field. Not sure if that case needs to be supported or not.\n\n\t\t\t// get widget values\n\t\t\tvar obj = { };\n\t\t\tarray.forEach(this._getDescendantFormWidgets(), function(widget){\n\t\t\t\tvar name = widget.name;\n\t\t\t\tif(!name || widget.disabled){ return; }\n\n\t\t\t\t// Single value widget (checkbox, radio, or plain <input> type widget)\n\t\t\t\tvar value = widget.get('value');\n\n\t\t\t\t// Store widget's value(s) as a scalar, except for checkboxes which are automatically arrays\n\t\t\t\tif(typeof widget.checked == 'boolean'){\n\t\t\t\t\tif(/Radio/.test(widget.declaredClass)){\n\t\t\t\t\t\t// radio button\n\t\t\t\t\t\tif(value !== false){\n\t\t\t\t\t\t\tlang.setObject(name, value, obj);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t// give radio widgets a default of null\n\t\t\t\t\t\t\tvalue = lang.getObject(name, false, obj);\n\t\t\t\t\t\t\tif(value === undefined){\n\t\t\t\t\t\t\t\tlang.setObject(name, null, obj);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// checkbox/toggle button\n\t\t\t\t\t\tvar ary=lang.getObject(name, false, obj);\n\t\t\t\t\t\tif(!ary){\n\t\t\t\t\t\t\tary=[];\n\t\t\t\t\t\t\tlang.setObject(name, ary, obj);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(value !== false){\n\t\t\t\t\t\t\tary.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tvar prev=lang.getObject(name, false, obj);\n\t\t\t\t\tif(typeof prev != \"undefined\"){\n\t\t\t\t\t\tif(lang.isArray(prev)){\n\t\t\t\t\t\t\tprev.push(value);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tlang.setObject(name, [prev, value], obj);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// unique name\n\t\t\t\t\t\tlang.setObject(name, value, obj);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/***\n\t\t\t * code for plain input boxes (see also domForm.formToObject, can we use that instead of this code?\n\t\t\t * but it doesn't understand [] notation, presumably)\n\t\t\tvar obj = { };\n\t\t\tarray.forEach(this.containerNode.elements, function(elm){\n\t\t\t\tif(!elm.name)\t{\n\t\t\t\t\treturn;\t\t// like \"continue\"\n\t\t\t\t}\n\t\t\t\tvar namePath = elm.name.split(\".\");\n\t\t\t\tvar myObj=obj;\n\t\t\t\tvar name=namePath[namePath.length-1];\n\t\t\t\tfor(var j=1,len2=namePath.length;j<len2;++j){\n\t\t\t\t\tvar nameIndex = null;\n\t\t\t\t\tvar p=namePath[j - 1];\n\t\t\t\t\tvar nameA=p.split(\"[\");\n\t\t\t\t\tif(nameA.length > 1){\n\t\t\t\t\t\tif(typeof(myObj[nameA[0]]) == \"undefined\"){\n\t\t\t\t\t\t\tmyObj[nameA[0]]=[ ];\n\t\t\t\t\t\t} // if\n\t\t\t\t\t\tnameIndex=parseInt(nameA[1]);\n\t\t\t\t\t\tif(typeof(myObj[nameA[0]][nameIndex]) == \"undefined\"){\n\t\t\t\t\t\t\tmyObj[nameA[0]][nameIndex] = { };\n\t\t\t\t\t\t}\n\t\t\t\t\t}else if(typeof(myObj[nameA[0]]) == \"undefined\"){\n\t\t\t\t\t\tmyObj[nameA[0]] = { }\n\t\t\t\t\t} // if\n\n\t\t\t\t\tif(nameA.length == 1){\n\t\t\t\t\t\tmyObj=myObj[nameA[0]];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tmyObj=myObj[nameA[0]][nameIndex];\n\t\t\t\t\t} // if\n\t\t\t\t} // for\n\n\t\t\t\tif((elm.type != \"select-multiple\" && elm.type != \"checkbox\" && elm.type != \"radio\") || (elm.type == \"radio\" && elm.checked)){\n\t\t\t\t\tif(name == name.split(\"[\")[0]){\n\t\t\t\t\t\tmyObj[name]=elm.value;\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// can not set value when there is no name\n\t\t\t\t\t}\n\t\t\t\t}else if(elm.type == \"checkbox\" && elm.checked){\n\t\t\t\t\tif(typeof(myObj[name]) == 'undefined'){\n\t\t\t\t\t\tmyObj[name]=[ ];\n\t\t\t\t\t}\n\t\t\t\t\tmyObj[name].push(elm.value);\n\t\t\t\t}else if(elm.type == \"select-multiple\"){\n\t\t\t\t\tif(typeof(myObj[name]) == 'undefined'){\n\t\t\t\t\t\tmyObj[name]=[ ];\n\t\t\t\t\t}\n\t\t\t\t\tfor(var jdx=0,len3=elm.options.length; jdx<len3; ++jdx){\n\t\t\t\t\t\tif(elm.options[jdx].selected){\n\t\t\t\t\t\t\tmyObj[name].push(elm.options[jdx].value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} // if\n\t\t\t\tname=undefined;\n\t\t\t}); // forEach\n\t\t\t***/\n\t\t\treturn obj;\n\t\t},\n\n\t\tisValid: function(){\n\t\t\t// summary:\n\t\t\t//\t\tReturns true if all of the widgets are valid.\n\t\t\t//\t\tDeprecated, will be removed in 2.0. Use get(\"state\") instead.\n\n\t\t\treturn this.state == \"\";\n\t\t},\n\n\t\tonValidStateChange: function(/*Boolean*/ /*===== isValid =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tStub function to connect to if you want to do something\n\t\t\t//\t\t(like disable/enable a submit button) when the valid\n\t\t\t//\t\tstate changes on the form as a whole.\n\t\t\t//\n\t\t\t//\t\tDeprecated. Will be removed in 2.0. Use watch(\"state\", ...) instead.\n\t\t},\n\n\t\t_getState: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCompute what this.state should be based on state of children\n\t\t\tvar states = array.map(this._descendants, function(w){\n\t\t\t\treturn w.get(\"state\") || \"\";\n\t\t\t});\n\n\t\t\treturn array.indexOf(states, \"Error\") >= 0 ? \"Error\" :\n\t\t\t\tarray.indexOf(states, \"Incomplete\") >= 0 ? \"Incomplete\" : \"\";\n\t\t},\n\n\t\tdisconnectChildren: function(){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated method. Applications no longer need to call this. Remove for 2.0.\n\t\t},\n\n\t\tconnectChildren: function(/*Boolean*/ inStartup){\n\t\t\t// summary:\n\t\t\t//\t\tYou can call this function directly, ex. in the event that you\n\t\t\t//\t\tprogrammatically add a widget to the form *after* the form has been\n\t\t\t//\t\tinitialized.\n\n\t\t\t// TODO: rename for 2.0\n\n\t\t\tthis._descendants = this._getDescendantFormWidgets();\n\n\t\t\t// To get notifications from children they need to be started. Children didn't used to need to be started,\n\t\t\t// so for back-compat, start them here\n\t\t\tarray.forEach(this._descendants, function(child){\n\t\t\t\tif(!child._started){ child.startup(); }\n\t\t\t});\n\n\t\t\tif(!inStartup){\n\t\t\t\tthis._onChildChange();\n\t\t\t}\n\t\t},\n\n\t\t_onChildChange: function(/*String*/ attr){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when child's value or disabled state changes\n\n\t\t\t// The unit tests expect state update to be synchronous, so update it immediately.\n\t\t\tif(!attr || attr == \"state\" || attr == \"disabled\"){\n\t\t\t\tthis._set(\"state\", this._getState());\n\t\t\t}\n\n\t\t\t// Use defer() to collapse value changes in multiple children into a single\n\t\t\t// update to my value. Multiple updates will occur on:\n\t\t\t//\t1. Form.set()\n\t\t\t//\t2. Form.reset()\n\t\t\t//\t3. user selecting a radio button (which will de-select another radio button,\n\t\t\t//\t\t causing two onChange events)\n\t\t\tif(!attr || attr == \"value\" || attr == \"disabled\" || attr == \"checked\"){\n\t\t\t\tif(this._onChangeDelayTimer){\n\t\t\t\t\tthis._onChangeDelayTimer.remove();\n\t\t\t\t}\n\t\t\t\tthis._onChangeDelayTimer = this.defer(function(){\n\t\t\t\t\tdelete this._onChangeDelayTimer;\n\t\t\t\t\tthis._set(\"value\", this.get(\"value\"));\n\t\t\t\t}, 10);\n\t\t\t}\n\t\t},\n\n\t\tstartup: function(){\n\t\t\tthis.inherited(arguments);\n\n\t\t\t// Set initial this.value and this.state. Don't emit watch() notifications.\n\t\t\tthis._descendants = this._getDescendantFormWidgets();\n\t\t\tthis.value = this.get(\"value\");\n\t\t\tthis.state = this._getState();\n\n\t\t\t// Initialize value and valid/invalid state tracking.\n\t\t\tvar self = this;\n\t\t\tthis.own(\n\t\t\t\ton(\n\t\t\t\t\tthis.containerNode,\n\t\t\t\t\t\"attrmodified-state, attrmodified-disabled, attrmodified-value, attrmodified-checked\",\n\t\t\t\t\tfunction(evt){\n\t\t\t\t\t\tif(evt.target == self.domNode){\n\t\t\t\t\t\t\treturn;\t// ignore events that I fire on myself because my children changed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself._onChildChange(evt.type.replace(\"attrmodified-\", \"\"));\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Make state change call onValidStateChange(), will be removed in 2.0\n\t\t\tthis.watch(\"state\", function(attr, oldVal, newVal){ this.onValidStateChange(newVal == \"\"); });\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tthis.inherited(arguments);\n\t\t}\n\n\t});\n});\n","define([\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/dom-attr\", // domAttr.set\n\t\"dojo/keys\", // keys.ESCAPE\n\t\"dojo/_base/lang\",\n\t\"dojo/on\",\n\t\"dojo/sniff\", // has(\"webkit\")\n\t\"./_FormWidgetMixin\"\n], function(declare, domAttr, keys, lang, on, has, _FormWidgetMixin){\n\n\t// module:\n\t//\t\tdijit/form/_FormValueMixin\n\n\treturn declare(\"dijit.form._FormValueMixin\", _FormWidgetMixin, {\n\t\t// summary:\n\t\t//\t\tMixin for widgets corresponding to native HTML elements such as `<input>` or `<select>`\n\t\t//\t\tthat have user changeable values.\n\t\t// description:\n\t\t//\t\tEach _FormValueMixin represents a single input value, and has a (possibly hidden) `<input>` element,\n\t\t//\t\tto which it serializes it's input value, so that form submission (either normal submission or via FormBind?)\n\t\t//\t\tworks as expected.\n\n\t\t// readOnly: Boolean\n\t\t//\t\tShould this widget respond to user input?\n\t\t//\t\tIn markup, this is specified as \"readOnly\".\n\t\t//\t\tSimilar to disabled except readOnly form values are submitted.\n\t\treadOnly: false,\n\n\t\t_setReadOnlyAttr: function(/*Boolean*/ value){\n\t\t\t// IE has a Caret Browsing mode (hit F7 to activate) where disabled textboxes can be modified\n\t\t\t// focusNode enforced readonly if currently disabled to avoid this issue.\n\t\t\tif (has('trident') && 'disabled' in this) {\n\t\t\t\tdomAttr.set(this.focusNode, 'readOnly', value || this.disabled);\n\t\t\t} else {\n\t\t\t\tdomAttr.set(this.focusNode, 'readOnly', value);\n\t\t\t}\n\t\t\tthis._set(\"readOnly\", value);\n\t\t},\n\n\t\tpostCreate: function(){\n\t\t\tthis.inherited(arguments);\n\n\t\t\t// Update our reset value if it hasn't yet been set (because this.set()\n\t\t\t// is only called when there *is* a value)\n\t\t\tif(this._resetValue === undefined){\n\t\t\t\tthis._lastValueReported = this._resetValue = this.value;\n\t\t\t}\n\t\t},\n\n\t\t_setValueAttr: function(/*anything*/ newValue, /*Boolean?*/ priorityChange){\n\t\t\t// summary:\n\t\t\t//\t\tHook so set('value', value) works.\n\t\t\t// description:\n\t\t\t//\t\tSets the value of the widget.\n\t\t\t//\t\tIf the value has changed, then fire onChange event, unless priorityChange\n\t\t\t//\t\tis specified as null (or false?)\n\t\t\tthis._handleOnChange(newValue, priorityChange);\n\t\t},\n\n\t\t_handleOnChange: function(/*anything*/ newValue, /*Boolean?*/ priorityChange){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when the value of the widget has changed. Saves the new value in this.value,\n\t\t\t//\t\tand calls onChange() if appropriate. See _FormWidget._handleOnChange() for details.\n\t\t\tthis._set(\"value\", newValue);\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\tundo: function(){\n\t\t\t// summary:\n\t\t\t//\t\tRestore the value to the last value passed to onChange\n\t\t\tthis._setValueAttr(this._lastValueReported, false);\n\t\t},\n\n\t\treset: function(){\n\t\t\t// summary:\n\t\t\t//\t\tReset the widget's value to what it was at initialization time\n\t\t\tthis._hasBeenBlurred = false;\n\t\t\tthis._setValueAttr(this._resetValue, true);\n\t\t}\n\t});\n});\n","define([\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/sniff\", // has(\"ie\")\n\t\"./_FormWidget\",\n\t\"./_FormValueMixin\"\n], function(declare, has, _FormWidget, _FormValueMixin){\n\n\t// module:\n\t//\t\tdijit/form/_FormValueWidget\n\n\treturn declare(\"dijit.form._FormValueWidget\", [_FormWidget, _FormValueMixin], {\n\t\t// summary:\n\t\t//\t\tBase class for widgets corresponding to native HTML elements such as `<input>` or `<select>`\n\t\t//\t\tthat have user changeable values.\n\t\t// description:\n\t\t//\t\tEach _FormValueWidget represents a single input value, and has a (possibly hidden) `<input>` element,\n\t\t//\t\tto which it serializes it's input value, so that form submission (either normal submission or via FormBind?)\n\t\t//\t\tworks as expected.\n\n\t\t// Don't attempt to mixin the 'type', 'name' attributes here programatically -- they must be declared\n\t\t// directly in the template as read by the parser in order to function. IE is known to specifically\n\t\t// require the 'name' attribute at element creation time. See #8484, #8660.\n\n\t\t_layoutHackIE7: function(){\n\t\t\t// summary:\n\t\t\t//\t\tWork around table sizing bugs on IE7 by forcing redraw\n\n\t\t\tif(has(\"ie\") == 7){ // fix IE7 layout bug when the widget is scrolled out of sight\n\t\t\t\tvar domNode = this.domNode;\n\t\t\t\tvar parent = domNode.parentNode;\n\t\t\t\tvar pingNode = domNode.firstChild || domNode; // target node most unlikely to have a custom filter\n\t\t\t\tvar origFilter = pingNode.style.filter; // save custom filter, most likely nothing\n\t\t\t\tvar _this = this;\n\t\t\t\twhile(parent && parent.clientHeight == 0){ // search for parents that haven't rendered yet\n\t\t\t\t\t(function ping(){\n\t\t\t\t\t\tvar disconnectHandle = _this.connect(parent, \"onscroll\",\n\t\t\t\t\t\t\tfunction(){\n\t\t\t\t\t\t\t\t_this.disconnect(disconnectHandle); // only call once\n\t\t\t\t\t\t\t\tpingNode.style.filter = (new Date()).getMilliseconds(); // set to anything that's unique\n\t\t\t\t\t\t\t\t_this.defer(function(){\n\t\t\t\t\t\t\t\t\tpingNode.style.filter = origFilter;\n\t\t\t\t\t\t\t\t}); // restore custom filter, if any\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t})();\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n});\n","define([\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/sniff\", // has(\"dijit-legacy-requires\"), has(\"msapp\")\n\t\"dojo/_base/kernel\", // kernel.deprecated\n\t\"dojo/ready\",\n\t\"../_Widget\",\n\t\"../_CssStateMixin\",\n\t\"../_TemplatedMixin\",\n\t\"./_FormWidgetMixin\"\n], function(declare, has, kernel, ready, _Widget, _CssStateMixin, _TemplatedMixin, _FormWidgetMixin){\n\n\t// module:\n\t//\t\tdijit/form/_FormWidget\n\n\t// Back compat w/1.6, remove for 2.0\n\tif(has(\"dijit-legacy-requires\")){\n\t\tready(0, function(){\n\t\t\tvar requires = [\"dijit/form/_FormValueWidget\"];\n\t\t\trequire(requires);\t// use indirection so modules not rolled into a build\n\t\t});\n\t}\n\n\treturn declare(\"dijit.form._FormWidget\", [_Widget, _TemplatedMixin, _CssStateMixin, _FormWidgetMixin], {\n\t\t// summary:\n\t\t//\t\tBase class for widgets corresponding to native HTML elements such as `<checkbox>` or `<button>`,\n\t\t//\t\twhich can be children of a `<form>` node or a `dijit/form/Form` widget.\n\t\t//\n\t\t// description:\n\t\t//\t\tRepresents a single HTML element.\n\t\t//\t\tAll these widgets should have these attributes just like native HTML input elements.\n\t\t//\t\tYou can set them during widget construction or afterwards, via `dijit/_WidgetBase.set()`.\n\t\t//\n\t\t//\t\tThey also share some common methods.\n\n\t\tsetDisabled: function(/*Boolean*/ disabled){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated. Use set('disabled', ...) instead.\n\t\t\tkernel.deprecated(\"setDisabled(\" + disabled + \") is deprecated. Use set('disabled',\" + disabled + \") instead.\", \"\", \"2.0\");\n\t\t\tthis.set('disabled', disabled);\n\t\t},\n\n\t\tsetValue: function(/*String*/ value){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated. Use set('value', ...) instead.\n\t\t\tkernel.deprecated(\"dijit.form._FormWidget:setValue(\" + value + \") is deprecated. Use set('value',\" + value + \") instead.\", \"\", \"2.0\");\n\t\t\tthis.set('value', value);\n\t\t},\n\n\t\tgetValue: function(){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated. Use get('value') instead.\n\t\t\tkernel.deprecated(this.declaredClass + \"::getValue() is deprecated. Use get('value') instead.\", \"\", \"2.0\");\n\t\t\treturn this.get('value');\n\t\t},\n\n\t\tpostMixInProperties: function(){\n\t\t\t// Setup name=foo string to be referenced from the template (but only if a name has been specified).\n\t\t\t// Unfortunately we can't use _setNameAttr to set the name in IE due to IE limitations, see #8484, #8660.\n\t\t\t// But when IE6 and IE7 are desupported, then we probably don't need this anymore, so should remove it in 2.0.\n\t\t\t// Also, don't do this for Windows 8 Store Apps because it causes a security exception (see #16452).\n\t\t\t// Regarding escaping, see heading \"Attribute values\" in\n\t\t\t// http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.3.2\n\t\t\tthis.nameAttrSetting = (this.name && !has(\"msapp\")) ? ('name=\"' + this.name.replace(/\"/g, \""\") + '\"') : '';\n\t\t\tthis.inherited(arguments);\n\t\t}\n\t});\n});\n","define([\n\t\"dojo/_base/array\", // array.forEach\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/dom-attr\", // domAttr.set\n\t\"dojo/dom-style\", // domStyle.get\n\t\"dojo/_base/lang\", // lang.hitch lang.isArray\n\t\"dojo/mouse\", // mouse.isLeft\n\t\"dojo/on\",\n\t\"dojo/sniff\", // has(\"webkit\")\n\t\"dojo/window\", // winUtils.scrollIntoView\n\t\"../a11y\" // a11y.hasDefaultTabStop\n], function(array, declare, domAttr, domStyle, lang, mouse, on, has, winUtils, a11y){\n\n\t// module:\n\t//\t\tdijit/form/_FormWidgetMixin\n\n\treturn declare(\"dijit.form._FormWidgetMixin\", null, {\n\t\t// summary:\n\t\t//\t\tMixin for widgets corresponding to native HTML elements such as `<checkbox>` or `<button>`,\n\t\t//\t\twhich can be children of a `<form>` node or a `dijit/form/Form` widget.\n\t\t//\n\t\t// description:\n\t\t//\t\tRepresents a single HTML element.\n\t\t//\t\tAll these widgets should have these attributes just like native HTML input elements.\n\t\t//\t\tYou can set them during widget construction or afterwards, via `dijit/_WidgetBase.set()`.\n\t\t//\n\t\t//\t\tThey also share some common methods.\n\n\t\t// name: [const] String\n\t\t//\t\tName used when submitting form; same as \"name\" attribute or plain HTML elements\n\t\tname: \"\",\n\n\t\t// alt: String\n\t\t//\t\tCorresponds to the native HTML `<input>` element's attribute.\n\t\talt: \"\",\n\n\t\t// value: String\n\t\t//\t\tCorresponds to the native HTML `<input>` element's attribute.\n\t\tvalue: \"\",\n\n\t\t// type: [const] String\n\t\t//\t\tCorresponds to the native HTML `<input>` element's attribute.\n\t\ttype: \"text\",\n\n\t\t// type: String\n\t\t//\t\tApply aria-label in markup to the widget's focusNode\n\t\t\"aria-label\": \"focusNode\",\n\n\t\t// tabIndex: String\n\t\t//\t\tOrder fields are traversed when user hits the tab key\n\t\ttabIndex: \"0\",\n\t\t_setTabIndexAttr: \"focusNode\", // force copy even when tabIndex default value, needed since Button is <span>\n\n\t\t// disabled: Boolean\n\t\t//\t\tShould this widget respond to user input?\n\t\t//\t\tIn markup, this is specified as \"disabled='disabled'\", or just \"disabled\".\n\t\tdisabled: false,\n\n\t\t// intermediateChanges: Boolean\n\t\t//\t\tFires onChange for each value change or only on demand\n\t\tintermediateChanges: false,\n\n\t\t// scrollOnFocus: Boolean\n\t\t//\t\tOn focus, should this widget scroll into view?\n\t\tscrollOnFocus: true,\n\n\t\t// Override _WidgetBase mapping id to this.domNode, needs to be on focusNode so <label> etc.\n\t\t// works with screen reader\n\t\t_setIdAttr: \"focusNode\",\n\n\t\t_setDisabledAttr: function(/*Boolean*/ value){\n\t\t\tthis._set(\"disabled\", value);\n\n\t\t\t// Set disabled property if focusNode is an <input>, but aria-disabled attribute if focusNode is a <span>.\n\t\t\t// Can't use \"disabled\" in this.focusNode as a test because on IE, that's true for all nodes.\n\t\t\tif(/^(button|input|select|textarea|optgroup|option|fieldset)$/i.test(this.focusNode.tagName)){\n\t\t\t\tdomAttr.set(this.focusNode, 'disabled', value);\n\t\t\t\t// IE has a Caret Browsing mode (hit F7 to activate) where disabled textboxes can be modified\n\t\t\t\t// textboxes marked readonly if disabled to avoid this issue.\n\t\t\t\tif (has('trident') && 'readOnly' in this) {\n\t\t\t\t\tdomAttr.set(this.focusNode, 'readonly', value || this.readOnly);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.focusNode.setAttribute(\"aria-disabled\", value ? \"true\" : \"false\");\n\t\t\t}\n\n\t\t\t// And also set disabled on the hidden <input> node\n\t\t\tif(this.valueNode){\n\t\t\t\tdomAttr.set(this.valueNode, 'disabled', value);\n\t\t\t}\n\n\t\t\tif(value){\n\t\t\t\t// reset these, because after the domNode is disabled, we can no longer receive\n\t\t\t\t// mouse related events, see #4200\n\t\t\t\tthis._set(\"hovering\", false);\n\t\t\t\tthis._set(\"active\", false);\n\n\t\t\t\t// clear tab stop(s) on this widget's focusable node(s) (ComboBox has two focusable nodes)\n\t\t\t\tvar attachPointNames = \"tabIndex\" in this.attributeMap ? this.attributeMap.tabIndex :\n\t\t\t\t\t(\"_setTabIndexAttr\" in this) ? this._setTabIndexAttr : \"focusNode\";\n\t\t\t\tarray.forEach(lang.isArray(attachPointNames) ? attachPointNames : [attachPointNames], function(attachPointName){\n\t\t\t\t\tvar node = this[attachPointName];\n\t\t\t\t\t// complex code because tabIndex=-1 on a <div> doesn't work on FF\n\t\t\t\t\tif(has(\"webkit\") || a11y.hasDefaultTabStop(node)){ // see #11064 about webkit bug\n\t\t\t\t\t\tnode.setAttribute('tabIndex', \"-1\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tnode.removeAttribute('tabIndex');\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}else{\n\t\t\t\tif(this.tabIndex != \"\"){\n\t\t\t\t\tthis.set('tabIndex', this.tabIndex);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_onFocus: function(/*String*/ by){\n\t\t\t// If user clicks on the widget, even if the mouse is released outside of it,\n\t\t\t// this widget's focusNode should get focus (to mimic native browser behavior).\n\t\t\t// Browsers often need help to make sure the focus via mouse actually gets to the focusNode.\n\t\t\t// TODO: consider removing all of this for 2.0 or sooner, see #16622 etc.\n\t\t\tif(by == \"mouse\" && this.isFocusable()){\n\t\t\t\t// IE exhibits strange scrolling behavior when refocusing a node so only do it when !focused.\n\t\t\t\tvar focusHandle = this.own(on(this.focusNode, \"focus\", function(){\n\t\t\t\t\tmouseUpHandle.remove();\n\t\t\t\t\tfocusHandle.remove();\n\t\t\t\t}))[0];\n\t\t\t\t// Set a global event to handle mouseup, so it fires properly\n\t\t\t\t// even if the cursor leaves this.domNode before the mouse up event.\n\t\t\t\tvar event = has(\"pointer-events\") ? \"pointerup\" : has(\"MSPointer\") ? \"MSPointerUp\" :\n\t\t\t\t\thas(\"touch-events\") ? \"touchend, mouseup\" :\t\t// seems like overkill but see #16622, #16725\n\t\t\t\t\t\"mouseup\";\n\t\t\t\tvar mouseUpHandle = this.own(on(this.ownerDocumentBody, event, lang.hitch(this, function(evt){\n\t\t\t\t\tmouseUpHandle.remove();\n\t\t\t\t\tfocusHandle.remove();\n\t\t\t\t\t// if here, then the mousedown did not focus the focusNode as the default action\n\t\t\t\t\tif(this.focused){\n\t\t\t\t\t\tif(evt.type == \"touchend\"){\n\t\t\t\t\t\t\tthis.defer(\"focus\"); // native focus hasn't occurred yet\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.focus(); // native focus already occurred on mousedown\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})))[0];\n\t\t\t}\n\t\t\tif(this.scrollOnFocus){\n\t\t\t\tthis.defer(function(){\n\t\t\t\t\twinUtils.scrollIntoView(this.domNode);\n\t\t\t\t}); // without defer, the input caret position can change on mouse click\n\t\t\t}\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\tisFocusable: function(){\n\t\t\t// summary:\n\t\t\t//\t\tTells if this widget is focusable or not. Used internally by dijit.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\treturn !this.disabled && this.focusNode && (domStyle.get(this.domNode, \"display\") != \"none\");\n\t\t},\n\n\t\tfocus: function(){\n\t\t\t// summary:\n\t\t\t//\t\tPut focus on this widget\n\t\t\tif(!this.disabled && this.focusNode.focus){\n\t\t\t\ttry{\n\t\t\t\t\tthis.focusNode.focus();\n\t\t\t\t}catch(e){\n\t\t\t\t}\n\t\t\t\t/*squelch errors from hidden nodes*/\n\t\t\t}\n\t\t},\n\n\t\tcompare: function(/*anything*/ val1, /*anything*/ val2){\n\t\t\t// summary:\n\t\t\t//\t\tCompare 2 values (as returned by get('value') for this widget).\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t\tif(typeof val1 == \"number\" && typeof val2 == \"number\"){\n\t\t\t\treturn (isNaN(val1) && isNaN(val2)) ? 0 : val1 - val2;\n\t\t\t}else if(val1 > val2){\n\t\t\t\treturn 1;\n\t\t\t}else if(val1 < val2){\n\t\t\t\treturn -1;\n\t\t\t}else{\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\n\t\tonChange: function(/*===== newValue =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tCallback when this widget's value is changed.\n\t\t\t// tags:\n\t\t\t//\t\tcallback\n\t\t},\n\n\t\t// _onChangeActive: [private] Boolean\n\t\t//\t\tIndicates that changes to the value should call onChange() callback.\n\t\t//\t\tThis is false during widget initialization, to avoid calling onChange()\n\t\t//\t\twhen the initial value is set.\n\t\t_onChangeActive: false,\n\n\t\t_handleOnChange: function(/*anything*/ newValue, /*Boolean?*/ priorityChange){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when the value of the widget is set. Calls onChange() if appropriate\n\t\t\t// newValue:\n\t\t\t//\t\tthe new value\n\t\t\t// priorityChange:\n\t\t\t//\t\tFor a slider, for example, dragging the slider is priorityChange==false,\n\t\t\t//\t\tbut on mouse up, it's priorityChange==true. If intermediateChanges==false,\n\t\t\t//\t\tonChange is only called form priorityChange=true events.\n\t\t\t// tags:\n\t\t\t//\t\tprivate\n\t\t\tif(this._lastValueReported == undefined && (priorityChange === null || !this._onChangeActive)){\n\t\t\t\t// this block executes not for a change, but during initialization,\n\t\t\t\t// and is used to store away the original value (or for ToggleButton, the original checked state)\n\t\t\t\tthis._resetValue = this._lastValueReported = newValue;\n\t\t\t}\n\t\t\tthis._pendingOnChange = this._pendingOnChange\n\t\t\t\t|| (typeof newValue != typeof this._lastValueReported)\n\t\t\t\t|| (this.compare(newValue, this._lastValueReported) != 0);\n\t\t\tif((this.intermediateChanges || priorityChange || priorityChange === undefined) && this._pendingOnChange){\n\t\t\t\tthis._lastValueReported = newValue;\n\t\t\t\tthis._pendingOnChange = false;\n\t\t\t\tif(this._onChangeActive){\n\t\t\t\t\tif(this._onChangeHandle){\n\t\t\t\t\t\tthis._onChangeHandle.remove();\n\t\t\t\t\t}\n\t\t\t\t\t// defer allows hidden value processing to run and\n\t\t\t\t\t// also the onChange handler can safely adjust focus, etc\n\t\t\t\t\tthis._onChangeHandle = this.defer(\n\t\t\t\t\t\tfunction(){\n\t\t\t\t\t\t\tthis._onChangeHandle = null;\n\t\t\t\t\t\t\tthis.onChange(newValue);\n\t\t\t\t\t\t}); // try to collapse multiple onChange's fired faster than can be processed\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcreate: function(){\n\t\t\t// Overrides _Widget.create()\n\t\t\tthis.inherited(arguments);\n\t\t\tthis._onChangeActive = true;\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tif(this._onChangeHandle){ // destroy called before last onChange has fired\n\t\t\t\tthis._onChangeHandle.remove();\n\t\t\t\tthis.onChange(this._lastValueReported);\n\t\t\t}\n\t\t\tthis.inherited(arguments);\n\t\t}\n\t});\n});\n","define([\n\t\"dojo/_base/array\", // array.forEach\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/dom\", // dom.byId\n\t\"dojo/sniff\",\t// has(\"ie\"), has(\"dojo-bidi\")\n\t\"dojo/keys\", // keys.ALT keys.CAPS_LOCK keys.CTRL keys.META keys.SHIFT\n\t\"dojo/_base/lang\", // lang.mixin\n\t\"dojo/on\", // on\n\t\"../main\" // for exporting dijit._setSelectionRange, dijit.selectInputText\n], function(array, declare, dom, has, keys, lang, on, dijit){\n\n\t// module:\n\t//\t\tdijit/form/_TextBoxMixin\n\n\tvar _TextBoxMixin = declare(\"dijit.form._TextBoxMixin\" + (has(\"dojo-bidi\") ? \"_NoBidi\" : \"\"), null, {\n\t\t// summary:\n\t\t//\t\tA mixin for textbox form input widgets\n\n\t\t// trim: Boolean\n\t\t//\t\tRemoves leading and trailing whitespace if true. Default is false.\n\t\ttrim: false,\n\n\t\t// uppercase: Boolean\n\t\t//\t\tConverts all characters to uppercase if true. Default is false.\n\t\tuppercase: false,\n\n\t\t// lowercase: Boolean\n\t\t//\t\tConverts all characters to lowercase if true. Default is false.\n\t\tlowercase: false,\n\n\t\t// propercase: Boolean\n\t\t//\t\tConverts the first character of each word to uppercase if true.\n\t\tpropercase: false,\n\n\t\t// maxLength: String\n\t\t//\t\tHTML INPUT tag maxLength declaration.\n\t\tmaxLength: \"\",\n\n\t\t// selectOnClick: [const] Boolean\n\t\t//\t\tIf true, all text will be selected when focused with mouse\n\t\tselectOnClick: false,\n\n\t\t// placeHolder: String\n\t\t//\t\tDefines a hint to help users fill out the input field (as defined in HTML 5).\n\t\t//\t\tThis should only contain plain text (no html markup).\n\t\tplaceHolder: \"\",\n\n\t\t_getValueAttr: function(){\n\t\t\t// summary:\n\t\t\t//\t\tHook so get('value') works as we like.\n\t\t\t// description:\n\t\t\t//\t\tFor `dijit/form/TextBox` this basically returns the value of the `<input>`.\n\t\t\t//\n\t\t\t//\t\tFor `dijit/form/MappedTextBox` subclasses, which have both\n\t\t\t//\t\ta \"displayed value\" and a separate \"submit value\",\n\t\t\t//\t\tThis treats the \"displayed value\" as the master value, computing the\n\t\t\t//\t\tsubmit value from it via this.parse().\n\t\t\treturn this.parse(this.get('displayedValue'), this.constraints);\n\t\t},\n\n\t\t_setValueAttr: function(value, /*Boolean?*/ priorityChange, /*String?*/ formattedValue){\n\t\t\t// summary:\n\t\t\t//\t\tHook so set('value', ...) works.\n\t\t\t//\n\t\t\t// description:\n\t\t\t//\t\tSets the value of the widget to \"value\" which can be of\n\t\t\t//\t\tany type as determined by the widget.\n\t\t\t//\n\t\t\t// value:\n\t\t\t//\t\tThe visual element value is also set to a corresponding,\n\t\t\t//\t\tbut not necessarily the same, value.\n\t\t\t//\n\t\t\t// formattedValue:\n\t\t\t//\t\tIf specified, used to set the visual element value,\n\t\t\t//\t\totherwise a computed visual value is used.\n\t\t\t//\n\t\t\t// priorityChange:\n\t\t\t//\t\tIf true, an onChange event is fired immediately instead of\n\t\t\t//\t\twaiting for the next blur event.\n\n\t\t\tvar filteredValue;\n\t\t\tif(value !== undefined){\n\t\t\t\t// TODO: this is calling filter() on both the display value and the actual value.\n\t\t\t\t// I added a comment to the filter() definition about this, but it should be changed.\n\t\t\t\tfilteredValue = this.filter(value);\n\t\t\t\tif(typeof formattedValue != \"string\"){\n\t\t\t\t\tif(filteredValue !== null && ((typeof filteredValue != \"number\") || !isNaN(filteredValue))){\n\t\t\t\t\t\tformattedValue = this.filter(this.format(filteredValue, this.constraints));\n\t\t\t\t\t}else{\n\t\t\t\t\t\tformattedValue = '';\n\t\t\t\t\t}\n\t\t\t\t\t// Ensure the filtered value does not change after being formatted. See track #17955.\n\t\t\t\t\t//\n\t\t\t\t\t// This check is only applied when the formatted value is not specified by the caller in order to allow the \n\t\t\t\t\t// behavior to be overriden. This is needed whenever value synonyms cannot be determined using parse/compare. For\n\t\t\t\t\t// example, dijit/form/FilteringSelect determines the formatted value asynchronously and applies it using a \n\t\t\t\t\t// callback to this method.\n\t\t\t\t\t//\n\t\t\t\t\t// TODO: Should developers be warned that they broke the round trip on format?\n\t\t\t\t\tif (this.compare(filteredValue, this.filter(this.parse(formattedValue, this.constraints))) != 0){\n\t\t\t\t\t\tformattedValue = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(formattedValue != null /* and !undefined */ && ((typeof formattedValue) != \"number\" || !isNaN(formattedValue)) && this.textbox.value != formattedValue){\n\t\t\t\tthis.textbox.value = formattedValue;\n\t\t\t\tthis._set(\"displayedValue\", this.get(\"displayedValue\"));\n\t\t\t}\n\n\t\t\tthis.inherited(arguments, [filteredValue, priorityChange]);\n\t\t},\n\n\t\t// displayedValue: String\n\t\t//\t\tFor subclasses like ComboBox where the displayed value\n\t\t//\t\t(ex: Kentucky) and the serialized value (ex: KY) are different,\n\t\t//\t\tthis represents the displayed value.\n\t\t//\n\t\t//\t\tSetting 'displayedValue' through set('displayedValue', ...)\n\t\t//\t\tupdates 'value', and vice-versa. Otherwise 'value' is updated\n\t\t//\t\tfrom 'displayedValue' periodically, like onBlur etc.\n\t\t//\n\t\t//\t\tTODO: move declaration to MappedTextBox?\n\t\t//\t\tProblem is that ComboBox references displayedValue,\n\t\t//\t\tfor benefit of FilteringSelect.\n\t\tdisplayedValue: \"\",\n\n\t\t_getDisplayedValueAttr: function(){\n\t\t\t// summary:\n\t\t\t//\t\tHook so get('displayedValue') works.\n\t\t\t// description:\n\t\t\t//\t\tReturns the displayed value (what the user sees on the screen),\n\t\t\t//\t\tafter filtering (ie, trimming spaces etc.).\n\t\t\t//\n\t\t\t//\t\tFor some subclasses of TextBox (like ComboBox), the displayed value\n\t\t\t//\t\tis different from the serialized value that's actually\n\t\t\t//\t\tsent to the server (see `dijit/form/ValidationTextBox.serialize()`)\n\n\t\t\t// TODO: maybe we should update this.displayedValue on every keystroke so that we don't need\n\t\t\t// this method\n\t\t\t// TODO: this isn't really the displayed value when the user is typing\n\t\t\treturn this.filter(this.textbox.value);\n\t\t},\n\n\t\t_setDisplayedValueAttr: function(/*String*/ value){\n\t\t\t// summary:\n\t\t\t//\t\tHook so set('displayedValue', ...) works.\n\t\t\t// description:\n\t\t\t//\t\tSets the value of the visual element to the string \"value\".\n\t\t\t//\t\tThe widget value is also set to a corresponding,\n\t\t\t//\t\tbut not necessarily the same, value.\n\n\t\t\tif(value == null /* or undefined */){\n\t\t\t\tvalue = ''\n\t\t\t}\n\t\t\telse if(typeof value != \"string\"){\n\t\t\t\tvalue = String(value)\n\t\t\t}\n\n\t\t\tthis.textbox.value = value;\n\n\t\t\t// sets the serialized value to something corresponding to specified displayedValue\n\t\t\t// (if possible), and also updates the textbox.value, for example converting \"123\"\n\t\t\t// to \"123.00\"\n\t\t\tthis._setValueAttr(this.get('value'), undefined);\n\n\t\t\tthis._set(\"displayedValue\", this.get('displayedValue'));\n\t\t},\n\n\t\tformat: function(value /*=====, constraints =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tReplaceable function to convert a value to a properly formatted string.\n\t\t\t// value: String\n\t\t\t// constraints: Object\n\t\t\t// tags:\n\t\t\t//\t\tprotected extension\n\t\t\treturn value == null /* or undefined */ ? \"\" : (value.toString ? value.toString() : value);\n\t\t},\n\n\t\tparse: function(value /*=====, constraints =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tReplaceable function to convert a formatted string to a value\n\t\t\t// value: String\n\t\t\t// constraints: Object\n\t\t\t// tags:\n\t\t\t//\t\tprotected extension\n\n\t\t\treturn value;\t// String\n\t\t},\n\n\t\t_refreshState: function(){\n\t\t\t// summary:\n\t\t\t//\t\tAfter the user types some characters, etc., this method is\n\t\t\t//\t\tcalled to check the field for validity etc. The base method\n\t\t\t//\t\tin `dijit/form/TextBox` does nothing, but subclasses override.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\t\t},\n\n\t\t onInput: function(/*Event*/ /*===== evt =====*/){\n\t\t\t // summary:\n\t\t\t //\t\tConnect to this function to receive notifications of various user data-input events.\n\t\t\t //\t\tReturn false to cancel the event and prevent it from being processed.\n\t\t\t //\t\tNote that although for historical reasons this method is called `onInput()`, it doesn't\n\t\t\t //\t\tcorrespond to the standard DOM \"input\" event, because it occurs before the input has been processed.\n\t\t\t // event:\n\t\t\t //\t\tkeydown | keypress | cut | paste | compositionend\n\t\t\t // tags:\n\t\t\t //\t\tcallback\n\t\t },\n\n\t\t_onInput: function(/*Event*/ evt){\n\t\t\t// summary:\n\t\t\t//\t\tCalled AFTER the input event has happened and this.textbox.value has new value.\n\n\t\t\tthis._lastInputEventValue = this.textbox.value;\n\n\t\t\t// For Combobox, this needs to be called w/the keydown/keypress event that was passed to onInput().\n\t\t\t// As a backup, use the \"input\" event itself.\n\t\t\tthis._processInput(this._lastInputProducingEvent || evt);\n\t\t\tdelete this._lastInputProducingEvent;\n\n\t\t\tif(this.intermediateChanges){\n\t\t\t\tthis._handleOnChange(this.get('value'), false);\n\t\t\t}\n\t\t},\n\n\t\t_processInput: function(/*Event*/ /*===== evt =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tDefault action handler for user input events.\n\t\t\t//\t\tCalled after the \"input\" event (i.e. after this.textbox.value has been updated),\n\t\t\t//\t\tbut `evt` is the keydown/keypress/etc. event that triggered the \"input\" event.\n\t\t\t// tags:\n\t\t\t//\t\tprotected\n\n\t\t\tthis._refreshState();\n\n\t\t\t// In case someone is watch()'ing for changes to displayedValue\n\t\t\tthis._set(\"displayedValue\", this.get(\"displayedValue\"));\n\t\t},\n\n\t\tpostCreate: function(){\n\t\t\t// setting the value here is needed since value=\"\" in the template causes \"undefined\"\n\t\t\t// and setting in the DOM (instead of the JS object) helps with form reset actions\n\t\t\tthis.textbox.setAttribute(\"value\", this.textbox.value); // DOM and JS values should be the same\n\n\t\t\tthis.inherited(arguments);\n\n\t\t\t// normalize input events to reduce spurious event processing\n\t\t\t//\tkeydown: do not forward modifier keys\n\t\t\t//\t\t set charOrCode to numeric keycode\n\t\t\t//\tkeypress: do not forward numeric charOrCode keys (already sent through onkeydown)\n\t\t\t//\tpaste, cut, compositionend: set charOrCode to 229 (IME)\n\t\t\tfunction handleEvent(e){\n\t\t\t\tvar charOrCode;\n\n\t\t\t\t// Filter out keydown events that will be followed by keypress events. Note that chrome/android\n\t\t\t\t// w/word suggestion has keydown/229 events on typing with no corresponding keypress events.\n\t\t\t\tif(e.type == \"keydown\" && e.keyCode != 229){\n\t\t\t\t\tcharOrCode = e.keyCode;\n\t\t\t\t\tswitch(charOrCode){ // ignore state keys\n\t\t\t\t\t\tcase keys.SHIFT:\n\t\t\t\t\t\tcase keys.ALT:\n\t\t\t\t\t\tcase keys.CTRL:\n\t\t\t\t\t\tcase keys.META:\n\t\t\t\t\t\tcase keys.CAPS_LOCK:\n\t\t\t\t\t\tcase keys.NUM_LOCK:\n\t\t\t\t\t\tcase keys.SCROLL_LOCK:\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif(!e.ctrlKey && !e.metaKey && !e.altKey){ // no modifiers\n\t\t\t\t\t\tswitch(charOrCode){ // ignore location keys\n\t\t\t\t\t\t\tcase keys.NUMPAD_0:\n\t\t\t\t\t\t\tcase keys.NUMPAD_1:\n\t\t\t\t\t\t\tcase keys.NUMPAD_2:\n\t\t\t\t\t\t\tcase keys.NUMPAD_3:\n\t\t\t\t\t\t\tcase keys.NUMPAD_4:\n\t\t\t\t\t\t\tcase keys.NUMPAD_5:\n\t\t\t\t\t\t\tcase keys.NUMPAD_6:\n\t\t\t\t\t\t\tcase keys.NUMPAD_7:\n\t\t\t\t\t\t\tcase keys.NUMPAD_8:\n\t\t\t\t\t\t\tcase keys.NUMPAD_9:\n\t\t\t\t\t\t\tcase keys.NUMPAD_MULTIPLY:\n\t\t\t\t\t\t\tcase keys.NUMPAD_PLUS:\n\t\t\t\t\t\t\tcase keys.NUMPAD_ENTER:\n\t\t\t\t\t\t\tcase keys.NUMPAD_MINUS:\n\t\t\t\t\t\t\tcase keys.NUMPAD_PERIOD:\n\t\t\t\t\t\t\tcase keys.NUMPAD_DIVIDE:\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif((charOrCode >= 65 && charOrCode <= 90) || (charOrCode >= 48 && charOrCode <= 57) || charOrCode == keys.SPACE){\n\t\t\t\t\t\t\treturn; // keypress will handle simple non-modified printable keys\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar named = false;\n\t\t\t\t\t\tfor(var i in keys){\n\t\t\t\t\t\t\tif(keys[i] === e.keyCode){\n\t\t\t\t\t\t\t\tnamed = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(!named){\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} // only allow named ones through\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcharOrCode = e.charCode >= 32 ? String.fromCharCode(e.charCode) : e.charCode;\n\t\t\t\tif(!charOrCode){\n\t\t\t\t\tcharOrCode = (e.keyCode >= 65 && e.keyCode <= 90) || (e.keyCode >= 48 && e.keyCode <= 57) || e.keyCode == keys.SPACE ? String.fromCharCode(e.keyCode) : e.keyCode;\n\t\t\t\t}\n\t\t\t\tif(!charOrCode){\n\t\t\t\t\tcharOrCode = 229; // IME\n\t\t\t\t}\n\t\t\t\tif(e.type == \"keypress\"){\n\t\t\t\t\tif(typeof charOrCode != \"string\"){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif((charOrCode >= 'a' && charOrCode <= 'z') || (charOrCode >= 'A' && charOrCode <= 'Z') || (charOrCode >= '0' && charOrCode <= '9') || (charOrCode === ' ')){\n\t\t\t\t\t\tif(e.ctrlKey || e.metaKey || e.altKey){\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} // can only be stopped reliably in keydown\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// create fake event to set charOrCode and to know if preventDefault() was called\n\t\t\t\tvar faux = { faux: true }, attr;\n\t\t\t\tfor(attr in e){\n\t\t\t\t\tif(!/^(layer[XY]|returnValue|keyLocation)$/.test(attr)){ // prevent WebKit warnings\n\t\t\t\t\t\tvar v = e[attr];\n\t\t\t\t\t\tif(typeof v != \"function\" && typeof v != \"undefined\"){\n\t\t\t\t\t\t\tfaux[attr] = v;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlang.mixin(faux, {\n\t\t\t\t\tcharOrCode: charOrCode,\n\t\t\t\t\t_wasConsumed: false,\n\t\t\t\t\tpreventDefault: function(){\n\t\t\t\t\t\tfaux._wasConsumed = true;\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t},\n\t\t\t\t\tstopPropagation: function(){\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._lastInputProducingEvent = faux;\n\n\t\t\t\t// Give web page author a chance to consume the event. Note that onInput() may be called multiple times\n\t\t\t\t// for same keystroke: once for keypress event and once for input event.\n\t\t\t\t//console.log(faux.type + ', charOrCode = (' + (typeof charOrCode) + ') ' + charOrCode + ', ctrl ' + !!faux.ctrlKey + ', alt ' + !!faux.altKey + ', meta ' + !!faux.metaKey + ', shift ' + !!faux.shiftKey);\n\t\t\t\tif(this.onInput(faux) === false){ // return false means stop\n\t\t\t\t\tfaux.preventDefault();\n\t\t\t\t\tfaux.stopPropagation();\n\t\t\t\t}\n\t\t\t\tif(faux._wasConsumed){\n\t\t\t\t\treturn;\n\t\t\t\t} // if preventDefault was called\n\n\t\t\t\t// IE8 doesn't emit the \"input\" event at all, and IE9 doesn't emit it for backspace, delete, cut, etc.\n\t\t\t\t// Since the code below (and perhaps user code) depends on that event, emit it synthetically.\n\t\t\t\t// See http://benalpert.com/2013/06/18/a-near-perfect-oninput-shim-for-ie-8-and-9.html.\n\t\t\t\tif(has(\"ie\") <= 9){\n\t\t\t\t\tswitch(e.keyCode){\n\t\t\t\t\tcase keys.TAB:\n\t\t\t\t\tcase keys.ESCAPE:\n\t\t\t\t\tcase keys.DOWN_ARROW:\n\t\t\t\t\tcase keys.UP_ARROW:\n\t\t\t\t\tcase keys.LEFT_ARROW:\n\t\t\t\t\tcase keys.RIGHT_ARROW:\n\t\t\t\t\t\t// These keys may alter the <input>'s value indirectly, but we don't want to emit an \"input\"\n\t\t\t\t\t\t// event. For example, the up/down arrows in TimeTextBox or ComboBox will cause the next\n\t\t\t\t\t\t// dropdown item's value to be copied to the <input>.\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(e.keyCode == keys.ENTER && this.textbox.tagName.toLowerCase() != \"textarea\"){\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.defer(function(){\n\t\t\t\t\t\t\tif(this.textbox.value !== this._lastInputEventValue){\n\t\t\t\t\t\t\t\ton.emit(this.textbox, \"input\", {bubbles: true});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.own(\n\t\t\t\ton(this.textbox, \"keydown, keypress, paste, cut, compositionend\", lang.hitch(this, handleEvent)),\n\t\t\t\ton(this.textbox, \"input\", lang.hitch(this, \"_onInput\")),\n\n\t\t\t\t// Allow keypress to bubble to this.domNode, so that TextBox.on(\"keypress\", ...) works,\n\t\t\t\t// but prevent it from further propagating, so that typing into a TextBox inside a Toolbar doesn't\n\t\t\t\t// trigger the Toolbar's letter key navigation.\n\t\t\t\ton(this.domNode, \"keypress\", function(e){ e.stopPropagation(); })\n\t\t\t);\n\t\t},\n\n\t\t_blankValue: '', // if the textbox is blank, what value should be reported\n\t\tfilter: function(val){\n\t\t\t// summary:\n\t\t\t//\t\tAuto-corrections (such as trimming) that are applied to textbox\n\t\t\t//\t\tvalue on blur or form submit.\n\t\t\t// description:\n\t\t\t//\t\tFor MappedTextBox subclasses, this is called twice\n\t\t\t//\n\t\t\t//\t\t- once with the display value\n\t\t\t//\t\t- once the value as set/returned by set('value', ...)\n\t\t\t//\n\t\t\t//\t\tand get('value'), ex: a Number for NumberTextBox.\n\t\t\t//\n\t\t\t//\t\tIn the latter case it does corrections like converting null to NaN. In\n\t\t\t//\t\tthe former case the NumberTextBox.filter() method calls this.inherited()\n\t\t\t//\t\tto execute standard trimming code in TextBox.filter().\n\t\t\t//\n\t\t\t//\t\tTODO: break this into two methods in 2.0\n\t\t\t//\n\t\t\t// tags:\n\t\t\t//\t\tprotected extension\n\t\t\tif(val === null){\n\t\t\t\treturn this._blankValue;\n\t\t\t}\n\t\t\tif(typeof val != \"string\"){\n\t\t\t\treturn val;\n\t\t\t}\n\t\t\tif(this.trim){\n\t\t\t\tval = lang.trim(val);\n\t\t\t}\n\t\t\tif(this.uppercase){\n\t\t\t\tval = val.toUpperCase();\n\t\t\t}\n\t\t\tif(this.lowercase){\n\t\t\t\tval = val.toLowerCase();\n\t\t\t}\n\t\t\tif(this.propercase){\n\t\t\t\tval = val.replace(/[^\\s]+/g, function(word){\n\t\t\t\t\treturn word.substring(0, 1).toUpperCase() + word.substring(1);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\t_setBlurValue: function(){\n\t\t\t// Format the displayed value, for example (for NumberTextBox) convert 1.4 to 1.400,\n\t\t\t// or (for CurrencyTextBox) 2.50 to $2.50\n\n\t\t\tthis._setValueAttr(this.get('value'), true);\n\t\t},\n\n\t\t_onBlur: function(e){\n\t\t\tif(this.disabled){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._setBlurValue();\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\t_isTextSelected: function(){\n\t\t\treturn this.textbox.selectionStart != this.textbox.selectionEnd;\n\t\t},\n\n\t\t_onFocus: function(/*String*/ by){\n\t\t\tif(this.disabled || this.readOnly){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Select all text on focus via click if nothing already selected.\n\t\t\t// Since mouse-up will clear the selection, need to defer selection until after mouse-up.\n\t\t\t// Don't do anything on focus by tabbing into the widget since there's no associated mouse-up event.\n\t\t\tif(this.selectOnClick && by == \"mouse\"){\n\t\t\t\t// Use on.once() to only select all text on first click only; otherwise users would have no way to clear\n\t\t\t\t// the selection.\n\t\t\t\tthis._selectOnClickHandle = on.once(this.domNode, \"mouseup, touchend\", lang.hitch(this, function(evt){\n\t\t\t\t\t// Check if the user selected some text manually (mouse-down, mouse-move, mouse-up)\n\t\t\t\t\t// and if not, then select all the text\n\t\t\t\t\tif(!this._isTextSelected()){\n\t\t\t\t\t\t_TextBoxMixin.selectInputText(this.textbox);\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t\tthis.own(this._selectOnClickHandle);\n\n\t\t\t\t// in case the mouseup never comes\n\t\t\t\tthis.defer(function(){\n\t\t\t\t\tif(this._selectOnClickHandle){\n\t\t\t\t\t\tthis._selectOnClickHandle.remove();\n\t\t\t\t\t\tthis._selectOnClickHandle = null;\n\t\t\t\t\t}\n\t\t\t\t}, 500); // if mouseup not received soon, then treat it as some gesture\n\t\t\t}\n\t\t\t// call this.inherited() before refreshState(), since this.inherited() will possibly scroll the viewport\n\t\t\t// (to scroll the TextBox into view), which will affect how _refreshState() positions the tooltip\n\t\t\tthis.inherited(arguments);\n\n\t\t\tthis._refreshState();\n\t\t},\n\n\t\treset: function(){\n\t\t\t// Overrides `dijit/_FormWidget/reset()`.\n\t\t\t// Additionally resets the displayed textbox value to ''\n\t\t\tthis.textbox.value = '';\n\t\t\tthis.inherited(arguments);\n\t\t}\n\t});\n\n\tif(has(\"dojo-bidi\")){\n\t\t_TextBoxMixin = declare(\"dijit.form._TextBoxMixin\", _TextBoxMixin, {\n\t\t\t_setValueAttr: function(){\n\t\t\t\tthis.inherited(arguments);\n\t\t\t\tthis.applyTextDir(this.focusNode);\n\t\t\t},\n\t\t\t_setDisplayedValueAttr: function(){\n\t\t\t\tthis.inherited(arguments);\n\t\t\t\tthis.applyTextDir(this.focusNode);\n\t\t\t},\n\t\t\t_onInput: function(){\n\t\t\t\tthis.applyTextDir(this.focusNode);\n\t\t\t\tthis.inherited(arguments);\n\t\t\t}\n\t\t});\n\t}\n\n\t_TextBoxMixin._setSelectionRange = dijit._setSelectionRange = function(/*DomNode*/ element, /*Number?*/ start, /*Number?*/ stop){\n\t\tif(element.setSelectionRange){\n\t\t\telement.setSelectionRange(start, stop);\n\t\t}\n\t};\n\n\t_TextBoxMixin.selectInputText = dijit.selectInputText = function(/*DomNode*/ element, /*Number?*/ start, /*Number?*/ stop){\n\t\t// summary:\n\t\t//\t\tSelect text in the input element argument, from start (default 0), to stop (default end).\n\n\t\t// TODO: use functions in _editor/selection.js?\n\t\telement = dom.byId(element);\n\t\tif(isNaN(start)){\n\t\t\tstart = 0;\n\t\t}\n\t\tif(isNaN(stop)){\n\t\t\tstop = element.value ? element.value.length : 0;\n\t\t}\n\t\ttry{\n\t\t\telement.focus();\n\t\t\t_TextBoxMixin._setSelectionRange(element, start, stop);\n\t\t}catch(e){ /* squelch random errors (esp. on IE) from unexpected focus changes or DOM nodes being hidden */\n\t\t}\n\t};\n\n\treturn _TextBoxMixin;\n});\n","/*\n * This module was modified by dojo-webpack-plugin to disable some locales\n * that were excluded by the plugin's 'locales' option\n */\ndefine(({'root':({'invalidMessage':'The value entered is not valid.','missingMessage':'This value is required.','rangeMessage':'This value is out of range.'}),'bs':false,'mk':false,'sr':false,'zh':false,'zh-tw':false,'vi':true,'uk':false,'tr':false,'th':false,'sv':false,'sl':false,'sk':false,'ru':false,'ro':false,'pt':false,'pt-pt':false,'pl':false,'nl':false,'nb':false,'lv':false,'lt':false,'ko':false,'kk':false,'ja':false,'it':false,'id':false,'hu':false,'hr':false,'hi':false,'he':false,'fr':false,'fi':false,'eu':false,'et':false,'es':false,'el':false,'de':false,'da':false,'cs':false,'ca':false,'bg':false,'az':false,'ar':false}))","define(\n//begin v1.x content\n({\n\tinvalidMessage: \"Giá trị được nhập không hợp lệ.\",\n\tmissingMessage: \"Giá trị này là bắt buộc.\",\n\trangeMessage: \"Giá trị này ngoài phạm vi.\"\n})\n//end v1.x content\n);\n","define([\"dojo/dom-class\", \"dojo/hccss\", \"dojo/domReady\", \"dojo/_base/window\"], function(domClass, has, domReady, win){\n\n\t// module:\n\t//\t\tdijit/hccss\n\n\t/*=====\n\treturn function(){\n\t\t// summary:\n\t\t//\t\tTest if computer is in high contrast mode, and sets `dijit_a11y` flag on `<body>` if it is.\n\t\t//\t\tDeprecated, use ``dojo/hccss`` instead.\n\t};\n\t=====*/\n\n\tdomReady(function(){\n\t\tif(has(\"highcontrast\")){\n\t\t\tdomClass.add(win.body(), \"dijit_a11y\");\n\t\t}\n\t});\n\n\treturn has;\n});\n","define([\n\t\"dojo/_base/kernel\", // kernel.deprecated\n\t\"dojo/_base/lang\", // lang.mixin lang.delegate lang.hitch lang.isFunction lang.isObject\n\t\"../_Widget\",\n\t\"../_Container\",\n\t\"./_ContentPaneResizeMixin\",\n\t\"dojo/string\", // string.substitute\n\t\"dojo/html\", // html._ContentSetter\n\t\"dojo/_base/array\", // array.forEach\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/_base/Deferred\", // Deferred\n\t\"dojo/dom\", // dom.byId\n\t\"dojo/dom-attr\", // domAttr.attr\n\t\"dojo/dom-construct\", // empty()\n\t\"dojo/_base/xhr\", // xhr.get\n\t\"dojo/i18n\", // i18n.getLocalization\n\t\"dojo/when\",\n\t\"dojo/i18n!../nls/loading\"\n], function(kernel, lang, _Widget, _Container, _ContentPaneResizeMixin, string, html, array, declare,\n\t\t\tDeferred, dom, domAttr, domConstruct, xhr, i18n, when){\n\n\t// module:\n\t//\t\tdijit/layout/ContentPane\n\n\treturn declare(\"dijit.layout.ContentPane\", [_Widget, _Container, _ContentPaneResizeMixin], {\n\t\t// summary:\n\t\t//\t\tA widget containing an HTML fragment, specified inline\n\t\t//\t\tor by uri. Fragment may include widgets.\n\t\t//\n\t\t// description:\n\t\t//\t\tThis widget embeds a document fragment in the page, specified\n\t\t//\t\teither by uri, javascript generated markup or DOM reference.\n\t\t//\t\tAny widgets within this content are instantiated and managed,\n\t\t//\t\tbut laid out according to the HTML structure. Unlike IFRAME,\n\t\t//\t\tContentPane embeds a document fragment as would be found\n\t\t//\t\tinside the BODY tag of a full HTML document. It should not\n\t\t//\t\tcontain the HTML, HEAD, or BODY tags.\n\t\t//\t\tFor more advanced functionality with scripts and\n\t\t//\t\tstylesheets, see dojox/layout/ContentPane. This widget may be\n\t\t//\t\tused stand alone or as a base class for other widgets.\n\t\t//\t\tContentPane is useful as a child of other layout containers\n\t\t//\t\tsuch as BorderContainer or TabContainer, but note that those\n\t\t//\t\twidgets can contain any widget as a child.\n\t\t//\n\t\t// example:\n\t\t//\t\tSome quick samples:\n\t\t//\t\tTo change the innerHTML:\n\t\t// |\t\tcp.set('content', '<b>new content</b>')`\n\t\t//\t\tOr you can send it a NodeList:\n\t\t// |\t\tcp.set('content', dojo.query('div [class=selected]', userSelection))\n\t\t//\t\tTo do an ajax update:\n\t\t// |\t\tcp.set('href', url)\n\n\t\t// href: String\n\t\t//\t\tThe href of the content that displays now.\n\t\t//\t\tSet this at construction if you want to load data externally when the\n\t\t//\t\tpane is shown. (Set preload=true to load it immediately.)\n\t\t//\t\tChanging href after creation doesn't have any effect; Use set('href', ...);\n\t\thref: \"\",\n\n\t\t// content: String|DomNode|NodeList|dijit/_Widget\n\t\t//\t\tThe innerHTML of the ContentPane.\n\t\t//\t\tNote that the initialization parameter / argument to set(\"content\", ...)\n\t\t//\t\tcan be a String, DomNode, Nodelist, or _Widget.\n\t\tcontent: \"\",\n\n\t\t// extractContent: Boolean\n\t\t//\t\tExtract visible content from inside of `<body> .... </body>`.\n\t\t//\t\tI.e., strip `<html>` and `<head>` (and it's contents) from the href\n\t\textractContent: false,\n\n\t\t// parseOnLoad: Boolean\n\t\t//\t\tParse content and create the widgets, if any.\n\t\tparseOnLoad: true,\n\n\t\t// parserScope: String\n\t\t//\t\tFlag passed to parser. Root for attribute names to search for. If scopeName is dojo,\n\t\t//\t\twill search for data-dojo-type (or dojoType). For backwards compatibility\n\t\t//\t\treasons defaults to dojo._scopeName (which is \"dojo\" except when\n\t\t//\t\tmulti-version support is used, when it will be something like dojo16, dojo20, etc.)\n\t\tparserScope: kernel._scopeName,\n\n\t\t// preventCache: Boolean\n\t\t//\t\tPrevent caching of data from href's by appending a timestamp to the href.\n\t\tpreventCache: false,\n\n\t\t// preload: Boolean\n\t\t//\t\tForce load of data on initialization even if pane is hidden.\n\t\tpreload: false,\n\n\t\t// refreshOnShow: Boolean\n\t\t//\t\tRefresh (re-download) content when pane goes from hidden to shown\n\t\trefreshOnShow: false,\n\n\t\t// loadingMessage: String\n\t\t//\t\tMessage that shows while downloading\n\t\tloadingMessage: \"<span class='dijitContentPaneLoading'><span class='dijitInline dijitIconLoading'></span>${loadingState}</span>\",\n\n\t\t// errorMessage: String\n\t\t//\t\tMessage that shows if an error occurs\n\t\terrorMessage: \"<span class='dijitContentPaneError'><span class='dijitInline dijitIconError'></span>${errorState}</span>\",\n\n\t\t// isLoaded: [readonly] Boolean\n\t\t//\t\tTrue if the ContentPane has data in it, either specified\n\t\t//\t\tduring initialization (via href or inline content), or set\n\t\t//\t\tvia set('content', ...) / set('href', ...)\n\t\t//\n\t\t//\t\tFalse if it doesn't have any content, or if ContentPane is\n\t\t//\t\tstill in the process of downloading href.\n\t\tisLoaded: false,\n\n\t\tbaseClass: \"dijitContentPane\",\n\n\t\t/*======\n\t\t // ioMethod: dojo/_base/xhr.get|dojo._base/xhr.post\n\t\t //\t\tFunction that should grab the content specified via href.\n\t\t ioMethod: dojo.xhrGet,\n\t\t ======*/\n\n\t\t// ioArgs: Object\n\t\t//\t\tParameters to pass to xhrGet() request, for example:\n\t\t// |\t<div data-dojo-type=\"dijit/layout/ContentPane\" data-dojo-props=\"href: './bar', ioArgs: {timeout: 500}\">\n\t\tioArgs: {},\n\n\t\t// onLoadDeferred: [readonly] dojo.Deferred\n\t\t//\t\tThis is the `dojo.Deferred` returned by set('href', ...) and refresh().\n\t\t//\t\tCalling onLoadDeferred.then() registers your\n\t\t//\t\tcallback to be called only once, when the prior set('href', ...) call or\n\t\t//\t\tthe initial href parameter to the constructor finishes loading.\n\t\t//\n\t\t//\t\tThis is different than an onLoad() handler which gets called any time any href\n\t\t//\t\tor content is loaded.\n\t\tonLoadDeferred: null,\n\n\t\t// Cancel _WidgetBase's _setTitleAttr because we don't want the title attribute (used to specify\n\t\t// tab labels) to be copied to ContentPane.domNode... otherwise a tooltip shows up over the\n\t\t// entire pane.\n\t\t_setTitleAttr: null,\n\n\t\t// Flag to parser that I'll parse my contents, so it shouldn't.\n\t\tstopParser: true,\n\n\t\t// template: [private] Boolean\n\t\t//\t\tFlag from the parser that this ContentPane is inside a template\n\t\t//\t\tso the contents are pre-parsed.\n\t\t// TODO: this declaration can be commented out in 2.0\n\t\ttemplate: false,\n\n\t\tmarkupFactory: function(params, node, ctor){\n\t\t\tvar self = new ctor(params, node);\n\n\t\t\t// If a parse has started but is waiting for modules to load, then return a Promise for when the parser\n\t\t\t// finishes. Don't return a promise though for the case when content hasn't started loading because the\n\t\t\t// ContentPane is hidden and it has an href (ex: hidden pane of a TabContainer). In that case we consider\n\t\t\t// that initialization has already finished.\n\t\t\treturn !self.href && self._contentSetter && self._contentSetter.parseDeferred && !self._contentSetter.parseDeferred.isFulfilled() ?\n\t\t\t\tself._contentSetter.parseDeferred.then(function(){\n\t\t\t\t\treturn self;\n\t\t\t\t}) : self;\n\t\t},\n\n\t\tcreate: function(params, srcNodeRef){\n\t\t\t// Convert a srcNodeRef argument into a content parameter, so that the original contents are\n\t\t\t// processed in the same way as contents set via set(\"content\", ...), calling the parser etc.\n\t\t\t// Avoid modifying original params object since that breaks NodeList instantiation, see #11906.\n\t\t\tif((!params || !params.template) && srcNodeRef && !(\"href\" in params) && !(\"content\" in params)){\n\t\t\t\tsrcNodeRef = dom.byId(srcNodeRef);\n\t\t\t\tvar df = srcNodeRef.ownerDocument.createDocumentFragment();\n\t\t\t\twhile(srcNodeRef.firstChild){\n\t\t\t\t\tdf.appendChild(srcNodeRef.firstChild);\n\t\t\t\t}\n\t\t\t\tparams = lang.delegate(params, {content: df});\n\t\t\t}\n\t\t\tthis.inherited(arguments, [params, srcNodeRef]);\n\t\t},\n\n\t\tpostMixInProperties: function(){\n\t\t\tthis.inherited(arguments);\n\t\t\tvar messages = i18n.getLocalization(\"dijit\", \"loading\", this.lang);\n\t\t\tthis.loadingMessage = string.substitute(this.loadingMessage, messages);\n\t\t\tthis.errorMessage = string.substitute(this.errorMessage, messages);\n\t\t},\n\n\t\tbuildRendering: function(){\n\t\t\tthis.inherited(arguments);\n\n\t\t\t// Since we have no template we need to set this.containerNode ourselves, to make getChildren() work.\n\t\t\t// For subclasses of ContentPane that do have a template, does nothing.\n\t\t\tif(!this.containerNode){\n\t\t\t\tthis.containerNode = this.domNode;\n\t\t\t}\n\n\t\t\t// remove the title attribute so it doesn't show up when hovering\n\t\t\t// over a node (TODO: remove in 2.0, no longer needed after #11490)\n\t\t\tthis.domNode.removeAttribute(\"title\");\n\t\t},\n\n\t\tstartup: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCall startup() on all children including non _Widget ones like dojo/dnd/Source objects\n\n\t\t\t// This starts all the widgets\n\t\t\tthis.inherited(arguments);\n\n\t\t\t// And this catches stuff like dojo/dnd/Source\n\t\t\tif(this._contentSetter){\n\t\t\t\tarray.forEach(this._contentSetter.parseResults, function(obj){\n\t\t\t\t\tif(!obj._started && !obj._destroyed && lang.isFunction(obj.startup)){\n\t\t\t\t\t\tobj.startup();\n\t\t\t\t\t\tobj._started = true;\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\t\t},\n\n\t\t_startChildren: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when content is loaded. Calls startup on each child widget. Similar to ContentPane.startup()\n\t\t\t//\t\titself, but avoids marking the ContentPane itself as \"restarted\" (see #15581).\n\n\t\t\t// This starts all the widgets\n\t\t\tarray.forEach(this.getChildren(), function(obj){\n\t\t\t\tif(!obj._started && !obj._destroyed && lang.isFunction(obj.startup)){\n\t\t\t\t\tobj.startup();\n\t\t\t\t\tobj._started = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// And this catches stuff like dojo/dnd/Source\n\t\t\tif(this._contentSetter){\n\t\t\t\tarray.forEach(this._contentSetter.parseResults, function(obj){\n\t\t\t\t\tif(!obj._started && !obj._destroyed && lang.isFunction(obj.startup)){\n\t\t\t\t\t\tobj.startup();\n\t\t\t\t\t\tobj._started = true;\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\t\t},\n\n\t\tsetHref: function(/*String|Uri*/ href){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated. Use set('href', ...) instead.\n\t\t\tkernel.deprecated(\"dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.\", \"\", \"2.0\");\n\t\t\treturn this.set(\"href\", href);\n\t\t},\n\t\t_setHrefAttr: function(/*String|Uri*/ href){\n\t\t\t// summary:\n\t\t\t//\t\tHook so set(\"href\", ...) works.\n\t\t\t// description:\n\t\t\t//\t\tReset the (external defined) content of this pane and replace with new url\n\t\t\t//\t\tNote: It delays the download until widget is shown if preload is false.\n\t\t\t// href:\n\t\t\t//\t\turl to the page you want to get, must be within the same domain as your mainpage\n\n\t\t\t// Cancel any in-flight requests (a set('href', ...) will cancel any in-flight set('href', ...))\n\t\t\tthis.cancel();\n\n\t\t\tthis.onLoadDeferred = new Deferred(lang.hitch(this, \"cancel\"));\n\t\t\tthis.onLoadDeferred.then(lang.hitch(this, \"onLoad\"));\n\n\t\t\tthis._set(\"href\", href);\n\n\t\t\t// _setHrefAttr() is called during creation and by the user, after creation.\n\t\t\t// Assuming preload == false, only in the second case do we actually load the URL;\n\t\t\t// otherwise it's done in startup(), and only if this widget is shown.\n\t\t\tif(this.preload || (this._created && this._isShown())){\n\t\t\t\tthis._load();\n\t\t\t}else{\n\t\t\t\t// Set flag to indicate that href needs to be loaded the next time the\n\t\t\t\t// ContentPane is made visible\n\t\t\t\tthis._hrefChanged = true;\n\t\t\t}\n\n\t\t\treturn this.onLoadDeferred;\t\t// Deferred\n\t\t},\n\n\t\tsetContent: function(/*String|DomNode|Nodelist*/data){\n\t\t\t// summary:\n\t\t\t//\t\tDeprecated. Use set('content', ...) instead.\n\t\t\tkernel.deprecated(\"dijit.layout.ContentPane.setContent() is deprecated. Use set('content', ...) instead.\", \"\", \"2.0\");\n\t\t\tthis.set(\"content\", data);\n\t\t},\n\t\t_setContentAttr: function(/*String|DomNode|Nodelist*/data){\n\t\t\t// summary:\n\t\t\t//\t\tHook to make set(\"content\", ...) work.\n\t\t\t//\t\tReplaces old content with data content, include style classes from old content\n\t\t\t// data:\n\t\t\t//\t\tthe new Content may be String, DomNode or NodeList\n\t\t\t//\n\t\t\t//\t\tif data is a NodeList (or an array of nodes) nodes are copied\n\t\t\t//\t\tso you can import nodes from another document implicitly\n\n\t\t\t// clear href so we can't run refresh and clear content\n\t\t\t// refresh should only work if we downloaded the content\n\t\t\tthis._set(\"href\", \"\");\n\n\t\t\t// Cancel any in-flight requests (a set('content', ...) will cancel any in-flight set('href', ...))\n\t\t\tthis.cancel();\n\n\t\t\t// Even though user is just setting content directly, still need to define an onLoadDeferred\n\t\t\t// because the _onLoadHandler() handler is still getting called from setContent()\n\t\t\tthis.onLoadDeferred = new Deferred(lang.hitch(this, \"cancel\"));\n\t\t\tif(this._created){\n\t\t\t\t// For back-compat reasons, call onLoad() for set('content', ...)\n\t\t\t\t// calls but not for content specified in srcNodeRef (ie: <div data-dojo-type=ContentPane>...</div>)\n\t\t\t\t// or as initialization parameter (ie: new ContentPane({content: ...})\n\t\t\t\tthis.onLoadDeferred.then(lang.hitch(this, \"onLoad\"));\n\t\t\t}\n\n\t\t\tthis._setContent(data || \"\");\n\n\t\t\tthis._isDownloaded = false; // mark that content is from a set('content') not a set('href')\n\n\t\t\treturn this.onLoadDeferred;\t// Deferred\n\t\t},\n\t\t_getContentAttr: function(){\n\t\t\t// summary:\n\t\t\t//\t\tHook to make get(\"content\") work\n\t\t\treturn this.containerNode.innerHTML;\n\t\t},\n\n\t\tcancel: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCancels an in-flight download of content\n\t\t\tif(this._xhrDfd && (this._xhrDfd.fired == -1)){\n\t\t\t\tthis._xhrDfd.cancel();\n\t\t\t}\n\t\t\tdelete this._xhrDfd; // garbage collect\n\n\t\t\tthis.onLoadDeferred = null;\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tthis.cancel();\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\tdestroyRecursive: function(/*Boolean*/ preserveDom){\n\t\t\t// summary:\n\t\t\t//\t\tDestroy the ContentPane and its contents\n\n\t\t\t// if we have multiple controllers destroying us, bail after the first\n\t\t\tif(this._beingDestroyed){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.inherited(arguments);\n\t\t},\n\n\t\t_onShow: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when the ContentPane is made visible\n\t\t\t// description:\n\t\t\t//\t\tFor a plain ContentPane, this is called on initialization, from startup().\n\t\t\t//\t\tIf the ContentPane is a hidden pane of a TabContainer etc., then it's\n\t\t\t//\t\tcalled whenever the pane is made visible.\n\t\t\t//\n\t\t\t//\t\tDoes necessary processing, including href download and layout/resize of\n\t\t\t//\t\tchild widget(s)\n\n\t\t\tthis.inherited(arguments);\n\n\t\t\tif(this.href){\n\t\t\t\tif(!this._xhrDfd && // if there's an href that isn't already being loaded\n\t\t\t\t\t(!this.isLoaded || this._hrefChanged || this.refreshOnShow)\n\t\t\t\t\t){\n\t\t\t\t\treturn this.refresh();\t// If child has an href, promise that fires when the load is complete\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\trefresh: function(){\n\t\t\t// summary:\n\t\t\t//\t\t[Re]download contents of href and display\n\t\t\t// description:\n\t\t\t//\t\t1. cancels any currently in-flight requests\n\t\t\t//\t\t2. posts \"loading...\" message\n\t\t\t//\t\t3. sends XHR to download new data\n\n\t\t\t// Cancel possible prior in-flight request\n\t\t\tthis.cancel();\n\n\t\t\tthis.onLoadDeferred = new Deferred(lang.hitch(this, \"cancel\"));\n\t\t\tthis.onLoadDeferred.then(lang.hitch(this, \"onLoad\"));\n\t\t\tthis._load();\n\t\t\treturn this.onLoadDeferred;\t\t// If child has an href, promise that fires when refresh is complete\n\t\t},\n\n\t\t_load: function(){\n\t\t\t// summary:\n\t\t\t//\t\tLoad/reload the href specified in this.href\n\n\t\t\t// display loading message\n\t\t\tthis._setContent(this.onDownloadStart(), true);\n\n\t\t\tvar self = this;\n\t\t\tvar getArgs = {\n\t\t\t\tpreventCache: (this.preventCache || this.refreshOnShow),\n\t\t\t\turl: this.href,\n\t\t\t\thandleAs: \"text\"\n\t\t\t};\n\t\t\tif(lang.isObject(this.ioArgs)){\n\t\t\t\tlang.mixin(getArgs, this.ioArgs);\n\t\t\t}\n\n\t\t\tvar hand = (this._xhrDfd = (this.ioMethod || xhr.get)(getArgs)),\n\t\t\t\treturnedHtml;\n\n\t\t\thand.then(\n\t\t\t\tfunction(html){\n\t\t\t\t\treturnedHtml = html;\n\t\t\t\t\ttry{\n\t\t\t\t\t\tself._isDownloaded = true;\n\t\t\t\t\t\treturn self._setContent(html, false);\n\t\t\t\t\t}catch(err){\n\t\t\t\t\t\tself._onError('Content', err); // onContentError\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfunction(err){\n\t\t\t\t\tif(!hand.canceled){\n\t\t\t\t\t\t// show error message in the pane\n\t\t\t\t\t\tself._onError('Download', err); // onDownloadError\n\t\t\t\t\t}\n\t\t\t\t\tdelete self._xhrDfd;\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t).then(function(){\n\t\t\t\t\tself.onDownloadEnd();\n\t\t\t\t\tdelete self._xhrDfd;\n\t\t\t\t\treturn returnedHtml;\n\t\t\t\t});\n\n\t\t\t// Remove flag saying that a load is needed\n\t\t\tdelete this._hrefChanged;\n\t\t},\n\n\t\t_onLoadHandler: function(data){\n\t\t\t// summary:\n\t\t\t//\t\tThis is called whenever new content is being loaded\n\t\t\tthis._set(\"isLoaded\", true);\n\t\t\ttry{\n\t\t\t\tthis.onLoadDeferred.resolve(data);\n\t\t\t}catch(e){\n\t\t\t\tconsole.error('Error ' + (this.widgetId || this.id) + ' running custom onLoad code: ' + e.message);\n\t\t\t}\n\t\t},\n\n\t\t_onUnloadHandler: function(){\n\t\t\t// summary:\n\t\t\t//\t\tThis is called whenever the content is being unloaded\n\t\t\tthis._set(\"isLoaded\", false);\n\t\t\ttry{\n\t\t\t\tthis.onUnload();\n\t\t\t}catch(e){\n\t\t\t\tconsole.error('Error ' + this.widgetId + ' running custom onUnload code: ' + e.message);\n\t\t\t}\n\t\t},\n\n\t\tdestroyDescendants: function(/*Boolean*/ preserveDom){\n\t\t\t// summary:\n\t\t\t//\t\tDestroy all the widgets inside the ContentPane and empty containerNode\n\n\t\t\t// Make sure we call onUnload (but only when the ContentPane has real content)\n\t\t\tif(this.isLoaded){\n\t\t\t\tthis._onUnloadHandler();\n\t\t\t}\n\n\t\t\t// Even if this.isLoaded == false there might still be a \"Loading...\" message\n\t\t\t// to erase, so continue...\n\n\t\t\t// For historical reasons we need to delete all widgets under this.containerNode,\n\t\t\t// even ones that the user has created manually.\n\t\t\tvar setter = this._contentSetter;\n\t\t\tarray.forEach(this.getChildren(), function(widget){\n\t\t\t\tif(widget.destroyRecursive){\n\t\t\t\t\t// All widgets will hit this branch\n\t\t\t\t\twidget.destroyRecursive(preserveDom);\n\t\t\t\t}else if(widget.destroy){\n\t\t\t\t\t// Things like dojo/dnd/Source have destroy(), not destroyRecursive()\n\t\t\t\t\twidget.destroy(preserveDom);\n\t\t\t\t}\n\t\t\t\twidget._destroyed = true;\n\t\t\t});\n\t\t\tif(setter){\n\t\t\t\t// Most of the widgets in setter.parseResults have already been destroyed, but\n\t\t\t\t// things like Menu that have been moved to <body> haven't yet\n\t\t\t\tarray.forEach(setter.parseResults, function(widget){\n\t\t\t\t\tif(!widget._destroyed){\n\t\t\t\t\t\tif(widget.destroyRecursive){\n\t\t\t\t\t\t\t// All widgets will hit this branch\n\t\t\t\t\t\t\twidget.destroyRecursive(preserveDom);\n\t\t\t\t\t\t}else if(widget.destroy){\n\t\t\t\t\t\t\t// Things like dojo/dnd/Source have destroy(), not destroyRecursive()\n\t\t\t\t\t\t\twidget.destroy(preserveDom);\n\t\t\t\t\t\t}\n\t\t\t\t\t\twidget._destroyed = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdelete setter.parseResults;\n\t\t\t}\n\n\t\t\t// And then clear away all the DOM nodes\n\t\t\tif(!preserveDom){\n\t\t\t\tdomConstruct.empty(this.containerNode);\n\t\t\t}\n\n\t\t\t// Delete any state information we have about current contents\n\t\t\tdelete this._singleChild;\n\t\t},\n\n\t\t_setContent: function(/*String|DocumentFragment*/ cont, /*Boolean*/ isFakeContent){\n\t\t\t// summary:\n\t\t\t//\t\tInsert the content into the container node\n\t\t\t// returns:\n\t\t\t//\t\tReturns a Deferred promise that is resolved when the content is parsed.\n\n\t\t\tcont = this.preprocessContent(cont);\n\t\t\t// first get rid of child widgets\n\t\t\tthis.destroyDescendants();\n\n\t\t\t// html.set will take care of the rest of the details\n\t\t\t// we provide an override for the error handling to ensure the widget gets the errors\n\t\t\t// configure the setter instance with only the relevant widget instance properties\n\t\t\t// NOTE: unless we hook into attr, or provide property setters for each property,\n\t\t\t// we need to re-configure the ContentSetter with each use\n\t\t\tvar setter = this._contentSetter;\n\t\t\tif(!(setter && setter instanceof html._ContentSetter)){\n\t\t\t\tsetter = this._contentSetter = new html._ContentSetter({\n\t\t\t\t\tnode: this.containerNode,\n\t\t\t\t\t_onError: lang.hitch(this, this._onError),\n\t\t\t\t\tonContentError: lang.hitch(this, function(e){\n\t\t\t\t\t\t// fires if a domfault occurs when we are appending this.errorMessage\n\t\t\t\t\t\t// like for instance if domNode is a UL and we try append a DIV\n\t\t\t\t\t\tvar errMess = this.onContentError(e);\n\t\t\t\t\t\ttry{\n\t\t\t\t\t\t\tthis.containerNode.innerHTML = errMess;\n\t\t\t\t\t\t}catch(e){\n\t\t\t\t\t\t\tconsole.error('Fatal ' + this.id + ' could not change content due to ' + e.message, e);\n\t\t\t\t\t\t}\n\t\t\t\t\t})/*,\n\t\t\t\t\t _onError */\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar setterParams = lang.mixin({\n\t\t\t\tcleanContent: this.cleanContent,\n\t\t\t\textractContent: this.extractContent,\n\t\t\t\tparseContent: !cont.domNode && this.parseOnLoad,\n\t\t\t\tparserScope: this.parserScope,\n\t\t\t\tstartup: false,\n\t\t\t\tdir: this.dir,\n\t\t\t\tlang: this.lang,\n\t\t\t\ttextDir: this.textDir\n\t\t\t}, this._contentSetterParams || {});\n\n\t\t\tvar p = setter.set((lang.isObject(cont) && cont.domNode) ? cont.domNode : cont, setterParams);\n\n\t\t\t// dojox/layout/html/_base::_ContentSetter.set() returns a Promise that indicates when everything is completed.\n\t\t\t// dojo/html::_ContentSetter.set() currently returns the DOMNode, but that will be changed for 2.0.\n\t\t\t// So, if set() returns a promise then use it, otherwise fallback to waiting on setter.parseDeferred\n\t\t\tvar self = this;\n\t\t\treturn when(p && p.then ? p : setter.parseDeferred, function(){\n\t\t\t\t// setter params must be pulled afresh from the ContentPane each time\n\t\t\t\tdelete self._contentSetterParams;\n\n\t\t\t\tif(!isFakeContent){\n\t\t\t\t\tif(self._started){\n\t\t\t\t\t\t// Startup each top level child widget (and they will start their children, recursively)\n\t\t\t\t\t\tself._startChildren();\n\n\t\t\t\t\t\t// Call resize() on each of my child layout widgets,\n\t\t\t\t\t\t// or resize() on my single child layout widget...\n\t\t\t\t\t\t// either now (if I'm currently visible) or when I become visible\n\t\t\t\t\t\tself._scheduleLayout();\n\t\t\t\t\t}\n\t\t\t\t\tself._onLoadHandler(cont);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tpreprocessContent: function(/*String|DocumentFragment*/ content){\n\t\t\t// summary:\n\t\t\t//\t\tHook, called after content has loaded, before being processed.\n\t\t\t// description:\n\t\t\t//\t\tA subclass should preprocess the content and return the preprocessed content.\n\t\t\t//\t\tSee https://bugs.dojotoolkit.org/ticket/9622\n\t\t\t// returns:\n\t\t\t//\t\tReturns preprocessed content, either a String or DocumentFragment\n\t\t\treturn content;\n\t\t},\n\n\t\t_onError: function(type, err, consoleText){\n\t\t\tthis.onLoadDeferred.reject(err);\n\n\t\t\t// shows user the string that is returned by on[type]Error\n\t\t\t// override on[type]Error and return your own string to customize\n\t\t\tvar errText = this['on' + type + 'Error'].call(this, err);\n\t\t\tif(consoleText){\n\t\t\t\tconsole.error(consoleText, err);\n\t\t\t}else if(errText){// a empty string won't change current content\n\t\t\t\tthis._setContent(errText, true);\n\t\t\t}\n\t\t},\n\n\t\t// EVENT's, should be overide-able\n\t\tonLoad: function(/*===== data =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tEvent hook, is called after everything is loaded and widgetified\n\t\t\t// tags:\n\t\t\t//\t\tcallback\n\t\t},\n\n\t\tonUnload: function(){\n\t\t\t// summary:\n\t\t\t//\t\tEvent hook, is called before old content is cleared\n\t\t\t// tags:\n\t\t\t//\t\tcallback\n\t\t},\n\n\t\tonDownloadStart: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled before download starts.\n\t\t\t// description:\n\t\t\t//\t\tThe string returned by this function will be the html\n\t\t\t//\t\tthat tells the user we are loading something.\n\t\t\t//\t\tOverride with your own function if you want to change text.\n\t\t\t// tags:\n\t\t\t//\t\textension\n\t\t\treturn this.loadingMessage;\n\t\t},\n\n\t\tonContentError: function(/*Error*/ /*===== error =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tCalled on DOM faults, require faults etc. in content.\n\t\t\t//\n\t\t\t//\t\tIn order to display an error message in the pane, return\n\t\t\t//\t\tthe error message from this method, as an HTML string.\n\t\t\t//\n\t\t\t//\t\tBy default (if this method is not overriden), it returns\n\t\t\t//\t\tnothing, so the error message is just printed to the console.\n\t\t\t// tags:\n\t\t\t//\t\textension\n\t\t},\n\n\t\tonDownloadError: function(/*Error*/ /*===== error =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when download error occurs.\n\t\t\t//\n\t\t\t//\t\tIn order to display an error message in the pane, return\n\t\t\t//\t\tthe error message from this method, as an HTML string.\n\t\t\t//\n\t\t\t//\t\tDefault behavior (if this method is not overriden) is to display\n\t\t\t//\t\tthe error message inside the pane.\n\t\t\t// tags:\n\t\t\t//\t\textension\n\t\t\treturn this.errorMessage;\n\t\t},\n\n\t\tonDownloadEnd: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when download is finished.\n\t\t\t// tags:\n\t\t\t//\t\tcallback\n\t\t}\n\t});\n});\n","define([\n\t\"dojo/_base/array\", // array.filter array.forEach\n\t\"dojo/_base/declare\", // declare\n\t\"dojo/dom-class\", // domClass.contains domClass.toggle\n\t\"dojo/dom-geometry\", // domGeometry.contentBox domGeometry.marginBox\n\t\"dojo/dom-style\",\n\t\"dojo/_base/lang\", // lang.mixin\n\t\"dojo/query\", // query\n\t\"../registry\", // registry.byId\n\t\"../Viewport\",\n\t\"./utils\" // marginBox2contextBox\n], function(array, declare, domClass, domGeometry, domStyle, lang, query,\n\t\t\tregistry, Viewport, layoutUtils){\n\n\t// module:\n\t//\t\tdijit/layout/_ContentPaneResizeMixin\n\n\treturn declare(\"dijit.layout._ContentPaneResizeMixin\", null, {\n\t\t// summary:\n\t\t//\t\tResize() functionality of ContentPane. If there's a single layout widget\n\t\t//\t\tchild then it will call resize() with the same dimensions as the ContentPane.\n\t\t//\t\tOtherwise just calls resize on each child.\n\t\t//\n\t\t//\t\tAlso implements basic startup() functionality, where starting the parent\n\t\t//\t\twill start the children\n\n\t\t// doLayout: Boolean\n\t\t//\t\t- false - don't adjust size of children\n\t\t//\t\t- true - if there is a single visible child widget, set it's size to however big the ContentPane is\n\t\tdoLayout: true,\n\n\t\t// isLayoutContainer: [protected] Boolean\n\t\t//\t\tIndicates that this widget will call resize() on it's child widgets\n\t\t//\t\twhen they become visible.\n\t\tisLayoutContainer: true,\n\n\t\tstartup: function(){\n\t\t\t// summary:\n\t\t\t//\t\tSee `dijit/layout/_LayoutWidget.startup()` for description.\n\t\t\t//\t\tAlthough ContentPane doesn't extend _LayoutWidget, it does implement\n\t\t\t//\t\tthe same API.\n\n\t\t\tif(this._started){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar parent = this.getParent();\n\t\t\tthis._childOfLayoutWidget = parent && parent.isLayoutContainer;\n\n\t\t\t// I need to call resize() on my child/children (when I become visible), unless\n\t\t\t// I'm the child of a layout widget in which case my parent will call resize() on me and I'll do it then.\n\t\t\tthis._needLayout = !this._childOfLayoutWidget;\n\n\t\t\tthis.inherited(arguments);\n\n\t\t\tif(this._isShown()){\n\t\t\t\tthis._onShow();\n\t\t\t}\n\n\t\t\tif(!this._childOfLayoutWidget){\n\t\t\t\t// Since my parent isn't a layout container, and my style *may be* width=height=100%\n\t\t\t\t// or something similar (either set directly or via a CSS class),\n\t\t\t\t// monitor when viewport size changes so that I can re-layout.\n\t\t\t\t// This is more for subclasses of ContentPane than ContentPane itself, although it\n\t\t\t\t// could be useful for a ContentPane if it has a single child widget inheriting ContentPane's size.\n\t\t\t\tthis.own(Viewport.on(\"resize\", lang.hitch(this, \"resize\")));\n\t\t\t}\n\t\t},\n\n\t\t_checkIfSingleChild: function(){\n\t\t\t// summary:\n\t\t\t//\t\tTest if we have exactly one visible widget as a child,\n\t\t\t//\t\tand if so assume that we are a container for that widget,\n\t\t\t//\t\tand should propagate startup() and resize() calls to it.\n\t\t\t//\t\tSkips over things like data stores since they aren't visible.\n\n\t\t\tif(!this.doLayout){ return; }\n\n\t\t\tvar candidateWidgets = [],\n\t\t\t\totherVisibleNodes = false;\n\n\t\t\tquery(\"> *\", this.containerNode).some(function(node){\n\t\t\t\tvar widget = registry.byNode(node);\n\t\t\t\tif(widget && widget.resize){\n\t\t\t\t\tcandidateWidgets.push(widget);\n\t\t\t\t}else if(!/script|link|style/i.test(node.nodeName) && node.offsetHeight){\n\t\t\t\t\totherVisibleNodes = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._singleChild = candidateWidgets.length == 1 && !otherVisibleNodes ?\n\t\t\t\tcandidateWidgets[0] : null;\n\n\t\t\t// So we can set overflow: hidden to avoid a safari bug w/scrollbars showing up (#9449)\n\t\t\tdomClass.toggle(this.containerNode, this.baseClass + \"SingleChild\", !!this._singleChild);\n\t\t},\n\n\t\tresize: function(changeSize, resultSize){\n\t\t\t// summary:\n\t\t\t//\t\tSee `dijit/layout/_LayoutWidget.resize()` for description.\n\t\t\t//\t\tAlthough ContentPane doesn't extend _LayoutWidget, it does implement\n\t\t\t//\t\tthe same API.\n\n\t\t\tthis._resizeCalled = true;\n\n\t\t\tthis._scheduleLayout(changeSize, resultSize);\n\t\t},\n\n\t\t_scheduleLayout: function(changeSize, resultSize){\n\t\t\t// summary:\n\t\t\t//\t\tResize myself, and call resize() on each of my child layout widgets, either now\n\t\t\t//\t\t(if I'm currently visible) or when I become visible\n\t\t\tif(this._isShown()){\n\t\t\t\tthis._layout(changeSize, resultSize);\n\t\t\t}else{\n\t\t\t\tthis._needLayout = true;\n\t\t\t\tthis._changeSize = changeSize;\n\t\t\t\tthis._resultSize = resultSize;\n\t\t\t}\n\t\t},\n\n\t\t_layout: function(changeSize, resultSize){\n\t\t\t// summary:\n\t\t\t//\t\tResize myself according to optional changeSize/resultSize parameters, like a layout widget.\n\t\t\t//\t\tAlso, since I am an isLayoutContainer widget, each of my children expects me to\n\t\t\t//\t\tcall resize() or layout() on it.\n\t\t\t//\n\t\t\t//\t\tShould be called on initialization and also whenever we get new content\n\t\t\t//\t\t(from an href, or from set('content', ...))... but deferred until\n\t\t\t//\t\tthe ContentPane is visible\n\n\t\t\tdelete this._needLayout;\n\n\t\t\t// For the TabContainer --> BorderContainer --> ContentPane case, _onShow() is\n\t\t\t// never called directly, so resize() is our trigger to do the initial href download (see [20099]).\n\t\t\t// However, don't load href for closed TitlePanes.\n\t\t\tif(!this._wasShown && this.open !== false){\n\t\t\t\tthis._onShow();\n\t\t\t}\n\n\t\t\t// Set margin box size, unless it wasn't specified, in which case use current size.\n\t\t\tif(changeSize){\n\t\t\t\tdomGeometry.setMarginBox(this.domNode, changeSize);\n\t\t\t}\n\n\t\t\t// Compute content box size of containerNode in case we [later] need to size our single child.\n\t\t\tvar cn = this.containerNode;\n\t\t\tif(cn === this.domNode){\n\t\t\t\t// If changeSize or resultSize was passed to this method and this.containerNode ==\n\t\t\t\t// this.domNode then we can compute the content-box size without querying the node,\n\t\t\t\t// which is more reliable (similar to LayoutWidget.resize) (see for example #9449).\n\t\t\t\tvar mb = resultSize || {};\n\t\t\t\tlang.mixin(mb, changeSize || {}); // changeSize overrides resultSize\n\t\t\t\tif(!(\"h\" in mb) || !(\"w\" in mb)){\n\t\t\t\t\tmb = lang.mixin(domGeometry.getMarginBox(cn), mb); // just use domGeometry.setMarginBox() to fill in missing values\n\t\t\t\t}\n\t\t\t\tthis._contentBox = layoutUtils.marginBox2contentBox(cn, mb);\n\t\t\t}else{\n\t\t\t\tthis._contentBox = domGeometry.getContentBox(cn);\n\t\t\t}\n\n\t\t\tthis._layoutChildren();\n\t\t},\n\n\t\t_layoutChildren: function(){\n\t\t\t// Call _checkIfSingleChild() again in case app has manually mucked w/the content\n\t\t\t// of the ContentPane (rather than changing it through the set(\"content\", ...) API.\n\t\t\tthis._checkIfSingleChild();\n\n\t\t\tif(this._singleChild && this._singleChild.resize){\n\t\t\t\tvar cb = this._contentBox || domGeometry.getContentBox(this.containerNode);\n\n\t\t\t\t// note: if widget has padding this._contentBox will have l and t set,\n\t\t\t\t// but don't pass them to resize() or it will doubly-offset the child\n\t\t\t\tthis._singleChild.resize({w: cb.w, h: cb.h});\n\t\t\t}else{\n\t\t\t\t// All my child widgets are independently sized (rather than matching my size),\n\t\t\t\t// but I still need to call resize() on each child to make it layout.\n\t\t\t\tvar children = this.getChildren(),\n\t\t\t\t\twidget,\n\t\t\t\t\ti = 0;\n\t\t\t\twhile(widget = children[i++]){\n\t\t\t\t\tif(widget.resize){\n\t\t\t\t\t\twidget.resize();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_isShown: function(){\n\t\t\t// summary:\n\t\t\t//\t\tReturns true if the content is currently shown.\n\t\t\t// description:\n\t\t\t//\t\tIf I am a child of a layout widget then it actually returns true if I've ever been visible,\n\t\t\t//\t\tnot whether I'm currently visible, since that's much faster than tracing up the DOM/widget\n\t\t\t//\t\ttree every call, and at least solves the performance problem on page load by deferring loading\n\t\t\t//\t\thidden ContentPanes until they are first shown\n\n\t\t\tif(this._childOfLayoutWidget){\n\t\t\t\t// If we are TitlePane, etc - we return that only *IF* we've been resized\n\t\t\t\tif(this._resizeCalled && \"open\" in this){\n\t\t\t\t\treturn this.open;\n\t\t\t\t}\n\t\t\t\treturn this._resizeCalled;\n\t\t\t}else if(\"open\" in this){\n\t\t\t\treturn this.open;\t\t// for TitlePane, etc.\n\t\t\t}else{\n\t\t\t\tvar node = this.domNode, parent = this.domNode.parentNode;\n\t\t\t\treturn (node.style.display != 'none') && (node.style.visibility != 'hidden') && !domClass.contains(node, \"dijitHidden\") &&\n\t\t\t\t\tparent && parent.style && (parent.style.display != 'none');\n\t\t\t}\n\t\t},\n\n\t\t_onShow: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCalled when the ContentPane is made visible\n\t\t\t// description:\n\t\t\t//\t\tFor a plain ContentPane, this is called on initialization, from startup().\n\t\t\t//\t\tIf the ContentPane is a hidden pane of a TabContainer etc., then it's\n\t\t\t//\t\tcalled whenever the pane is made visible.\n\t\t\t//\n\t\t\t//\t\tDoes layout/resize of child widget(s)\n\n\t\t\t// Need to keep track of whether ContentPane has been shown (which is different than\n\t\t\t// whether or not it's currently visible).\n\t\t\tthis._wasShown = true;\n\n\t\t\tif(this._needLayout){\n\t\t\t\t// If a layout has been scheduled for when we become visible, do it now\n\t\t\t\tthis._layout(this._changeSize, this._resultSize);\n\t\t\t}\n\n\t\t\tthis.inherited(arguments);\n\t\t}\n\t});\n});\n","define([\n\t\"dojo/_base/array\", // array.filter array.forEach\n\t\"dojo/dom-class\", // domClass.add domClass.remove\n\t\"dojo/dom-geometry\", // domGeometry.marginBox\n\t\"dojo/dom-style\", // domStyle.getComputedStyle\n\t\"dojo/_base/lang\" // lang.mixin, lang.setObject\n], function(array, domClass, domGeometry, domStyle, lang){\n\n\t// module:\n\t//\t\tdijit/layout/utils\n\n\tfunction capitalize(word){\n\t\treturn word.substring(0,1).toUpperCase() + word.substring(1);\n\t}\n\n\tfunction size(widget, dim){\n\t\t// size the child\n\t\tvar newSize = widget.resize ? widget.resize(dim) : domGeometry.setMarginBox(widget.domNode, dim);\n\n\t\t// record child's size\n\t\tif(newSize){\n\t\t\t// if the child returned it's new size then use that\n\t\t\tlang.mixin(widget, newSize);\n\t\t}else{\n\t\t\t// otherwise, call getMarginBox(), but favor our own numbers when we have them.\n\t\t\t// the browser lies sometimes\n\t\t\tlang.mixin(widget, domGeometry.getMarginBox(widget.domNode));\n\t\t\tlang.mixin(widget, dim);\n\t\t}\n\t}\n\n\tvar utils = {\n\t\t// summary:\n\t\t//\t\tUtility functions for doing layout\n\n\t\tmarginBox2contentBox: function(/*DomNode*/ node, /*Object*/ mb){\n\t\t\t// summary:\n\t\t\t//\t\tGiven the margin-box size of a node, return its content box size.\n\t\t\t//\t\tFunctions like domGeometry.contentBox() but is more reliable since it doesn't have\n\t\t\t//\t\tto wait for the browser to compute sizes.\n\t\t\tvar cs = domStyle.getComputedStyle(node);\n\t\t\tvar me = domGeometry.getMarginExtents(node, cs);\n\t\t\tvar pb = domGeometry.getPadBorderExtents(node, cs);\n\t\t\treturn {\n\t\t\t\tl: domStyle.toPixelValue(node, cs.paddingLeft),\n\t\t\t\tt: domStyle.toPixelValue(node, cs.paddingTop),\n\t\t\t\tw: mb.w - (me.w + pb.w),\n\t\t\t\th: mb.h - (me.h + pb.h)\n\t\t\t};\n\t\t},\n\n\n\t\tlayoutChildren: function(/*DomNode*/ container, /*Object*/ dim, /*Widget[]*/ children,\n\t\t\t\t/*String?*/ changedRegionId, /*Number?*/ changedRegionSize){\n\t\t\t// summary:\n\t\t\t//\t\tLayout a bunch of child dom nodes within a parent dom node\n\t\t\t// container:\n\t\t\t//\t\tparent node\n\t\t\t// dim:\n\t\t\t//\t\t{l, t, w, h} object specifying dimensions of container into which to place children\n\t\t\t// children:\n\t\t\t//\t\tAn array of Widgets or at least objects containing:\n\t\t\t//\n\t\t\t//\t\t- domNode: pointer to DOM node to position\n\t\t\t//\t\t- region or layoutAlign: position to place DOM node\n\t\t\t//\t\t- resize(): (optional) method to set size of node\n\t\t\t//\t\t- id: (optional) Id of widgets, referenced from resize object, below.\n\t\t\t//\n\t\t\t//\t\tThe widgets in this array should be ordered according to how they should be laid out\n\t\t\t//\t\t(each element will be processed in order, and take up as much remaining space as needed),\n\t\t\t//\t\twith the center widget last.\n\t\t\t// changedRegionId:\n\t\t\t//\t\tIf specified, the slider for the region with the specified id has been dragged, and thus\n\t\t\t//\t\tthe region's height or width should be adjusted according to changedRegionSize\n\t\t\t// changedRegionSize:\n\t\t\t//\t\tSee changedRegionId.\n\n\t\t\t// copy dim because we are going to modify it\n\t\t\tdim = lang.mixin({}, dim);\n\n\t\t\tdomClass.add(container, \"dijitLayoutContainer\");\n\n\t\t\t// Move \"client\" elements to the end of the array for layout. a11y dictates that the author\n\t\t\t// needs to be able to put them in the document in tab-order, but this algorithm requires that\n\t\t\t// client be last. TODO: remove for 2.0, all dijit client code already sends children as last item.\n\t\t\tchildren = array.filter(children, function(item){ return item.region != \"center\" && item.layoutAlign != \"client\"; })\n\t\t\t\t.concat(array.filter(children, function(item){ return item.region == \"center\" || item.layoutAlign == \"client\"; }));\n\n\t\t\t// set positions/sizes\n\t\t\tarray.forEach(children, function(child){\n\t\t\t\tvar elm = child.domNode,\n\t\t\t\t\tpos = (child.region || child.layoutAlign);\n\t\t\t\tif(!pos){\n\t\t\t\t\tthrow new Error(\"No region setting for \" + child.id)\n\t\t\t\t}\n\n\t\t\t\t// set elem to upper left corner of unused space; may move it later\n\t\t\t\tvar elmStyle = elm.style;\n\t\t\t\telmStyle.left = dim.l+\"px\";\n\t\t\t\telmStyle.top = dim.t+\"px\";\n\t\t\t\telmStyle.position = \"absolute\";\n\n\t\t\t\tdomClass.add(elm, \"dijitAlign\" + capitalize(pos));\n\n\t\t\t\t// Size adjustments to make to this child widget\n\t\t\t\tvar sizeSetting = {};\n\n\t\t\t\t// Check for optional size adjustment due to splitter drag (height adjustment for top/bottom align\n\t\t\t\t// panes and width adjustment for left/right align panes.\n\t\t\t\tif(changedRegionId && changedRegionId == child.id){\n\t\t\t\t\tsizeSetting[child.region == \"top\" || child.region == \"bottom\" ? \"h\" : \"w\"] = changedRegionSize;\n\t\t\t\t}\n\n\t\t\t\tif(pos == \"leading\"){\n\t\t\t\t\tpos = child.isLeftToRight() ? \"left\" : \"right\";\n\t\t\t\t}\n\t\t\t\tif(pos == \"trailing\"){\n\t\t\t\t\tpos = child.isLeftToRight() ? \"right\" : \"left\";\n\t\t\t\t}\n\n\t\t\t\t// set size && adjust record of remaining space.\n\t\t\t\t// note that setting the width of a <div> may affect its height.\n\t\t\t\tif(pos == \"top\" || pos == \"bottom\"){\n\t\t\t\t\tsizeSetting.w = dim.w;\n\t\t\t\t\tsize(child, sizeSetting);\n\t\t\t\t\tdim.h -= child.h;\n\t\t\t\t\tif(pos == \"top\"){\n\t\t\t\t\t\tdim.t += child.h;\n\t\t\t\t\t}else{\n\t\t\t\t\t\telmStyle.top = dim.t + dim.h + \"px\";\n\t\t\t\t\t}\n\t\t\t\t}else if(pos == \"left\" || pos == \"right\"){\n\t\t\t\t\tsizeSetting.h = dim.h;\n\t\t\t\t\tsize(child, sizeSetting);\n\t\t\t\t\tdim.w -= child.w;\n\t\t\t\t\tif(pos == \"left\"){\n\t\t\t\t\t\tdim.l += child.w;\n\t\t\t\t\t}else{\n\t\t\t\t\t\telmStyle.left = dim.l + dim.w + \"px\";\n\t\t\t\t\t}\n\t\t\t\t}else if(pos == \"client\" || pos == \"center\"){\n\t\t\t\t\tsize(child, dim);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\tlang.setObject(\"dijit.layout.utils\", utils);\t// remove for 2.0\n\n\treturn utils;\n});\n","define([\n\t\"dojo/_base/kernel\"\n], function(dojo){\n\t// module:\n\t//\t\tdijit/main\n\n/*=====\nreturn {\n\t// summary:\n\t//\t\tThe dijit package main module.\n\t//\t\tDeprecated. Users should access individual modules (ex: dijit/registry) directly.\n};\n=====*/\n\n\treturn dojo.dijit;\n});\n","/*\n * This module was modified by dojo-webpack-plugin to disable some locales\n * that were excluded by the plugin's 'locales' option\n */\ndefine(({'root':({'buttonOk':'OK','buttonCancel':'Cancel','buttonSave':'Save','itemClose':'Close'}),'bs':false,'mk':false,'sr':false,'zh':false,'zh-tw':false,'vi':true,'uk':false,'tr':false,'th':false,'sv':false,'sl':false,'sk':false,'ru':false,'ro':false,'pt':false,'pt-pt':false,'pl':false,'nl':false,'nb':false,'lv':false,'lt':false,'ko':false,'kk':false,'ja':false,'it':false,'id':false,'hu':false,'hr':false,'hi':false,'he':false,'fr':false,'fi':false,'eu':false,'et':false,'es':false,'el':false,'de':false,'da':false,'cs':false,'ca':false,'bg':false,'az':false,'ar':false}))","/*\n * This module was modified by dojo-webpack-plugin to disable some locales\n * that were excluded by the plugin's 'locales' option\n */\ndefine(({'root':({'loadingState':'Loading...','errorState':'Sorry, an error occurred'}),'bs':false,'mk':false,'sr':false,'zh':false,'zh-tw':false,'vi':true,'uk':false,'tr':false,'th':false,'sv':false,'sl':false,'sk':false,'ru':false,'ro':false,'pt':false,'pt-pt':false,'pl':false,'nl':false,'nb':false,'lv':false,'lt':false,'ko':false,'kk':false,'ja':false,'it':false,'id':false,'hu':false,'hr':false,'hi':false,'he':false,'fr':false,'fi':false,'eu':false,'et':false,'es':false,'el':false,'de':false,'da':false,'cs':false,'ca':false,'bg':false,'az':false,'ar':false}))","define(\n//begin v1.x content\n({\n\tbuttonOk: \"OK\",\n\tbuttonCancel: \"Hủy\",\n\tbuttonSave: \"Lưu\",\n\titemClose: \"Đóng\"\n})\n//end v1.x content\n);\n","define(\n//begin v1.x content\n({\n\tloadingState: \"Đang tải...\",\n\terrorState: \"Rất tiếc, đã xảy ra lỗi\"\n})\n//end v1.x content\n);\n","define([\n\t\"dojo/_base/array\", // array.forEach array.map array.some\n\t\"dojo/dom-geometry\", // domGeometry.position\n\t\"dojo/dom-style\", // domStyle.getComputedStyle\n\t\"dojo/_base/kernel\", // kernel.deprecated\n\t\"dojo/_base/window\", // win.body\n\t\"./Viewport\", // getEffectiveBox\n\t\"./main\"\t// dijit (defining dijit.place to match API doc)\n], function(array, domGeometry, domStyle, kernel, win, Viewport, dijit){\n\n\t// module:\n\t//\t\tdijit/place\n\n\n\tfunction _place(/*DomNode*/ node, choices, layoutNode, aroundNodeCoords){\n\t\t// summary:\n\t\t//\t\tGiven a list of spots to put node, put it at the first spot where it fits,\n\t\t//\t\tof if it doesn't fit anywhere then the place with the least overflow\n\t\t// choices: Array\n\t\t//\t\tArray of elements like: {corner: 'TL', pos: {x: 10, y: 20} }\n\t\t//\t\tAbove example says to put the top-left corner of the node at (10,20)\n\t\t// layoutNode: Function(node, aroundNodeCorner, nodeCorner, size)\n\t\t//\t\tfor things like tooltip, they are displayed differently (and have different dimensions)\n\t\t//\t\tbased on their orientation relative to the parent.\t This adjusts the popup based on orientation.\n\t\t//\t\tIt also passes in the available size for the popup, which is useful for tooltips to\n\t\t//\t\ttell them that their width is limited to a certain amount.\t layoutNode() may return a value expressing\n\t\t//\t\thow much the popup had to be modified to fit into the available space.\t This is used to determine\n\t\t//\t\twhat the best placement is.\n\t\t// aroundNodeCoords: Object\n\t\t//\t\tSize of aroundNode, ex: {w: 200, h: 50}\n\n\t\t// get {x: 10, y: 10, w: 100, h:100} type obj representing position of\n\t\t// viewport over document\n\t\tvar view = Viewport.getEffectiveBox(node.ownerDocument);\n\n\t\t// This won't work if the node is inside a <div style=\"position: relative\">,\n\t\t// so reattach it to <body>.\t (Otherwise, the positioning will be wrong\n\t\t// and also it might get cutoff.)\n\t\tif(!node.parentNode || String(node.parentNode.tagName).toLowerCase() != \"body\"){\n\t\t\twin.body(node.ownerDocument).appendChild(node);\n\t\t}\n\n\t\tvar best = null;\n\t\tarray.some(choices, function(choice){\n\t\t\tvar corner = choice.corner;\n\t\t\tvar pos = choice.pos;\n\t\t\tvar overflow = 0;\n\n\t\t\t// calculate amount of space available given specified position of node\n\t\t\tvar spaceAvailable = {\n\t\t\t\tw: {\n\t\t\t\t\t'L': view.l + view.w - pos.x,\n\t\t\t\t\t'R': pos.x - view.l,\n\t\t\t\t\t'M': view.w\n\t\t\t\t}[corner.charAt(1)],\n\t\t\t\th: {\n\t\t\t\t\t'T': view.t + view.h - pos.y,\n\t\t\t\t\t'B': pos.y - view.t,\n\t\t\t\t\t'M': view.h\n\t\t\t\t}[corner.charAt(0)]\n\t\t\t};\n\n\t\t\t// Clear left/right position settings set earlier so they don't interfere with calculations,\n\t\t\t// specifically when layoutNode() (a.k.a. Tooltip.orient()) measures natural width of Tooltip\n\t\t\tvar s = node.style;\n\t\t\ts.left = s.right = \"auto\";\n\n\t\t\t// configure node to be displayed in given position relative to button\n\t\t\t// (need to do this in order to get an accurate size for the node, because\n\t\t\t// a tooltip's size changes based on position, due to triangle)\n\t\t\tif(layoutNode){\n\t\t\t\tvar res = layoutNode(node, choice.aroundCorner, corner, spaceAvailable, aroundNodeCoords);\n\t\t\t\toverflow = typeof res == \"undefined\" ? 0 : res;\n\t\t\t}\n\n\t\t\t// get node's size\n\t\t\tvar style = node.style;\n\t\t\tvar oldDisplay = style.display;\n\t\t\tvar oldVis = style.visibility;\n\t\t\tif(style.display == \"none\"){\n\t\t\t\tstyle.visibility = \"hidden\";\n\t\t\t\tstyle.display = \"\";\n\t\t\t}\n\t\t\tvar bb = domGeometry.position(node);\n\t\t\tstyle.display = oldDisplay;\n\t\t\tstyle.visibility = oldVis;\n\n\t\t\t// coordinates and size of node with specified corner placed at pos,\n\t\t\t// and clipped by viewport\n\t\t\tvar\n\t\t\t\tstartXpos = {\n\t\t\t\t\t'L': pos.x,\n\t\t\t\t\t'R': pos.x - bb.w,\n\t\t\t\t\t'M': Math.max(view.l, Math.min(view.l + view.w, pos.x + (bb.w >> 1)) - bb.w) // M orientation is more flexible\n\t\t\t\t}[corner.charAt(1)],\n\t\t\t\tstartYpos = {\n\t\t\t\t\t'T': pos.y,\n\t\t\t\t\t'B': pos.y - bb.h,\n\t\t\t\t\t'M': Math.max(view.t, Math.min(view.t + view.h, pos.y + (bb.h >> 1)) - bb.h)\n\t\t\t\t}[corner.charAt(0)],\n\t\t\t\tstartX = Math.max(view.l, startXpos),\n\t\t\t\tstartY = Math.max(view.t, startYpos),\n\t\t\t\tendX = Math.min(view.l + view.w, startXpos + bb.w),\n\t\t\t\tendY = Math.min(view.t + view.h, startYpos + bb.h),\n\t\t\t\twidth = endX - startX,\n\t\t\t\theight = endY - startY;\n\n\t\t\toverflow += (bb.w - width) + (bb.h - height);\n\n\t\t\tif(best == null || overflow < best.overflow){\n\t\t\t\tbest = {\n\t\t\t\t\tcorner: corner,\n\t\t\t\t\taroundCorner: choice.aroundCorner,\n\t\t\t\t\tx: startX,\n\t\t\t\t\ty: startY,\n\t\t\t\t\tw: width,\n\t\t\t\t\th: height,\n\t\t\t\t\toverflow: overflow,\n\t\t\t\t\tspaceAvailable: spaceAvailable\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn !overflow;\n\t\t});\n\n\t\t// In case the best position is not the last one we checked, need to call\n\t\t// layoutNode() again.\n\t\tif(best.overflow && layoutNode){\n\t\t\tlayoutNode(node, best.aroundCorner, best.corner, best.spaceAvailable, aroundNodeCoords);\n\t\t}\n\n\t\t// And then position the node. Do this last, after the layoutNode() above\n\t\t// has sized the node, due to browser quirks when the viewport is scrolled\n\t\t// (specifically that a Tooltip will shrink to fit as though the window was\n\t\t// scrolled to the left).\n\n\t\tvar top = best.y,\n\t\t\tside = best.x,\n\t\t\tbody = win.body(node.ownerDocument);\n\n\t\tif(/relative|absolute/.test(domStyle.get(body, \"position\"))){\n\t\t\t// compensate for margin on <body>, see #16148\n\t\t\ttop -= domStyle.get(body, \"marginTop\");\n\t\t\tside -= domStyle.get(body, \"marginLeft\");\n\t\t}\n\n\t\tvar s = node.style;\n\t\ts.top = top + \"px\";\n\t\ts.left = side + \"px\";\n\t\ts.right = \"auto\";\t// needed for FF or else tooltip goes to far left\n\n\t\treturn best;\n\t}\n\n\tvar reverse = {\n\t\t// Map from corner to kitty-corner\n\t\t\"TL\": \"BR\",\n\t\t\"TR\": \"BL\",\n\t\t\"BL\": \"TR\",\n\t\t\"BR\": \"TL\"\n\t};\n\n\tvar place = {\n\t\t// summary:\n\t\t//\t\tCode to place a DOMNode relative to another DOMNode.\n\t\t//\t\tLoad using require([\"dijit/place\"], function(place){ ... }).\n\n\t\tat: function(node, pos, corners, padding, layoutNode){\n\t\t\t// summary:\n\t\t\t//\t\tPositions node kitty-corner to the rectangle centered at (pos.x, pos.y) with width and height of\n\t\t\t//\t\tpadding.x * 2 and padding.y * 2, or zero if padding not specified. Picks first corner in corners[]\n\t\t\t//\t\twhere node is fully visible, or the corner where it's most visible.\n\t\t\t//\n\t\t\t//\t\tNode is assumed to be absolutely or relatively positioned.\n\t\t\t// node: DOMNode\n\t\t\t//\t\tThe node to position\n\t\t\t// pos: dijit/place.__Position\n\t\t\t//\t\tObject like {x: 10, y: 20}\n\t\t\t// corners: String[]\n\t\t\t//\t\tArray of Strings representing order to try corners of the node in, like [\"TR\", \"BL\"].\n\t\t\t//\t\tPossible values are:\n\t\t\t//\n\t\t\t//\t\t- \"BL\" - bottom left\n\t\t\t//\t\t- \"BR\" - bottom right\n\t\t\t//\t\t- \"TL\" - top left\n\t\t\t//\t\t- \"TR\" - top right\n\t\t\t// padding: dijit/place.__Position?\n\t\t\t//\t\tOptional param to set padding, to put some buffer around the element you want to position.\n\t\t\t//\t\tDefaults to zero.\n\t\t\t// layoutNode: Function(node, aroundNodeCorner, nodeCorner)\n\t\t\t//\t\tFor things like tooltip, they are displayed differently (and have different dimensions)\n\t\t\t//\t\tbased on their orientation relative to the parent. This adjusts the popup based on orientation.\n\t\t\t// example:\n\t\t\t//\t\tTry to place node's top right corner at (10,20).\n\t\t\t//\t\tIf that makes node go (partially) off screen, then try placing\n\t\t\t//\t\tbottom left corner at (10,20).\n\t\t\t//\t|\tplace(node, {x: 10, y: 20}, [\"TR\", \"BL\"])\n\t\t\tvar choices = array.map(corners, function(corner){\n\t\t\t\tvar c = {\n\t\t\t\t\tcorner: corner,\n\t\t\t\t\taroundCorner: reverse[corner],\t// so TooltipDialog.orient() gets aroundCorner argument set\n\t\t\t\t\tpos: {x: pos.x,y: pos.y}\n\t\t\t\t};\n\t\t\t\tif(padding){\n\t\t\t\t\tc.pos.x += corner.charAt(1) == 'L' ? padding.x : -padding.x;\n\t\t\t\t\tc.pos.y += corner.charAt(0) == 'T' ? padding.y : -padding.y;\n\t\t\t\t}\n\t\t\t\treturn c;\n\t\t\t});\n\n\t\t\treturn _place(node, choices, layoutNode);\n\t\t},\n\n\t\taround: function(\n\t\t\t/*DomNode*/\t\tnode,\n\t\t\t/*DomNode|dijit/place.__Rectangle*/ anchor,\n\t\t\t/*String[]*/\tpositions,\n\t\t\t/*Boolean*/\t\tleftToRight,\n\t\t\t/*Function?*/\tlayoutNode){\n\n\t\t\t// summary:\n\t\t\t//\t\tPosition node adjacent or kitty-corner to anchor\n\t\t\t//\t\tsuch that it's fully visible in viewport.\n\t\t\t// description:\n\t\t\t//\t\tPlace node such that corner of node touches a corner of\n\t\t\t//\t\taroundNode, and that node is fully visible.\n\t\t\t// anchor:\n\t\t\t//\t\tEither a DOMNode or a rectangle (object with x, y, width, height).\n\t\t\t// positions:\n\t\t\t//\t\tOrdered list of positions to try matching up.\n\t\t\t//\n\t\t\t//\t\t- before: places drop down to the left of the anchor node/widget, or to the right in the case\n\t\t\t//\t\t\tof RTL scripts like Hebrew and Arabic; aligns either the top of the drop down\n\t\t\t//\t\t\twith the top of the anchor, or the bottom of the drop down with bottom of the anchor.\n\t\t\t//\t\t- after: places drop down to the right of the anchor node/widget, or to the left in the case\n\t\t\t//\t\t\tof RTL scripts like Hebrew and Arabic; aligns either the top of the drop down\n\t\t\t//\t\t\twith the top of the anchor, or the bottom of the drop down with bottom of the anchor.\n\t\t\t//\t\t- before-centered: centers drop down to the left of the anchor node/widget, or to the right\n\t\t\t//\t\t\tin the case of RTL scripts like Hebrew and Arabic\n\t\t\t//\t\t- after-centered: centers drop down to the right of the anchor node/widget, or to the left\n\t\t\t//\t\t\tin the case of RTL scripts like Hebrew and Arabic\n\t\t\t//\t\t- above-centered: drop down is centered above anchor node\n\t\t\t//\t\t- above: drop down goes above anchor node, left sides aligned\n\t\t\t//\t\t- above-alt: drop down goes above anchor node, right sides aligned\n\t\t\t//\t\t- below-centered: drop down is centered above anchor node\n\t\t\t//\t\t- below: drop down goes below anchor node\n\t\t\t//\t\t- below-alt: drop down goes below anchor node, right sides aligned\n\t\t\t// layoutNode: Function(node, aroundNodeCorner, nodeCorner)\n\t\t\t//\t\tFor things like tooltip, they are displayed differently (and have different dimensions)\n\t\t\t//\t\tbased on their orientation relative to the parent.\t This adjusts the popup based on orientation.\n\t\t\t// leftToRight:\n\t\t\t//\t\tTrue if widget is LTR, false if widget is RTL. Affects the behavior of \"above\" and \"below\"\n\t\t\t//\t\tpositions slightly.\n\t\t\t// example:\n\t\t\t//\t|\tplaceAroundNode(node, aroundNode, ['below', 'above-alt']);\n\t\t\t//\t\tThis will try to position node such that node's top-left corner is at the same position\n\t\t\t//\t\tas the bottom left corner of the aroundNode (ie, put node below\n\t\t\t//\t\taroundNode, with left edges aligned).\tIf that fails it will try to put\n\t\t\t//\t\tthe bottom-right corner of node where the top right corner of aroundNode is\n\t\t\t//\t\t(ie, put node above aroundNode, with right edges aligned)\n\t\t\t//\n\n\t\t\t// If around is a DOMNode (or DOMNode id), convert to coordinates.\n\t\t\tvar aroundNodePos;\n\t\t\tif(typeof anchor == \"string\" || \"offsetWidth\" in anchor || \"ownerSVGElement\" in anchor){\n\t\t\t\taroundNodePos = domGeometry.position(anchor, true);\n\n\t\t\t\t// For above and below dropdowns, subtract width of border so that popup and aroundNode borders\n\t\t\t\t// overlap, preventing a double-border effect. Unfortunately, difficult to measure the border\n\t\t\t\t// width of either anchor or popup because in both cases the border may be on an inner node.\n\t\t\t\tif(/^(above|below)/.test(positions[0])){\n\t\t\t\t\tvar anchorBorder = domGeometry.getBorderExtents(anchor),\n\t\t\t\t\t\tanchorChildBorder = anchor.firstChild ? domGeometry.getBorderExtents(anchor.firstChild) : {t:0,l:0,b:0,r:0},\n\t\t\t\t\t\tnodeBorder = domGeometry.getBorderExtents(node),\n\t\t\t\t\t\tnodeChildBorder = node.firstChild ? domGeometry.getBorderExtents(node.firstChild) : {t:0,l:0,b:0,r:0};\n\t\t\t\t\taroundNodePos.y += Math.min(anchorBorder.t + anchorChildBorder.t, nodeBorder.t + nodeChildBorder.t);\n\t\t\t\t\taroundNodePos.h -= Math.min(anchorBorder.t + anchorChildBorder.t, nodeBorder.t+ nodeChildBorder.t) +\n\t\t\t\t\t\tMath.min(anchorBorder.b + anchorChildBorder.b, nodeBorder.b + nodeChildBorder.b);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\taroundNodePos = anchor;\n\t\t\t}\n\n\t\t\t// Compute position and size of visible part of anchor (it may be partially hidden by ancestor nodes w/scrollbars)\n\t\t\tif(anchor.parentNode){\n\t\t\t\t// ignore nodes between position:relative and position:absolute\n\t\t\t\tvar sawPosAbsolute = domStyle.getComputedStyle(anchor).position == \"absolute\";\n\t\t\t\tvar parent = anchor.parentNode;\n\t\t\t\twhile(parent && parent.nodeType == 1 && parent.nodeName != \"BODY\"){ //ignoring the body will help performance\n\t\t\t\t\tvar parentPos = domGeometry.position(parent, true),\n\t\t\t\t\t\tpcs = domStyle.getComputedStyle(parent);\n\t\t\t\t\tif(/relative|absolute/.test(pcs.position)){\n\t\t\t\t\t\tsawPosAbsolute = false;\n\t\t\t\t\t}\n\t\t\t\t\tif(!sawPosAbsolute && /hidden|auto|scroll/.test(pcs.overflow)){\n\t\t\t\t\t\tvar bottomYCoord = Math.min(aroundNodePos.y + aroundNodePos.h, parentPos.y + parentPos.h);\n\t\t\t\t\t\tvar rightXCoord = Math.min(aroundNodePos.x + aroundNodePos.w, parentPos.x + parentPos.w);\n\t\t\t\t\t\taroundNodePos.x = Math.max(aroundNodePos.x, parentPos.x);\n\t\t\t\t\t\taroundNodePos.y = Math.max(aroundNodePos.y, parentPos.y);\n\t\t\t\t\t\taroundNodePos.h = bottomYCoord - aroundNodePos.y;\n\t\t\t\t\t\taroundNodePos.w = rightXCoord - aroundNodePos.x;\n\t\t\t\t\t}\n\t\t\t\t\tif(pcs.position == \"absolute\"){\n\t\t\t\t\t\tsawPosAbsolute = true;\n\t\t\t\t\t}\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar x = aroundNodePos.x,\n\t\t\t\ty = aroundNodePos.y,\n\t\t\t\twidth = \"w\" in aroundNodePos ? aroundNodePos.w : (aroundNodePos.w = aroundNodePos.width),\n\t\t\t\theight = \"h\" in aroundNodePos ? aroundNodePos.h : (kernel.deprecated(\"place.around: dijit/place.__Rectangle: { x:\"+x+\", y:\"+y+\", height:\"+aroundNodePos.height+\", width:\"+width+\" } has been deprecated. Please use { x:\"+x+\", y:\"+y+\", h:\"+aroundNodePos.height+\", w:\"+width+\" }\", \"\", \"2.0\"), aroundNodePos.h = aroundNodePos.height);\n\n\t\t\t// Convert positions arguments into choices argument for _place()\n\t\t\tvar choices = [];\n\t\t\tfunction push(aroundCorner, corner){\n\t\t\t\tchoices.push({\n\t\t\t\t\taroundCorner: aroundCorner,\n\t\t\t\t\tcorner: corner,\n\t\t\t\t\tpos: {\n\t\t\t\t\t\tx: {\n\t\t\t\t\t\t\t'L': x,\n\t\t\t\t\t\t\t'R': x + width,\n\t\t\t\t\t\t\t'M': x + (width >> 1)\n\t\t\t\t\t\t}[aroundCorner.charAt(1)],\n\t\t\t\t\t\ty: {\n\t\t\t\t\t\t\t'T': y,\n\t\t\t\t\t\t\t'B': y + height,\n\t\t\t\t\t\t\t'M': y + (height >> 1)\n\t\t\t\t\t\t}[aroundCorner.charAt(0)]\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t\tarray.forEach(positions, function(pos){\n\t\t\t\tvar ltr = leftToRight;\n\t\t\t\tswitch(pos){\n\t\t\t\t\tcase \"above-centered\":\n\t\t\t\t\t\tpush(\"TM\", \"BM\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"below-centered\":\n\t\t\t\t\t\tpush(\"BM\", \"TM\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"after-centered\":\n\t\t\t\t\t\tltr = !ltr;\n\t\t\t\t\t\t// fall through\n\t\t\t\t\tcase \"before-centered\":\n\t\t\t\t\t\tpush(ltr ? \"ML\" : \"MR\", ltr ? \"MR\" : \"ML\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"after\":\n\t\t\t\t\t\tltr = !ltr;\n\t\t\t\t\t\t// fall through\n\t\t\t\t\tcase \"before\":\n\t\t\t\t\t\tpush(ltr ? \"TL\" : \"TR\", ltr ? \"TR\" : \"TL\");\n\t\t\t\t\t\tpush(ltr ? \"BL\" : \"BR\", ltr ? \"BR\" : \"BL\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"below-alt\":\n\t\t\t\t\t\tltr = !ltr;\n\t\t\t\t\t\t// fall through\n\t\t\t\t\tcase \"below\":\n\t\t\t\t\t\t// first try to align left borders, next try to align right borders (or reverse for RTL mode)\n\t\t\t\t\t\tpush(ltr ? \"BL\" : \"BR\", ltr ? \"TL\" : \"TR\");\n\t\t\t\t\t\tpush(ltr ? \"BR\" : \"BL\", ltr ? \"TR\" : \"TL\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"above-alt\":\n\t\t\t\t\t\tltr = !ltr;\n\t\t\t\t\t\t// fall through\n\t\t\t\t\tcase \"above\":\n\t\t\t\t\t\t// first try to align left borders, next try to align right borders (or reverse for RTL mode)\n\t\t\t\t\t\tpush(ltr ? \"TL\" : \"TR\", ltr ? \"BL\" : \"BR\");\n\t\t\t\t\t\tpush(ltr ? \"TR\" : \"TL\", ltr ? \"BR\" : \"BL\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t// To assist dijit/_base/place, accept arguments of type {aroundCorner: \"BL\", corner: \"TL\"}.\n\t\t\t\t\t\t// Not meant to be used directly. Remove for 2.0.\n\t\t\t\t\t\tpush(pos.aroundCorner, pos.corner);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar position = _place(node, choices, layoutNode, {w: width, h: height});\n\t\t\tposition.aroundNodePos = aroundNodePos;\n\n\t\t\treturn position;\n\t\t}\n\t};\n\n\t/*=====\n\tplace.__Position = {\n\t\t// x: Integer\n\t\t//\t\thorizontal coordinate in pixels, relative to document body\n\t\t// y: Integer\n\t\t//\t\tvertical coordinate in pixels, relative to document body\n\t};\n\tplace.__Rectangle = {\n\t\t// x: Integer\n\t\t//\t\thorizontal offset in pixels, relative to document body\n\t\t// y: Integer\n\t\t//\t\tvertical offset in pixels, relative to document body\n\t\t// w: Integer\n\t\t//\t\twidth in pixels. Can also be specified as \"width\" for backwards-compatibility.\n\t\t// h: Integer\n\t\t//\t\theight in pixels. Can also be specified as \"height\" for backwards-compatibility.\n\t};\n\t=====*/\n\n\treturn dijit.place = place;\t// setting dijit.place for back-compat, remove for 2.0\n});\n","define([\n\t\"dojo/_base/array\", // array.forEach array.map\n\t\"dojo/_base/window\", // win.body\n\t\"./main\"\t// dijit._scopeName\n], function(array, win, dijit){\n\n\t// module:\n\t//\t\tdijit/registry\n\n\tvar _widgetTypeCtr = {}, hash = {};\n\n\tvar registry = {\n\t\t// summary:\n\t\t//\t\tRegistry of existing widget on page, plus some utility methods.\n\n\t\t// length: Number\n\t\t//\t\tNumber of registered widgets\n\t\tlength: 0,\n\n\t\tadd: function(widget){\n\t\t\t// summary:\n\t\t\t//\t\tAdd a widget to the registry. If a duplicate ID is detected, a error is thrown.\n\t\t\t// widget: dijit/_WidgetBase\n\t\t\t//\t\tAny dijit/_WidgetBase subclass.\n\t\t\tif(hash[widget.id]){\n\t\t\t\tthrow new Error(\"Tried to register widget with id==\" + widget.id + \" but that id is already registered\");\n\t\t\t}\n\t\t\thash[widget.id] = widget;\n\t\t\tthis.length++;\n\t\t},\n\n\t\tremove: function(/*String*/ id){\n\t\t\t// summary:\n\t\t\t//\t\tRemove a widget from the registry. Does not destroy the widget; simply\n\t\t\t//\t\tremoves the reference.\n\t\t\tif(hash[id]){\n\t\t\t\tdelete hash[id];\n\t\t\t\tthis.length--;\n\t\t\t}\n\t\t},\n\n\t\tbyId: function(/*String|Widget*/ id){\n\t\t\t// summary:\n\t\t\t//\t\tFind a widget by it's id.\n\t\t\t//\t\tIf passed a widget then just returns the widget.\n\t\t\treturn typeof id == \"string\" ? hash[id] : id;\t// dijit/_WidgetBase\n\t\t},\n\n\t\tbyNode: function(/*DOMNode*/ node){\n\t\t\t// summary:\n\t\t\t//\t\tReturns the widget corresponding to the given DOMNode\n\t\t\treturn hash[node.getAttribute(\"widgetId\")]; // dijit/_WidgetBase\n\t\t},\n\n\t\ttoArray: function(){\n\t\t\t// summary:\n\t\t\t//\t\tConvert registry into a true Array\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\tWork with the widget .domNodes in a real Array\n\t\t\t//\t\t|\tarray.map(registry.toArray(), function(w){ return w.domNode; });\n\n\t\t\tvar ar = [];\n\t\t\tfor(var id in hash){\n\t\t\t\tar.push(hash[id]);\n\t\t\t}\n\t\t\treturn ar;\t// dijit/_WidgetBase[]\n\t\t},\n\n\t\tgetUniqueId: function(/*String*/widgetType){\n\t\t\t// summary:\n\t\t\t//\t\tGenerates a unique id for a given widgetType\n\n\t\t\tvar id;\n\t\t\tdo{\n\t\t\t\tid = widgetType + \"_\" +\n\t\t\t\t\t(widgetType in _widgetTypeCtr ?\n\t\t\t\t\t\t++_widgetTypeCtr[widgetType] : _widgetTypeCtr[widgetType] = 0);\n\t\t\t}while(hash[id]);\n\t\t\treturn dijit._scopeName == \"dijit\" ? id : dijit._scopeName + \"_\" + id; // String\n\t\t},\n\n\t\tfindWidgets: function(root, skipNode){\n\t\t\t// summary:\n\t\t\t//\t\tSearch subtree under root returning widgets found.\n\t\t\t//\t\tDoesn't search for nested widgets (ie, widgets inside other widgets).\n\t\t\t// root: DOMNode\n\t\t\t//\t\tNode to search under.\n\t\t\t// skipNode: DOMNode\n\t\t\t//\t\tIf specified, don't search beneath this node (usually containerNode).\n\n\t\t\tvar outAry = [];\n\n\t\t\tfunction getChildrenHelper(root){\n\t\t\t\tfor(var node = root.firstChild; node; node = node.nextSibling){\n\t\t\t\t\tif(node.nodeType == 1){\n\t\t\t\t\t\tvar widgetId = node.getAttribute(\"widgetId\");\n\t\t\t\t\t\tif(widgetId){\n\t\t\t\t\t\t\tvar widget = hash[widgetId];\n\t\t\t\t\t\t\tif(widget){\t// may be null on page w/multiple dojo's loaded\n\t\t\t\t\t\t\t\toutAry.push(widget);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else if(node !== skipNode){\n\t\t\t\t\t\t\tgetChildrenHelper(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgetChildrenHelper(root);\n\t\t\treturn outAry;\n\t\t},\n\n\t\t_destroyAll: function(){\n\t\t\t// summary:\n\t\t\t//\t\tCode to destroy all widgets and do other cleanup on page unload\n\n\t\t\t// Clean up focus manager lingering references to widgets and nodes\n\t\t\tdijit._curFocus = null;\n\t\t\tdijit._prevFocus = null;\n\t\t\tdijit._activeStack = [];\n\n\t\t\t// Destroy all the widgets, top down\n\t\t\tarray.forEach(registry.findWidgets(win.body()), function(widget){\n\t\t\t\t// Avoid double destroy of widgets like Menu that are attached to <body>\n\t\t\t\t// even though they are logically children of other widgets.\n\t\t\t\tif(!widget._destroyed){\n\t\t\t\t\tif(widget.destroyRecursive){\n\t\t\t\t\t\twidget.destroyRecursive();\n\t\t\t\t\t}else if(widget.destroy){\n\t\t\t\t\t\twidget.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tgetEnclosingWidget: function(/*DOMNode*/ node){\n\t\t\t// summary:\n\t\t\t//\t\tReturns the widget whose DOM tree contains the specified DOMNode, or null if\n\t\t\t//\t\tthe node is not contained within the DOM tree of any widget\n\t\t\twhile(node){\n\t\t\t\tvar id = node.nodeType == 1 && node.getAttribute(\"widgetId\");\n\t\t\t\tif(id){\n\t\t\t\t\treturn hash[id];\n\t\t\t\t}\n\t\t\t\tnode = node.parentNode;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\n\t\t// In case someone needs to access hash.\n\t\t// Actually, this is accessed from WidgetSet back-compatibility code\n\t\t_hash: hash\n\t};\n\n\tdijit.registry = registry;\n\n\treturn registry;\n});\n","define([\"dojo/i18n\", \"C:/Jenkins/workspace/_chinh-vien-thong_web-gis_master/node_modules/dojo-webpack-plugin/loaders/dojo/runner.js\"\n,\"esri/identity/nls/vi/identity\"\n,\"C:/Jenkins/workspace/_chinh-vien-thong_web-gis_master/node_modules/arcgis-js-api/identity/nls/identity.js?absMid=esri/identity/nls/identity\"\n], function(loader, runner) {\n return runner(loader, \"esri/identity/nls/identity\", __webpack_require__.dj.c(), false);\n});","define([\"dojo/i18n\", \"C:/Jenkins/workspace/_chinh-vien-thong_web-gis_master/node_modules/dojo-webpack-plugin/loaders/dojo/runner.js\"\n,\"dijit/form/nls/vi/validate\"\n,\"C:/Jenkins/workspace/_chinh-vien-thong_web-gis_master/node_modules/dijit/form/nls/validate.js?absMid=dijit/form/nls/validate\"\n], function(loader, runner) {\n return runner(loader, \"dijit/form/nls/validate\", __webpack_require__.dj.c(), false);\n});","define([\"dojo/i18n\", \"C:/Jenkins/workspace/_chinh-vien-thong_web-gis_master/node_modules/dojo-webpack-plugin/loaders/dojo/runner.js\"\n,\"dijit/nls/vi/common\"\n,\"C:/Jenkins/workspace/_chinh-vien-thong_web-gis_master/node_modules/dijit/nls/common.js?absMid=dijit/nls/common\"\n], function(loader, runner) {\n return runner(loader, \"dijit/nls/common\", __webpack_require__.dj.c(), false);\n});","define([\"dojo/i18n\", \"C:/Jenkins/workspace/_chinh-vien-thong_web-gis_master/node_modules/dojo-webpack-plugin/loaders/dojo/runner.js\"\n,\"dijit/nls/vi/loading\"\n,\"C:/Jenkins/workspace/_chinh-vien-thong_web-gis_master/node_modules/dijit/nls/loading.js?absMid=dijit/nls/loading\"\n], function(loader, runner) {\n return runner(loader, \"dijit/nls/loading\", __webpack_require__.dj.c(), false);\n});","module.exports = \"<span class=\\\"dijit dijitReset dijitInline\\\" role=\\\"presentation\\\"\\n\\t><span class=\\\"dijitReset dijitInline dijitButtonNode\\\"\\n\\t\\tdata-dojo-attach-event=\\\"ondijitclick:__onClick\\\" role=\\\"presentation\\\"\\n\\t\\t><span class=\\\"dijitReset dijitStretch dijitButtonContents\\\"\\n\\t\\t\\tdata-dojo-attach-point=\\\"titleNode,focusNode\\\"\\n\\t\\t\\trole=\\\"button\\\" aria-labelledby=\\\"${id}_label\\\"\\n\\t\\t\\t><span class=\\\"dijitReset dijitInline dijitIcon\\\" data-dojo-attach-point=\\\"iconNode\\\"></span\\n\\t\\t\\t><span class=\\\"dijitReset dijitToggleButtonIconChar\\\">●</span\\n\\t\\t\\t><span class=\\\"dijitReset dijitInline dijitButtonText\\\"\\n\\t\\t\\t\\tid=\\\"${id}_label\\\"\\n\\t\\t\\t\\tdata-dojo-attach-point=\\\"containerNode\\\"\\n\\t\\t\\t></span\\n\\t\\t></span\\n\\t></span\\n\\t><input ${!nameAttrSetting} type=\\\"${type}\\\" value=\\\"${value}\\\" class=\\\"dijitOffScreen\\\"\\n\\t\\tdata-dojo-attach-event=\\\"onclick:_onClick\\\"\\n\\t\\ttabIndex=\\\"-1\\\" aria-hidden=\\\"true\\\" data-dojo-attach-point=\\\"valueNode\\\"\\n/></span>\\n\"","module.exports = \"<div class=\\\"dijit dijitReset dijitInline dijitLeft\\\" id=\\\"widget_${id}\\\" role=\\\"presentation\\\"\\n\\t><div class=\\\"dijitReset dijitInputField dijitInputContainer\\\"\\n\\t\\t><input class=\\\"dijitReset dijitInputInner\\\" data-dojo-attach-point='textbox,focusNode' autocomplete=\\\"off\\\"\\n\\t\\t\\t${!nameAttrSetting} type='${type}'\\n\\t/></div\\n></div>\\n\"","module.exports = \"<div class=\\\"dijit dijitReset dijitInline dijitLeft\\\"\\n\\tid=\\\"widget_${id}\\\" role=\\\"presentation\\\"\\n\\t><div class='dijitReset dijitValidationContainer'\\n\\t\\t><input class=\\\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\\\" value=\\\"Χ \\\" type=\\\"text\\\" tabIndex=\\\"-1\\\" readonly=\\\"readonly\\\" role=\\\"presentation\\\"\\n\\t/></div\\n\\t><div class=\\\"dijitReset dijitInputField dijitInputContainer\\\"\\n\\t\\t><input class=\\\"dijitReset dijitInputInner\\\" data-dojo-attach-point='textbox,focusNode' autocomplete=\\\"off\\\"\\n\\t\\t\\t${!nameAttrSetting} type='${type}'\\n\\t/></div\\n></div>\\n\"","module.exports = \"<div class=\\\"dijitDialog\\\" role=\\\"dialog\\\" aria-labelledby=\\\"${id}_title\\\">\\n\\t<div data-dojo-attach-point=\\\"titleBar\\\" class=\\\"dijitDialogTitleBar\\\">\\n\\t\\t<span data-dojo-attach-point=\\\"titleNode\\\" class=\\\"dijitDialogTitle\\\" id=\\\"${id}_title\\\"\\n\\t\\t\\t\\trole=\\\"heading\\\" level=\\\"1\\\"></span>\\n\\t\\t<span data-dojo-attach-point=\\\"closeButtonNode\\\" class=\\\"dijitDialogCloseIcon\\\" data-dojo-attach-event=\\\"ondijitclick: onCancel\\\" title=\\\"${buttonCancel}\\\" role=\\\"button\\\" tabindex=\\\"-1\\\">\\n\\t\\t\\t<span data-dojo-attach-point=\\\"closeText\\\" class=\\\"closeText\\\" title=\\\"${buttonCancel}\\\">x</span>\\n\\t\\t</span>\\n\\t</div>\\n\\t<div data-dojo-attach-point=\\\"containerNode\\\" class=\\\"dijitDialogPaneContent\\\"></div>\\n\\t${!actionBarTemplate}\\n</div>\\n\\n\"","module.exports = \"<div class=\\\"dijitTooltip dijitTooltipLeft\\\" id=\\\"dojoTooltip\\\" data-dojo-attach-event=\\\"mouseenter:onMouseEnter,mouseleave:onMouseLeave\\\"\\n\\t><div class=\\\"dijitTooltipConnector\\\" data-dojo-attach-point=\\\"connectorNode\\\"></div\\n\\t><div class=\\\"dijitTooltipContainer dijitTooltipContents\\\" data-dojo-attach-point=\\\"containerNode\\\" role='alert'></div\\n></div>\\n\"","define([\"./kernel\", \"./config\", /*===== \"./declare\", =====*/ \"./lang\", \"../Evented\", \"./Color\", \"../aspect\", \"../sniff\", \"../dom\", \"../dom-style\"],\n\tfunction(dojo, config, /*===== declare, =====*/ lang, Evented, Color, aspect, has, dom, style){\n\t// module:\n\t//\t\tdojo/_base/fx\n\t// notes:\n\t//\t\tAnimation loosely package based on Dan Pupius' work, contributed under CLA; see\n\t//\t\thttp://pupius.co.uk/js/Toolkit.Drawing.js\n\n\tvar _mixin = lang.mixin;\n\n\t// Module export\n\tvar basefx = {\n\t\t// summary:\n\t\t//\t\tThis module defines the base dojo/_base/fx implementation.\n\t};\n\n\tvar _Line = basefx._Line = function(/*int*/ start, /*int*/ end){\n\t\t// summary:\n\t\t//\t\tObject used to generate values from a start value to an end value\n\t\t// start: int\n\t\t//\t\tBeginning value for range\n\t\t// end: int\n\t\t//\t\tEnding value for range\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t};\n\n\t_Line.prototype.getValue = function(/*float*/ n){\n\t\t// summary:\n\t\t//\t\tReturns the point on the line\n\t\t// n:\n\t\t//\t\ta floating point number greater than 0 and less than 1\n\t\treturn ((this.end - this.start) * n) + this.start; // Decimal\n\t};\n\n\tvar Animation = basefx.Animation = function(args){\n\t\t// summary:\n\t\t//\t\tA generic animation class that fires callbacks into its handlers\n\t\t//\t\tobject at various states.\n\t\t// description:\n\t\t//\t\tA generic animation class that fires callbacks into its handlers\n\t\t//\t\tobject at various states. Nearly all dojo animation functions\n\t\t//\t\treturn an instance of this method, usually without calling the\n\t\t//\t\t.play() method beforehand. Therefore, you will likely need to\n\t\t//\t\tcall .play() on instances of `Animation` when one is\n\t\t//\t\treturned.\n\t\t// args: Object\n\t\t//\t\tThe 'magic argument', mixing all the properties into this\n\t\t//\t\tanimation instance.\n\n\t\t_mixin(this, args);\n\t\tif(lang.isArray(this.curve)){\n\t\t\tthis.curve = new _Line(this.curve[0], this.curve[1]);\n\t\t}\n\n\t};\n\tAnimation.prototype = new Evented();\n\n\tlang.extend(Animation, {\n\t\t// duration: Integer\n\t\t//\t\tThe time in milliseconds the animation will take to run\n\t\tduration: 350,\n\n\t/*=====\n\t\t// curve: _Line|Array\n\t\t//\t\tA two element array of start and end values, or a `_Line` instance to be\n\t\t//\t\tused in the Animation.\n\t\tcurve: null,\n\n\t\t// easing: Function?\n\t\t//\t\tA Function to adjust the acceleration (or deceleration) of the progress\n\t\t//\t\tacross a _Line\n\t\teasing: null,\n\t=====*/\n\n\t\t// repeat: Integer?\n\t\t//\t\tThe number of times to loop the animation\n\t\trepeat: 0,\n\n\t\t// rate: Integer?\n\t\t//\t\tthe time in milliseconds to wait before advancing to next frame\n\t\t//\t\t(used as a fps timer: 1000/rate = fps)\n\t\trate: 20 /* 50 fps */,\n\n\t/*=====\n\t\t// delay: Integer?\n\t\t//\t\tThe time in milliseconds to wait before starting animation after it\n\t\t//\t\thas been .play()'ed\n\t\tdelay: null,\n\n\t\t// beforeBegin: Event?\n\t\t//\t\tSynthetic event fired before a Animation begins playing (synchronous)\n\t\tbeforeBegin: null,\n\n\t\t// onBegin: Event?\n\t\t//\t\tSynthetic event fired as a Animation begins playing (useful?)\n\t\tonBegin: null,\n\n\t\t// onAnimate: Event?\n\t\t//\t\tSynthetic event fired at each interval of the Animation\n\t\tonAnimate: null,\n\n\t\t// onEnd: Event?\n\t\t//\t\tSynthetic event fired after the final frame of the Animation\n\t\tonEnd: null,\n\n\t\t// onPlay: Event?\n\t\t//\t\tSynthetic event fired any time the Animation is play()'ed\n\t\tonPlay: null,\n\n\t\t// onPause: Event?\n\t\t//\t\tSynthetic event fired when the Animation is paused\n\t\tonPause: null,\n\n\t\t// onStop: Event\n\t\t//\t\tSynthetic event fires when the Animation is stopped\n\t\tonStop: null,\n\n\t=====*/\n\n\t\t_percent: 0,\n\t\t_startRepeatCount: 0,\n\n\t\t_getStep: function(){\n\t\t\tvar _p = this._percent,\n\t\t\t\t_e = this.easing\n\t\t\t;\n\t\t\treturn _e ? _e(_p) : _p;\n\t\t},\n\t\t_fire: function(/*Event*/ evt, /*Array?*/ args){\n\t\t\t// summary:\n\t\t\t//\t\tConvenience function. Fire event \"evt\" and pass it the\n\t\t\t//\t\targuments specified in \"args\".\n\t\t\t// description:\n\t\t\t//\t\tConvenience function. Fire event \"evt\" and pass it the\n\t\t\t//\t\targuments specified in \"args\".\n\t\t\t//\t\tFires the callback in the scope of this Animation\n\t\t\t//\t\tinstance.\n\t\t\t// evt:\n\t\t\t//\t\tThe event to fire.\n\t\t\t// args:\n\t\t\t//\t\tThe arguments to pass to the event.\n\t\t\tvar a = args||[];\n\t\t\tif(this[evt]){\n\t\t\t\tif(config.debugAtAllCosts){\n\t\t\t\t\tthis[evt].apply(this, a);\n\t\t\t\t}else{\n\t\t\t\t\ttry{\n\t\t\t\t\t\tthis[evt].apply(this, a);\n\t\t\t\t\t}catch(e){\n\t\t\t\t\t\t// squelch and log because we shouldn't allow exceptions in\n\t\t\t\t\t\t// synthetic event handlers to cause the internal timer to run\n\t\t\t\t\t\t// amuck, potentially pegging the CPU. I'm not a fan of this\n\t\t\t\t\t\t// squelch, but hopefully logging will make it clear what's\n\t\t\t\t\t\t// going on\n\t\t\t\t\t\tconsole.error(\"exception in animation handler for:\", evt);\n\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this; // Animation\n\t\t},\n\n\t\tplay: function(/*int?*/ delay, /*Boolean?*/ gotoStart){\n\t\t\t// summary:\n\t\t\t//\t\tStart the animation.\n\t\t\t// delay:\n\t\t\t//\t\tHow many milliseconds to delay before starting.\n\t\t\t// gotoStart:\n\t\t\t//\t\tIf true, starts the animation from the beginning; otherwise,\n\t\t\t//\t\tstarts it from its current position.\n\t\t\t// returns: Animation\n\t\t\t//\t\tThe instance to allow chaining.\n\n\t\t\tvar _t = this;\n\t\t\tif(_t._delayTimer){ _t._clearTimer(); }\n\t\t\tif(gotoStart){\n\t\t\t\t_t._stopTimer();\n\t\t\t\t_t._active = _t._paused = false;\n\t\t\t\t_t._percent = 0;\n\t\t\t}else if(_t._active && !_t._paused){\n\t\t\t\treturn _t;\n\t\t\t}\n\n\t\t\t_t._fire(\"beforeBegin\", [_t.node]);\n\n\t\t\tvar de = delay || _t.delay,\n\t\t\t\t_p = lang.hitch(_t, \"_play\", gotoStart);\n\n\t\t\tif(de > 0){\n\t\t\t\t_t._delayTimer = setTimeout(_p, de);\n\t\t\t\treturn _t;\n\t\t\t}\n\t\t\t_p();\n\t\t\treturn _t;\t// Animation\n\t\t},\n\n\t\t_play: function(gotoStart){\n\t\t\tvar _t = this;\n\t\t\tif(_t._delayTimer){ _t._clearTimer(); }\n\t\t\t_t._startTime = new Date().valueOf();\n\t\t\tif(_t._paused){\n\t\t\t\t_t._startTime -= _t.duration * _t._percent;\n\t\t\t}\n\n\t\t\t_t._active = true;\n\t\t\t_t._paused = false;\n\t\t\tvar value = _t.curve.getValue(_t._getStep());\n\t\t\tif(!_t._percent){\n\t\t\t\tif(!_t._startRepeatCount){\n\t\t\t\t\t_t._startRepeatCount = _t.repeat;\n\t\t\t\t}\n\t\t\t\t_t._fire(\"onBegin\", [value]);\n\t\t\t}\n\n\t\t\t_t._fire(\"onPlay\", [value]);\n\n\t\t\t_t._cycle();\n\t\t\treturn _t; // Animation\n\t\t},\n\n\t\tpause: function(){\n\t\t\t// summary:\n\t\t\t//\t\tPauses a running animation.\n\t\t\tvar _t = this;\n\t\t\tif(_t._delayTimer){ _t._clearTimer(); }\n\t\t\t_t._stopTimer();\n\t\t\tif(!_t._active){ return _t; /*Animation*/ }\n\t\t\t_t._paused = true;\n\t\t\t_t._fire(\"onPause\", [_t.curve.getValue(_t._getStep())]);\n\t\t\treturn _t; // Animation\n\t\t},\n\n\t\tgotoPercent: function(/*Decimal*/ percent, /*Boolean?*/ andPlay){\n\t\t\t// summary:\n\t\t\t//\t\tSets the progress of the animation.\n\t\t\t// percent:\n\t\t\t//\t\tA percentage in decimal notation (between and including 0.0 and 1.0).\n\t\t\t// andPlay:\n\t\t\t//\t\tIf true, play the animation after setting the progress.\n\t\t\tvar _t = this;\n\t\t\t_t._stopTimer();\n\t\t\t_t._active = _t._paused = true;\n\t\t\t_t._percent = percent;\n\t\t\tif(andPlay){ _t.play(); }\n\t\t\treturn _t; // Animation\n\t\t},\n\n\t\tstop: function(/*boolean?*/ gotoEnd){\n\t\t\t// summary:\n\t\t\t//\t\tStops a running animation.\n\t\t\t// gotoEnd:\n\t\t\t//\t\tIf true, the animation will end.\n\t\t\tvar _t = this;\n\t\t\tif(_t._delayTimer){ _t._clearTimer(); }\n\t\t\tif(!_t._timer){ return _t; /* Animation */ }\n\t\t\t_t._stopTimer();\n\t\t\tif(gotoEnd){\n\t\t\t\t_t._percent = 1;\n\t\t\t}\n\t\t\t_t._fire(\"onStop\", [_t.curve.getValue(_t._getStep())]);\n\t\t\t_t._active = _t._paused = false;\n\t\t\treturn _t; // Animation\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\t// summary:\n\t\t\t//\t\tcleanup the animation\n\t\t\tthis.stop();\n\t\t},\n\n\t\tstatus: function(){\n\t\t\t// summary:\n\t\t\t//\t\tReturns a string token representation of the status of\n\t\t\t//\t\tthe animation, one of: \"paused\", \"playing\", \"stopped\"\n\t\t\tif(this._active){\n\t\t\t\treturn this._paused ? \"paused\" : \"playing\"; // String\n\t\t\t}\n\t\t\treturn \"stopped\"; // String\n\t\t},\n\n\t\t_cycle: function(){\n\t\t\tvar _t = this;\n\t\t\tif(_t._active){\n\t\t\t\tvar curr = new Date().valueOf();\n\t\t\t\t// Allow durations of 0 (instant) by setting step to 1 - see #13798\n\t\t\t\tvar step = _t.duration === 0 ? 1 : (curr - _t._startTime) / (_t.duration);\n\n\t\t\t\tif(step >= 1){\n\t\t\t\t\tstep = 1;\n\t\t\t\t}\n\t\t\t\t_t._percent = step;\n\n\t\t\t\t// Perform easing\n\t\t\t\tif(_t.easing){\n\t\t\t\t\tstep = _t.easing(step);\n\t\t\t\t}\n\n\t\t\t\t_t._fire(\"onAnimate\", [_t.curve.getValue(step)]);\n\n\t\t\t\tif(_t._percent < 1){\n\t\t\t\t\t_t._startTimer();\n\t\t\t\t}else{\n\t\t\t\t\t_t._active = false;\n\n\t\t\t\t\tif(_t.repeat > 0){\n\t\t\t\t\t\t_t.repeat--;\n\t\t\t\t\t\t_t.play(null, true);\n\t\t\t\t\t}else if(_t.repeat == -1){\n\t\t\t\t\t\t_t.play(null, true);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(_t._startRepeatCount){\n\t\t\t\t\t\t\t_t.repeat = _t._startRepeatCount;\n\t\t\t\t\t\t\t_t._startRepeatCount = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t_t._percent = 0;\n\t\t\t\t\t_t._fire(\"onEnd\", [_t.node]);\n\t\t\t\t\t!_t.repeat && _t._stopTimer();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _t; // Animation\n\t\t},\n\n\t\t_clearTimer: function(){\n\t\t\t// summary:\n\t\t\t//\t\tClear the play delay timer\n\t\t\tclearTimeout(this._delayTimer);\n\t\t\tdelete this._delayTimer;\n\t\t}\n\n\t});\n\n\t// the local timer, stubbed into all Animation instances\n\tvar ctr = 0,\n\t\ttimer = null,\n\t\trunner = {\n\t\t\trun: function(){}\n\t\t};\n\n\tlang.extend(Animation, {\n\n\t\t_startTimer: function(){\n\t\t\tif(!this._timer){\n\t\t\t\tthis._timer = aspect.after(runner, \"run\", lang.hitch(this, \"_cycle\"), true);\n\t\t\t\tctr++;\n\t\t\t}\n\t\t\tif(!timer){\n\t\t\t\ttimer = setInterval(lang.hitch(runner, \"run\"), this.rate);\n\t\t\t}\n\t\t},\n\n\t\t_stopTimer: function(){\n\t\t\tif(this._timer){\n\t\t\t\tthis._timer.remove();\n\t\t\t\tthis._timer = null;\n\t\t\t\tctr--;\n\t\t\t}\n\t\t\tif(ctr <= 0){\n\t\t\t\tclearInterval(timer);\n\t\t\t\ttimer = null;\n\t\t\t\tctr = 0;\n\t\t\t}\n\t\t}\n\n\t});\n\n\tvar _makeFadeable =\n\t\thas(\"ie\") ? function(node){\n\t\t\t// only set the zoom if the \"tickle\" value would be the same as the\n\t\t\t// default\n\t\t\tvar ns = node.style;\n\t\t\t// don't set the width to auto if it didn't already cascade that way.\n\t\t\t// We don't want to f anyones designs\n\t\t\tif(!ns.width.length && style.get(node, \"width\") == \"auto\"){\n\t\t\t\tns.width = \"auto\";\n\t\t\t}\n\t\t} :\n\t\tfunction(){};\n\n\tbasefx._fade = function(/*Object*/ args){\n\t\t// summary:\n\t\t//\t\tReturns an animation that will fade the node defined by\n\t\t//\t\targs.node from the start to end values passed (args.start\n\t\t//\t\targs.end) (end is mandatory, start is optional)\n\n\t\targs.node = dom.byId(args.node);\n\t\tvar fArgs = _mixin({ properties: {} }, args),\n\t\t\tprops = (fArgs.properties.opacity = {});\n\n\t\tprops.start = !(\"start\" in fArgs) ?\n\t\t\tfunction(){\n\t\t\t\treturn +style.get(fArgs.node, \"opacity\")||0;\n\t\t\t} : fArgs.start;\n\t\tprops.end = fArgs.end;\n\n\t\tvar anim = basefx.animateProperty(fArgs);\n\t\taspect.after(anim, \"beforeBegin\", lang.partial(_makeFadeable, fArgs.node), true);\n\n\t\treturn anim; // Animation\n\t};\n\n\t/*=====\n\tvar __FadeArgs = declare(null, {\n\t\t// node: DOMNode|String\n\t\t//\t\tThe node referenced in the animation\n\t\t// duration: Integer?\n\t\t//\t\tDuration of the animation in milliseconds.\n\t\t// easing: Function?\n\t\t//\t\tAn easing function.\n\t});\n\t=====*/\n\n\tbasefx.fadeIn = function(/*__FadeArgs*/ args){\n\t\t// summary:\n\t\t//\t\tReturns an animation that will fade node defined in 'args' from\n\t\t//\t\tits current opacity to fully opaque.\n\t\treturn basefx._fade(_mixin({ end: 1 }, args)); // Animation\n\t};\n\n\tbasefx.fadeOut = function(/*__FadeArgs*/ args){\n\t\t// summary:\n\t\t//\t\tReturns an animation that will fade node defined in 'args'\n\t\t//\t\tfrom its current opacity to fully transparent.\n\t\treturn basefx._fade(_mixin({ end: 0 }, args)); // Animation\n\t};\n\n\tbasefx._defaultEasing = function(/*Decimal?*/ n){\n\t\t// summary:\n\t\t//\t\tThe default easing function for Animation(s)\n\t\treturn 0.5 + ((Math.sin((n + 1.5) * Math.PI)) / 2);\t// Decimal\n\t};\n\n\tvar PropLine = function(properties){\n\t\t// PropLine is an internal class which is used to model the values of\n\t\t// an a group of CSS properties across an animation lifecycle. In\n\t\t// particular, the \"getValue\" function handles getting interpolated\n\t\t// values between start and end for a particular CSS value.\n\t\tthis._properties = properties;\n\t\tfor(var p in properties){\n\t\t\tvar prop = properties[p];\n\t\t\tif(prop.start instanceof Color){\n\t\t\t\t// create a reusable temp color object to keep intermediate results\n\t\t\t\tprop.tempColor = new Color();\n\t\t\t}\n\t\t}\n\t};\n\n\tPropLine.prototype.getValue = function(r){\n\t\tvar ret = {};\n\t\tfor(var p in this._properties){\n\t\t\tvar prop = this._properties[p],\n\t\t\t\tstart = prop.start;\n\t\t\tif(start instanceof Color){\n\t\t\t\tret[p] = Color.blendColors(start, prop.end, r, prop.tempColor).toCss();\n\t\t\t}else if(!lang.isArray(start)){\n\t\t\t\tret[p] = ((prop.end - start) * r) + start + (p != \"opacity\" ? prop.units || \"px\" : 0);\n\t\t\t}\n\t\t}\n\t\treturn ret;\n\t};\n\n\t/*=====\n\tvar __AnimArgs = declare(__FadeArgs, {\n\t\t// properties: Object?\n\t\t//\t\tA hash map of style properties to Objects describing the transition,\n\t\t//\t\tsuch as the properties of _Line with an additional 'units' property\n\t\tproperties: {}\n\n\t\t//TODOC: add event callbacks\n\t});\n\t=====*/\n\n\tbasefx.animateProperty = function(/*__AnimArgs*/ args){\n\t\t// summary:\n\t\t//\t\tReturns an animation that will transition the properties of\n\t\t//\t\tnode defined in `args` depending how they are defined in\n\t\t//\t\t`args.properties`\n\t\t//\n\t\t// description:\n\t\t//\t\tFoundation of most `dojo/_base/fx`\n\t\t//\t\tanimations. It takes an object of \"properties\" corresponding to\n\t\t//\t\tstyle properties, and animates them in parallel over a set\n\t\t//\t\tduration.\n\t\t//\n\t\t// example:\n\t\t//\t\tA simple animation that changes the width of the specified node.\n\t\t//\t|\tbasefx.animateProperty({\n\t\t//\t|\t\tnode: \"nodeId\",\n\t\t//\t|\t\tproperties: { width: 400 },\n\t\t//\t|\t}).play();\n\t\t//\t\tDojo figures out the start value for the width and converts the\n\t\t//\t\tinteger specified for the width to the more expressive but\n\t\t//\t\tverbose form `{ width: { end: '400', units: 'px' } }` which you\n\t\t//\t\tcan also specify directly. Defaults to 'px' if omitted.\n\t\t//\n\t\t// example:\n\t\t//\t\tAnimate width, height, and padding over 2 seconds... the\n\t\t//\t\tpedantic way:\n\t\t//\t|\tbasefx.animateProperty({ node: node, duration:2000,\n\t\t//\t|\t\tproperties: {\n\t\t//\t|\t\t\twidth: { start: '200', end: '400', units:\"px\" },\n\t\t//\t|\t\t\theight: { start:'200', end: '400', units:\"px\" },\n\t\t//\t|\t\t\tpaddingTop: { start:'5', end:'50', units:\"px\" }\n\t\t//\t|\t\t}\n\t\t//\t|\t}).play();\n\t\t//\t\tNote 'paddingTop' is used over 'padding-top'. Multi-name CSS properties\n\t\t//\t\tare written using \"mixed case\", as the hyphen is illegal as an object key.\n\t\t//\n\t\t// example:\n\t\t//\t\tPlug in a different easing function and register a callback for\n\t\t//\t\twhen the animation ends. Easing functions accept values between\n\t\t//\t\tzero and one and return a value on that basis. In this case, an\n\t\t//\t\texponential-in curve.\n\t\t//\t|\tbasefx.animateProperty({\n\t\t//\t|\t\tnode: \"nodeId\",\n\t\t//\t|\t\t// dojo figures out the start value\n\t\t//\t|\t\tproperties: { width: { end: 400 } },\n\t\t//\t|\t\teasing: function(n){\n\t\t//\t|\t\t\treturn (n==0) ? 0 : Math.pow(2, 10 * (n - 1));\n\t\t//\t|\t\t},\n\t\t//\t|\t\tonEnd: function(node){\n\t\t//\t|\t\t\t// called when the animation finishes. The animation\n\t\t//\t|\t\t\t// target is passed to this function\n\t\t//\t|\t\t}\n\t\t//\t|\t}).play(500); // delay playing half a second\n\t\t//\n\t\t// example:\n\t\t//\t\tLike all `Animation`s, animateProperty returns a handle to the\n\t\t//\t\tAnimation instance, which fires the events common to Dojo FX. Use `aspect.after`\n\t\t//\t\tto access these events outside of the Animation definition:\n\t\t//\t|\tvar anim = basefx.animateProperty({\n\t\t//\t|\t\tnode:\"someId\",\n\t\t//\t|\t\tproperties:{\n\t\t//\t|\t\t\twidth:400, height:500\n\t\t//\t|\t\t}\n\t\t//\t|\t});\n\t\t//\t|\taspect.after(anim, \"onEnd\", function(){\n\t\t//\t|\t\tconsole.log(\"animation ended\");\n\t\t//\t|\t}, true);\n\t\t//\t|\t// play the animation now:\n\t\t//\t|\tanim.play();\n\t\t//\n\t\t// example:\n\t\t//\t\tEach property can be a function whose return value is substituted along.\n\t\t//\t\tAdditionally, each measurement (eg: start, end) can be a function. The node\n\t\t//\t\treference is passed directly to callbacks.\n\t\t//\t|\tbasefx.animateProperty({\n\t\t//\t|\t\tnode:\"mine\",\n\t\t//\t|\t\tproperties:{\n\t\t//\t|\t\t\theight:function(node){\n\t\t//\t|\t\t\t\t// shrink this node by 50%\n\t\t//\t|\t\t\t\treturn domGeom.position(node).h / 2\n\t\t//\t|\t\t\t},\n\t\t//\t|\t\t\twidth:{\n\t\t//\t|\t\t\t\tstart:function(node){ return 100; },\n\t\t//\t|\t\t\t\tend:function(node){ return 200; }\n\t\t//\t|\t\t\t}\n\t\t//\t|\t\t}\n\t\t//\t|\t}).play();\n\t\t//\n\n\t\tvar n = args.node = dom.byId(args.node);\n\t\tif(!args.easing){ args.easing = dojo._defaultEasing; }\n\n\t\tvar anim = new Animation(args);\n\t\taspect.after(anim, \"beforeBegin\", lang.hitch(anim, function(){\n\t\t\tvar pm = {};\n\t\t\tfor(var p in this.properties){\n\t\t\t\t// Make shallow copy of properties into pm because we overwrite\n\t\t\t\t// some values below. In particular if start/end are functions\n\t\t\t\t// we don't want to overwrite them or the functions won't be\n\t\t\t\t// called if the animation is reused.\n\t\t\t\tif(p == \"width\" || p == \"height\"){\n\t\t\t\t\tthis.node.display = \"block\";\n\t\t\t\t}\n\t\t\t\tvar prop = this.properties[p];\n\t\t\t\tif(lang.isFunction(prop)){\n\t\t\t\t\tprop = prop(n);\n\t\t\t\t}\n\t\t\t\tprop = pm[p] = _mixin({}, (lang.isObject(prop) ? prop: { end: prop }));\n\n\t\t\t\tif(lang.isFunction(prop.start)){\n\t\t\t\t\tprop.start = prop.start(n);\n\t\t\t\t}\n\t\t\t\tif(lang.isFunction(prop.end)){\n\t\t\t\t\tprop.end = prop.end(n);\n\t\t\t\t}\n\t\t\t\tvar isColor = (p.toLowerCase().indexOf(\"color\") >= 0);\n\t\t\t\tfunction getStyle(node, p){\n\t\t\t\t\t// domStyle.get(node, \"height\") can return \"auto\" or \"\" on IE; this is more reliable:\n\t\t\t\t\tvar v = { height: node.offsetHeight, width: node.offsetWidth }[p];\n\t\t\t\t\tif(v !== undefined){ return v; }\n\t\t\t\t\tv = style.get(node, p);\n\t\t\t\t\treturn (p == \"opacity\") ? +v : (isColor ? v : parseFloat(v));\n\t\t\t\t}\n\t\t\t\tif(!(\"end\" in prop)){\n\t\t\t\t\tprop.end = getStyle(n, p);\n\t\t\t\t}else if(!(\"start\" in prop)){\n\t\t\t\t\tprop.start = getStyle(n, p);\n\t\t\t\t}\n\n\t\t\t\tif(isColor){\n\t\t\t\t\tprop.start = new Color(prop.start);\n\t\t\t\t\tprop.end = new Color(prop.end);\n\t\t\t\t}else{\n\t\t\t\t\tprop.start = (p == \"opacity\") ? +prop.start : parseFloat(prop.start);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.curve = new PropLine(pm);\n\t\t}), true);\n\t\taspect.after(anim, \"onAnimate\", lang.hitch(style, \"set\", anim.node), true);\n\t\treturn anim; // Animation\n\t};\n\n\tbasefx.anim = function(\t/*DOMNode|String*/\tnode,\n\t\t\t\t\t\t\t/*Object*/\t\t\tproperties,\n\t\t\t\t\t\t\t/*Integer?*/\t\tduration,\n\t\t\t\t\t\t\t/*Function?*/\t\teasing,\n\t\t\t\t\t\t\t/*Function?*/\t\tonEnd,\n\t\t\t\t\t\t\t/*Integer?*/\t\tdelay){\n\t\t// summary:\n\t\t//\t\tA simpler interface to `animateProperty()`, also returns\n\t\t//\t\tan instance of `Animation` but begins the animation\n\t\t//\t\timmediately, unlike nearly every other Dojo animation API.\n\t\t// description:\n\t\t//\t\tSimpler (but somewhat less powerful) version\n\t\t//\t\tof `animateProperty`. It uses defaults for many basic properties\n\t\t//\t\tand allows for positional parameters to be used in place of the\n\t\t//\t\tpacked \"property bag\" which is used for other Dojo animation\n\t\t//\t\tmethods.\n\t\t//\n\t\t//\t\tThe `Animation` object returned will be already playing, so\n\t\t//\t\tcalling play() on it again is (usually) a no-op.\n\t\t// node:\n\t\t//\t\ta DOM node or the id of a node to animate CSS properties on\n\t\t// duration:\n\t\t//\t\tThe number of milliseconds over which the animation\n\t\t//\t\tshould run. Defaults to the global animation default duration\n\t\t//\t\t(350ms).\n\t\t// easing:\n\t\t//\t\tAn easing function over which to calculate acceleration\n\t\t//\t\tand deceleration of the animation through its duration.\n\t\t//\t\tA default easing algorithm is provided, but you may\n\t\t//\t\tplug in any you wish. A large selection of easing algorithms\n\t\t//\t\tare available in `dojo/fx/easing`.\n\t\t// onEnd:\n\t\t//\t\tA function to be called when the animation finishes\n\t\t//\t\trunning.\n\t\t// delay:\n\t\t//\t\tThe number of milliseconds to delay beginning the\n\t\t//\t\tanimation by. The default is 0.\n\t\t// example:\n\t\t//\t\tFade out a node\n\t\t//\t|\tbasefx.anim(\"id\", { opacity: 0 });\n\t\t// example:\n\t\t//\t\tFade out a node over a full second\n\t\t//\t|\tbasefx.anim(\"id\", { opacity: 0 }, 1000);\n\t\treturn basefx.animateProperty({ // Animation\n\t\t\tnode: node,\n\t\t\tduration: duration || Animation.prototype.duration,\n\t\t\tproperties: properties,\n\t\t\teasing: easing,\n\t\t\tonEnd: onEnd\n\t\t}).play(delay || 0);\n\t};\n\n\n\tif(has(\"extend-dojo\")){\n\t\t_mixin(dojo, basefx);\n\t\t// Alias to drop come 2.0:\n\t\tdojo._Animation = Animation;\n\t}\n\n\treturn basefx;\n});\n","define([\"./kernel\"], function(dojo){\n\t// module:\n\t//\t\tdojo/url\n\n\tvar\n\t\tore = new RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?$\"),\n\t\tire = new RegExp(\"^((([^\\\\[:]+):)?([^@]+)@)?(\\\\[([^\\\\]]+)\\\\]|([^\\\\[:]*))(:([0-9]+))?$\"),\n\t\t_Url = function(){\n\t\t\tvar n = null,\n\t\t\t\t_a = arguments,\n\t\t\t\turi = [_a[0]];\n\t\t\t// resolve uri components relative to each other\n\t\t\tfor(var i = 1; i<_a.length; i++){\n\t\t\t\tif(!_a[i]){ continue; }\n\n\t\t\t\t// Safari doesn't support this.constructor so we have to be explicit\n\t\t\t\t// FIXME: Tracked (and fixed) in Webkit bug 3537.\n\t\t\t\t//\t\thttp://bugs.webkit.org/show_bug.cgi?id=3537\n\t\t\t\tvar relobj = new _Url(_a[i]+\"\"),\n\t\t\t\t\turiobj = new _Url(uri[0]+\"\");\n\n\t\t\t\tif(\n\t\t\t\t\trelobj.path == \"\" &&\n\t\t\t\t\t!relobj.scheme &&\n\t\t\t\t\t!relobj.authority &&\n\t\t\t\t\t!relobj.query\n\t\t\t\t){\n\t\t\t\t\tif(relobj.fragment != n){\n\t\t\t\t\t\turiobj.fragment = relobj.fragment;\n\t\t\t\t\t}\n\t\t\t\t\trelobj = uriobj;\n\t\t\t\t}else if(!relobj.scheme){\n\t\t\t\t\trelobj.scheme = uriobj.scheme;\n\n\t\t\t\t\tif(!relobj.authority){\n\t\t\t\t\t\trelobj.authority = uriobj.authority;\n\n\t\t\t\t\t\tif(relobj.path.charAt(0) != \"/\"){\n\t\t\t\t\t\t\tvar path = uriobj.path.substring(0,\n\t\t\t\t\t\t\t\turiobj.path.lastIndexOf(\"/\") + 1) + relobj.path;\n\n\t\t\t\t\t\t\tvar segs = path.split(\"/\");\n\t\t\t\t\t\t\tfor(var j = 0; j < segs.length; j++){\n\t\t\t\t\t\t\t\tif(segs[j] == \".\"){\n\t\t\t\t\t\t\t\t\t// flatten \"./\" references\n\t\t\t\t\t\t\t\t\tif(j == segs.length - 1){\n\t\t\t\t\t\t\t\t\t\tsegs[j] = \"\";\n\t\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\t\tsegs.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\tj--;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}else if(j > 0 && !(j == 1 && segs[0] == \"\") &&\n\t\t\t\t\t\t\t\t\tsegs[j] == \"..\" && segs[j-1] != \"..\"){\n\t\t\t\t\t\t\t\t\t// flatten \"../\" references\n\t\t\t\t\t\t\t\t\tif(j == (segs.length - 1)){\n\t\t\t\t\t\t\t\t\t\tsegs.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\tsegs[j - 1] = \"\";\n\t\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\t\tsegs.splice(j - 1, 2);\n\t\t\t\t\t\t\t\t\t\tj -= 2;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trelobj.path = segs.join(\"/\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\turi = [];\n\t\t\t\tif(relobj.scheme){\n\t\t\t\t\turi.push(relobj.scheme, \":\");\n\t\t\t\t}\n\t\t\t\tif(relobj.authority){\n\t\t\t\t\turi.push(\"//\", relobj.authority);\n\t\t\t\t}\n\t\t\t\turi.push(relobj.path);\n\t\t\t\tif(relobj.query){\n\t\t\t\t\turi.push(\"?\", relobj.query);\n\t\t\t\t}\n\t\t\t\tif(relobj.fragment){\n\t\t\t\t\turi.push(\"#\", relobj.fragment);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.uri = uri.join(\"\");\n\n\t\t\t// break the uri into its main components\n\t\t\tvar r = this.uri.match(ore);\n\n\t\t\tthis.scheme = r[2] || (r[1] ? \"\" : n);\n\t\t\tthis.authority = r[4] || (r[3] ? \"\" : n);\n\t\t\tthis.path = r[5]; // can never be undefined\n\t\t\tthis.query = r[7] || (r[6] ? \"\" : n);\n\t\t\tthis.fragment\t = r[9] || (r[8] ? \"\" : n);\n\n\t\t\tif(this.authority != n){\n\t\t\t\t// server based naming authority\n\t\t\t\tr = this.authority.match(ire);\n\n\t\t\t\tthis.user = r[3] || n;\n\t\t\t\tthis.password = r[4] || n;\n\t\t\t\tthis.host = r[6] || r[7]; // ipv6 || ipv4\n\t\t\t\tthis.port = r[9] || n;\n\t\t\t}\n\t\t};\n\t_Url.prototype.toString = function(){ return this.uri; };\n\n\treturn dojo._Url = _Url;\n});\n","define([\"./_base/kernel\", \"./text\"], function(dojo){\n\t// module:\n\t//\t\tdojo/cache\n\n\t// dojo.cache is defined in dojo/text\n\treturn dojo.cache;\n});\n","define([\"../_base/lang\", \"../_base/array\"], function(lang, array){\n\n// module:\n//\t\tdojo/date/stamp\n\nvar stamp = {\n\t// summary:\n\t//\t\tTODOC\n};\nlang.setObject(\"dojo.date.stamp\", stamp);\n\n// Methods to convert dates to or from a wire (string) format using well-known conventions\n\nstamp.fromISOString = function(/*String*/ formattedString, /*Number?*/ defaultTime){\n\t// summary:\n\t//\t\tReturns a Date object given a string formatted according to a subset of the ISO-8601 standard.\n\t//\n\t// description:\n\t//\t\tAccepts a string formatted according to a profile of ISO8601 as defined by\n\t//\t\t[RFC3339](http://www.ietf.org/rfc/rfc3339.txt), except that partial input is allowed.\n\t//\t\tCan also process dates as specified [by the W3C](http://www.w3.org/TR/NOTE-datetime)\n\t//\t\tThe following combinations are valid:\n\t//\n\t//\t\t- dates only\n\t//\t\t\t- yyyy\n\t//\t\t\t- yyyy-MM\n\t//\t\t\t- yyyy-MM-dd\n\t//\t\t- times only, with an optional time zone appended\n\t//\t\t\t- THH:mm\n\t//\t\t\t- THH:mm:ss\n\t//\t\t\t- THH:mm:ss.SSS\n\t//\t\t- and \"datetimes\" which could be any combination of the above\n\t//\n\t//\t\ttimezones may be specified as Z (for UTC) or +/- followed by a time expression HH:mm\n\t//\t\tAssumes the local time zone if not specified. Does not validate. Improperly formatted\n\t//\t\tinput may return null. Arguments which are out of bounds will be handled\n\t//\t\tby the Date constructor (e.g. January 32nd typically gets resolved to February 1st)\n\t//\t\tOnly years between 100 and 9999 are supported.\n \t// formattedString:\n\t//\t\tA string such as 2005-06-30T08:05:00-07:00 or 2005-06-30 or T08:05:00\n\t// defaultTime:\n\t//\t\tUsed for defaults for fields omitted in the formattedString.\n\t//\t\tUses 1970-01-01T00:00:00.0Z by default.\n\n\tif(!stamp._isoRegExp){\n\t\tstamp._isoRegExp =\n//TODO: could be more restrictive and check for 00-59, etc.\n\t\t\t/^(?:(\\d{4})(?:-(\\d{2})(?:-(\\d{2}))?)?)?(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(.\\d+)?)?((?:[+-](\\d{2}):(\\d{2}))|Z)?)?$/;\n\t}\n\n\tvar match = stamp._isoRegExp.exec(formattedString),\n\t\tresult = null;\n\n\tif(match){\n\t\tmatch.shift();\n\t\tif(match[1]){match[1]--;} // Javascript Date months are 0-based\n\t\tif(match[6]){match[6] *= 1000;} // Javascript Date expects fractional seconds as milliseconds\n\n\t\tif(defaultTime){\n\t\t\t// mix in defaultTime. Relatively expensive, so use || operators for the fast path of defaultTime === 0\n\t\t\tdefaultTime = new Date(defaultTime);\n\t\t\tarray.forEach(array.map([\"FullYear\", \"Month\", \"Date\", \"Hours\", \"Minutes\", \"Seconds\", \"Milliseconds\"], function(prop){\n\t\t\t\treturn defaultTime[\"get\" + prop]();\n\t\t\t}), function(value, index){\n\t\t\t\tmatch[index] = match[index] || value;\n\t\t\t});\n\t\t}\n\t\tresult = new Date(match[0]||1970, match[1]||0, match[2]||1, match[3]||0, match[4]||0, match[5]||0, match[6]||0); //TODO: UTC defaults\n\t\tif(match[0] < 100){\n\t\t\tresult.setFullYear(match[0] || 1970);\n\t\t}\n\n\t\tvar offset = 0,\n\t\t\tzoneSign = match[7] && match[7].charAt(0);\n\t\tif(zoneSign != 'Z'){\n\t\t\toffset = ((match[8] || 0) * 60) + (Number(match[9]) || 0);\n\t\t\tif(zoneSign != '-'){ offset *= -1; }\n\t\t}\n\t\tif(zoneSign){\n\t\t\toffset -= result.getTimezoneOffset();\n\t\t}\n\t\tif(offset){\n\t\t\tresult.setTime(result.getTime() + offset * 60000);\n\t\t}\n\t}\n\n\treturn result; // Date or null\n};\n\n/*=====\nvar __Options = {\n\t// selector: String\n\t//\t\t\"date\" or \"time\" for partial formatting of the Date object.\n\t//\t\tBoth date and time will be formatted by default.\n\t// zulu: Boolean\n\t//\t\tif true, UTC/GMT is used for a timezone\n\t// milliseconds: Boolean\n\t//\t\tif true, output milliseconds\n};\n=====*/\n\nstamp.toISOString = function(/*Date*/ dateObject, /*__Options?*/ options){\n\t// summary:\n\t//\t\tFormat a Date object as a string according a subset of the ISO-8601 standard\n\t//\n\t// description:\n\t//\t\tWhen options.selector is omitted, output follows [RFC3339](http://www.ietf.org/rfc/rfc3339.txt)\n\t//\t\tThe local time zone is included as an offset from GMT, except when selector=='time' (time without a date)\n\t//\t\tDoes not check bounds. Only years between 100 and 9999 are supported.\n\t//\n\t// dateObject:\n\t//\t\tA Date object\n\n\tvar _ = function(n){ return (n < 10) ? \"0\" + n : n; };\n\toptions = options || {};\n\tvar formattedDate = [],\n\t\tgetter = options.zulu ? \"getUTC\" : \"get\",\n\t\tdate = \"\";\n\tif(options.selector != \"time\"){\n\t\tvar year = dateObject[getter+\"FullYear\"]();\n\t\tdate = [\"0000\".substr((year+\"\").length)+year, _(dateObject[getter+\"Month\"]()+1), _(dateObject[getter+\"Date\"]())].join('-');\n\t}\n\tformattedDate.push(date);\n\tif(options.selector != \"date\"){\n\t\tvar time = [_(dateObject[getter+\"Hours\"]()), _(dateObject[getter+\"Minutes\"]()), _(dateObject[getter+\"Seconds\"]())].join(':');\n\t\tvar millis = dateObject[getter+\"Milliseconds\"]();\n\t\tif(options.milliseconds){\n\t\t\ttime += \".\"+ (millis < 100 ? \"0\" : \"\") + _(millis);\n\t\t}\n\t\tif(options.zulu){\n\t\t\ttime += \"Z\";\n\t\t}else if(options.selector != \"time\"){\n\t\t\tvar timezoneOffset = dateObject.getTimezoneOffset();\n\t\t\tvar absOffset = Math.abs(timezoneOffset);\n\t\t\ttime += (timezoneOffset > 0 ? \"-\" : \"+\") +\n\t\t\t\t_(Math.floor(absOffset/60)) + \":\" + _(absOffset%60);\n\t\t}\n\t\tformattedDate.push(time);\n\t}\n\treturn formattedDate.join('T'); // String\n};\n\nreturn stamp;\n});\n","define([\n\t\"../_base/array\", \"../_base/declare\", \"../_base/lang\", \"../dom\", \"../dom-class\", \"../Evented\",\n\t\"../has\", \"../on\", \"../topic\", \"../touch\", \"./common\", \"./Mover\", \"../_base/window\"\n], function(array, declare, lang, dom, domClass, Evented, has, on, topic, touch, dnd, Mover, win){\n\n// module:\n//\t\tdojo/dnd/Moveable\n\nvar touchActionPropertyName;\nvar setTouchAction = function () {};\n\nfunction setTouchActionPropertyName() {\n\tif (\"touchAction\" in document.body.style) {\n\t\ttouchActionPropertyName = \"touchAction\";\n\t}\n\telse if (\"msTouchAction\" in document.body.style) {\n\t\ttouchActionPropertyName = \"msTouchAction\";\n\t}\n\tsetTouchAction = function setTouchAction(/* Node */ node, /* string */ action) {\n\t\tnode.style[touchActionPropertyName] = action;\n\t}\n\tsetTouchAction(arguments[0], arguments[1]);\n}\n\nif (has(\"touch-action\")) {\n\t// Ensure that the logic to determine \"touchActionPropertyName\" runs\n\tsetTouchAction = setTouchActionPropertyName;\n}\n\nvar Moveable = declare(\"dojo.dnd.Moveable\", [Evented], {\n\t// summary:\n\t//\t\tan object, which makes a node movable\n\n\t// object attributes (for markup)\n\thandle: \"\",\n\tdelay: 0,\n\tskip: false,\n\n\tconstructor: function(node, params){\n\t\t// node: Node\n\t\t//\t\ta node (or node's id) to be moved\n\t\t// params: Moveable.__MoveableArgs?\n\t\t//\t\toptional parameters\n\t\tthis.node = dom.byId(node);\n\t\tsetTouchAction(this.node, \"none\");\n\t\tif(!params){ params = {}; }\n\t\tthis.handle = params.handle ? dom.byId(params.handle) : null;\n\t\tif(!this.handle){ this.handle = this.node; }\n\t\tthis.delay = params.delay > 0 ? params.delay : 0;\n\t\tthis.skip = params.skip;\n\t\tthis.mover = params.mover ? params.mover : Mover;\n\t\tthis.events = [\n\t\t\ton(this.handle, touch.press, lang.hitch(this, \"onMouseDown\")),\n\t\t\t// cancel text selection and text dragging\n\t\t\ton(this.handle, \"dragstart\", lang.hitch(this, \"onSelectStart\")),\n\t\t\ton(this.handle, \"selectstart\", lang.hitch(this, \"onSelectStart\"))\n\t\t];\n\t},\n\n\t// markup methods\n\tmarkupFactory: function(params, node, Ctor){\n\t\treturn new Ctor(node, params);\n\t},\n\n\t// methods\n\tdestroy: function(){\n\t\t// summary:\n\t\t//\t\tstops watching for possible move, deletes all references, so the object can be garbage-collected\n\t\tarray.forEach(this.events, function(handle){ handle.remove(); });\n\t\tsetTouchAction(this.node, \"\");\n\t\tthis.events = this.node = this.handle = null;\n\t},\n\n\t// mouse event processors\n\tonMouseDown: function(e){\n\t\t// summary:\n\t\t//\t\tevent processor for onmousedown/ontouchstart, creates a Mover for the node\n\t\t// e: Event\n\t\t//\t\tmouse/touch event\n\t\tif(this.skip && dnd.isFormElement(e)){ return; }\n\t\tif(this.delay){\n\t\t\tthis.events.push(\n\t\t\t\ton(this.handle, touch.move, lang.hitch(this, \"onMouseMove\")),\n\t\t\t\ton(this.handle.ownerDocument, touch.release, lang.hitch(this, \"onMouseUp\"))\n\t\t\t);\n\t\t\tthis._lastX = e.pageX;\n\t\t\tthis._lastY = e.pageY;\n\t\t}else{\n\t\t\tthis.onDragDetected(e);\n\t\t}\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t},\n\tonMouseMove: function(e){\n\t\t// summary:\n\t\t//\t\tevent processor for onmousemove/ontouchmove, used only for delayed drags\n\t\t// e: Event\n\t\t//\t\tmouse/touch event\n\t\tif(Math.abs(e.pageX - this._lastX) > this.delay || Math.abs(e.pageY - this._lastY) > this.delay){\n\t\t\tthis.onMouseUp(e);\n\t\t\tthis.onDragDetected(e);\n\t\t}\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t},\n\tonMouseUp: function(e){\n\t\t// summary:\n\t\t//\t\tevent processor for onmouseup, used only for delayed drags\n\t\t// e: Event\n\t\t//\t\tmouse event\n\t\tfor(var i = 0; i < 2; ++i){\n\t\t\tthis.events.pop().remove();\n\t\t}\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t},\n\tonSelectStart: function(e){\n\t\t// summary:\n\t\t//\t\tevent processor for onselectevent and ondragevent\n\t\t// e: Event\n\t\t//\t\tmouse event\n\t\tif(!this.skip || !dnd.isFormElement(e)){\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\n\t// local events\n\tonDragDetected: function(/*Event*/ e){\n\t\t// summary:\n\t\t//\t\tcalled when the drag is detected;\n\t\t//\t\tresponsible for creation of the mover\n\t\tnew this.mover(this.node, e, this);\n\t},\n\tonMoveStart: function(/*Mover*/ mover){\n\t\t// summary:\n\t\t//\t\tcalled before every move operation\n\t\ttopic.publish(\"/dnd/move/start\", mover);\n\t\tdomClass.add(win.body(), \"dojoMove\");\n\t\tdomClass.add(this.node, \"dojoMoveItem\");\n\t},\n\tonMoveStop: function(/*Mover*/ mover){\n\t\t// summary:\n\t\t//\t\tcalled after every move operation\n\t\ttopic.publish(\"/dnd/move/stop\", mover);\n\t\tdomClass.remove(win.body(), \"dojoMove\");\n\t\tdomClass.remove(this.node, \"dojoMoveItem\");\n\t},\n\tonFirstMove: function(/*===== mover, e =====*/){\n\t\t// summary:\n\t\t//\t\tcalled during the very first move notification;\n\t\t//\t\tcan be used to initialize coordinates, can be overwritten.\n\t\t// mover: Mover\n\t\t// e: Event\n\n\t\t// default implementation does nothing\n\t},\n\tonMove: function(mover, leftTop /*=====, e =====*/){\n\t\t// summary:\n\t\t//\t\tcalled during every move notification;\n\t\t//\t\tshould actually move the node; can be overwritten.\n\t\t// mover: Mover\n\t\t// leftTop: Object\n\t\t// e: Event\n\t\tthis.onMoving(mover, leftTop);\n\t\tvar s = mover.node.style;\n\t\ts.left = leftTop.l + \"px\";\n\t\ts.top = leftTop.t + \"px\";\n\t\tthis.onMoved(mover, leftTop);\n\t},\n\tonMoving: function(/*===== mover, leftTop =====*/){\n\t\t// summary:\n\t\t//\t\tcalled before every incremental move; can be overwritten.\n\t\t// mover: Mover\n\t\t// leftTop: Object\n\n\t\t// default implementation does nothing\n\t},\n\tonMoved: function(/*===== mover, leftTop =====*/){\n\t\t// summary:\n\t\t//\t\tcalled after every incremental move; can be overwritten.\n\t\t// mover: Mover\n\t\t// leftTop: Object\n\n\t\t// default implementation does nothing\n\t}\n});\n\n/*=====\nMoveable.__MoveableArgs = declare([], {\n\t// handle: Node||String\n\t//\t\tA node (or node's id), which is used as a mouse handle.\n\t//\t\tIf omitted, the node itself is used as a handle.\n\thandle: null,\n\n\t// delay: Number\n\t//\t\tdelay move by this number of pixels\n\tdelay: 0,\n\n\t// skip: Boolean\n\t//\t\tskip move of form elements\n\tskip: false,\n\n\t// mover: Object\n\t//\t\ta constructor of custom Mover\n\tmover: dnd.Mover\n});\n=====*/\n\nreturn Moveable;\n});\n","define([\n\t\"../_base/array\", \"../_base/declare\", \"../_base/lang\", \"../sniff\", \"../_base/window\",\n\t\"../dom\", \"../dom-geometry\", \"../dom-style\", \"../Evented\", \"../on\", \"../touch\", \"./common\", \"./autoscroll\"\n], function(array, declare, lang, has, win, dom, domGeom, domStyle, Evented, on, touch, dnd, autoscroll){\n\n// module:\n//\t\tdojo/dnd/Mover\n\nreturn declare(\"dojo.dnd.Mover\", [Evented], {\n\t// summary:\n\t//\t\tan object which makes a node follow the mouse, or touch-drag on touch devices.\n\t//\t\tUsed as a default mover, and as a base class for custom movers.\n\n\tconstructor: function(node, e, host){\n\t\t// node: Node\n\t\t//\t\ta node (or node's id) to be moved\n\t\t// e: Event\n\t\t//\t\ta mouse event, which started the move;\n\t\t//\t\tonly pageX and pageY properties are used\n\t\t// host: Object?\n\t\t//\t\tobject which implements the functionality of the move,\n\t\t//\t \tand defines proper events (onMoveStart and onMoveStop)\n\t\tthis.node = dom.byId(node);\n\t\tthis.marginBox = {l: e.pageX, t: e.pageY};\n\t\tthis.mouseButton = e.button;\n\t\tvar h = (this.host = host), d = node.ownerDocument;\n\n\t\tfunction stopEvent(e){\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\tthis.events = [\n\t\t\t// At the start of a drag, onFirstMove is called, and then the following\n\t\t\t// listener is disconnected.\n\t\t\ton(d, touch.move, lang.hitch(this, \"onFirstMove\")),\n\n\t\t\t// These are called continually during the drag\n\t\t\ton(d, touch.move, lang.hitch(this, \"onMouseMove\")),\n\n\t\t\t// And these are called at the end of the drag\n\t\t\ton(d, touch.release, lang.hitch(this, \"onMouseUp\")),\n\n\t\t\t// cancel text selection and text dragging\n\t\t\ton(d, \"dragstart\", stopEvent),\n\t\t\ton(d.body, \"selectstart\", stopEvent)\n\t\t];\n\n\t\t// Tell autoscroll that a drag is starting\n\t\tautoscroll.autoScrollStart(d);\n\n\t\t// notify that the move has started\n\t\tif(h && h.onMoveStart){\n\t\t\th.onMoveStart(this);\n\t\t}\n\t},\n\t// mouse event processors\n\tonMouseMove: function(e){\n\t\t// summary:\n\t\t//\t\tevent processor for onmousemove/ontouchmove\n\t\t// e: Event\n\t\t//\t\tmouse/touch event\n\t\tautoscroll.autoScroll(e);\n\t\tvar m = this.marginBox;\n\t\tthis.host.onMove(this, {l: m.l + e.pageX, t: m.t + e.pageY}, e);\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t},\n\tonMouseUp: function(e){\n\t\tif(has(\"webkit\") && has(\"mac\") && this.mouseButton == 2 ?\n\t\t\t\te.button == 0 : this.mouseButton == e.button){ // TODO Should condition be met for touch devices, too?\n\t\t\tthis.destroy();\n\t\t}\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t},\n\t// utilities\n\tonFirstMove: function(e){\n\t\t// summary:\n\t\t//\t\tmakes the node absolute; it is meant to be called only once.\n\t\t//\t\trelative and absolutely positioned nodes are assumed to use pixel units\n\t\tvar s = this.node.style, l, t, h = this.host;\n\t\tswitch(s.position){\n\t\t\tcase \"relative\":\n\t\t\tcase \"absolute\":\n\t\t\t\t// assume that left and top values are in pixels already\n\t\t\t\tl = Math.round(parseFloat(s.left)) || 0;\n\t\t\t\tt = Math.round(parseFloat(s.top)) || 0;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ts.position = \"absolute\";\t// enforcing the absolute mode\n\t\t\t\tvar m = domGeom.getMarginBox(this.node);\n\t\t\t\t// event.pageX/pageY (which we used to generate the initial\n\t\t\t\t// margin box) includes padding and margin set on the body.\n\t\t\t\t// However, setting the node's position to absolute and then\n\t\t\t\t// doing domGeom.marginBox on it *doesn't* take that additional\n\t\t\t\t// space into account - so we need to subtract the combined\n\t\t\t\t// padding and margin. We use getComputedStyle and\n\t\t\t\t// _getMarginBox/_getContentBox to avoid the extra lookup of\n\t\t\t\t// the computed style.\n\t\t\t\tvar b = win.doc.body;\n\t\t\t\tvar bs = domStyle.getComputedStyle(b);\n\t\t\t\tvar bm = domGeom.getMarginBox(b, bs);\n\t\t\t\tvar bc = domGeom.getContentBox(b, bs);\n\t\t\t\tl = m.l - (bc.l - bm.l);\n\t\t\t\tt = m.t - (bc.t - bm.t);\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.marginBox.l = l - this.marginBox.l;\n\t\tthis.marginBox.t = t - this.marginBox.t;\n\t\tif(h && h.onFirstMove){\n\t\t\th.onFirstMove(this, e);\n\t\t}\n\n\t\t// Disconnect touch.move that call this function\n\t\tthis.events.shift().remove();\n\t},\n\tdestroy: function(){\n\t\t// summary:\n\t\t//\t\tstops the move, deletes all references, so the object can be garbage-collected\n\t\tarray.forEach(this.events, function(handle){ handle.remove(); });\n\t\t// undo global settings\n\t\tvar h = this.host;\n\t\tif(h && h.onMoveStop){\n\t\t\th.onMoveStop(this);\n\t\t}\n\t\t// destroy objects\n\t\tthis.events = this.node = this.host = null;\n\t}\n});\n\n});\n","define([\"../_base/declare\", \"./Moveable\" /*=====, \"./Mover\" =====*/], function(declare, Moveable /*=====, Mover =====*/){\n\t// module:\n\t//\t\tdojo/dnd/TimedMoveable\n\n\t/*=====\n\tvar __TimedMoveableArgs = declare([Moveable.__MoveableArgs], {\n\t\t// timeout: Number\n\t\t//\t\tdelay move by this number of ms,\n\t\t//\t\taccumulating position changes during the timeout\n\t\ttimeout: 0\n\t});\n\t=====*/\n\n\t// precalculate long expressions\n\tvar oldOnMove = Moveable.prototype.onMove;\n\n\treturn declare(\"dojo.dnd.TimedMoveable\", Moveable, {\n\t\t// summary:\n\t\t//\t\tA specialized version of Moveable to support an FPS throttling.\n\t\t//\t\tThis class puts an upper restriction on FPS, which may reduce\n\t\t//\t\tthe CPU load. The additional parameter \"timeout\" regulates\n\t\t//\t\tthe delay before actually moving the moveable object.\n\n\t\t// object attributes (for markup)\n\t\ttimeout: 40,\t// in ms, 40ms corresponds to 25 fps\n\n\t\tconstructor: function(node, params){\n\t\t\t// summary:\n\t\t\t//\t\tan object that makes a node moveable with a timer\n\t\t\t// node: Node||String\n\t\t\t//\t\ta node (or node's id) to be moved\n\t\t\t// params: __TimedMoveableArgs\n\t\t\t//\t\tobject with additional parameters.\n\n\t\t\t// sanitize parameters\n\t\t\tif(!params){ params = {}; }\n\t\t\tif(params.timeout && typeof params.timeout == \"number\" && params.timeout >= 0){\n\t\t\t\tthis.timeout = params.timeout;\n\t\t\t}\n\t\t},\n\n\t\tonMoveStop: function(/*Mover*/ mover){\n\t\t\tif(mover._timer){\n\t\t\t\t// stop timer\n\t\t\t\tclearTimeout(mover._timer);\n\t\t\t\t// reflect the last received position\n\t\t\t\toldOnMove.call(this, mover, mover._leftTop);\n\t\t\t}\n\t\t\tMoveable.prototype.onMoveStop.apply(this, arguments);\n\t\t},\n\t\tonMove: function(/*Mover*/ mover, /*Object*/ leftTop){\n\t\t\tmover._leftTop = leftTop;\n\t\t\tif(!mover._timer){\n\t\t\t\tvar _t = this;\t// to avoid using dojo.hitch()\n\t\t\t\tmover._timer = setTimeout(function(){\n\t\t\t\t\t// we don't have any pending requests\n\t\t\t\t\tmover._timer = null;\n\t\t\t\t\t// reflect the last received position\n\t\t\t\t\toldOnMove.call(_t, mover, mover._leftTop);\n\t\t\t\t}, this.timeout);\n\t\t\t}\n\t\t}\n\t});\n});\n","define([\"../_base/lang\", \"../sniff\", \"../_base/window\", \"../dom-geometry\", \"../dom-style\", \"../window\"],\n\tfunction(lang, has, win, domGeom, domStyle, winUtils){\n\n// module:\n//\t\tdojo/dnd/autoscroll\n\nvar exports = {\n\t// summary:\n\t//\t\tUsed by dojo/dnd/Manager to scroll document or internal node when the user\n\t//\t\tdrags near the edge of the viewport or a scrollable node\n};\nlang.setObject(\"dojo.dnd.autoscroll\", exports);\n\nexports.getViewport = winUtils.getBox;\n\nexports.V_TRIGGER_AUTOSCROLL = 32;\nexports.H_TRIGGER_AUTOSCROLL = 32;\n\nexports.V_AUTOSCROLL_VALUE = 16;\nexports.H_AUTOSCROLL_VALUE = 16;\n\n// These are set by autoScrollStart().\n// Set to default values in case autoScrollStart() isn't called. (back-compat, remove for 2.0)\nvar viewport,\n\tdoc = win.doc,\n\tmaxScrollTop = Infinity,\n\tmaxScrollLeft = Infinity;\n\nexports.autoScrollStart = function(d){\n\t// summary:\n\t//\t\tCalled at the start of a drag.\n\t// d: Document\n\t//\t\tThe document of the node being dragged.\n\n\tdoc = d;\n\tviewport = winUtils.getBox(doc);\n\n\t// Save height/width of document at start of drag, before it gets distorted by a user dragging an avatar past\n\t// the document's edge\n\tvar html = win.body(doc).parentNode;\n\tmaxScrollTop = Math.max(html.scrollHeight - viewport.h, 0);\n\tmaxScrollLeft = Math.max(html.scrollWidth - viewport.w, 0);\t// usually 0\n};\n\nexports.autoScroll = function(e){\n\t// summary:\n\t//\t\ta handler for mousemove and touchmove events, which scrolls the window, if\n\t//\t\tnecessary\n\t// e: Event\n\t//\t\tmousemove/touchmove event\n\n\t// FIXME: needs more docs!\n\tvar v = viewport || winUtils.getBox(doc), // getBox() call for back-compat, in case autoScrollStart() wasn't called\n\t\thtml = win.body(doc).parentNode,\n\t\tdx = 0, dy = 0;\n\tif(e.clientX < exports.H_TRIGGER_AUTOSCROLL){\n\t\tdx = -exports.H_AUTOSCROLL_VALUE;\n\t}else if(e.clientX > v.w - exports.H_TRIGGER_AUTOSCROLL){\n\t\tdx = Math.min(exports.H_AUTOSCROLL_VALUE, maxScrollLeft - html.scrollLeft);\t// don't scroll past edge of doc\n\t}\n\tif(e.clientY < exports.V_TRIGGER_AUTOSCROLL){\n\t\tdy = -exports.V_AUTOSCROLL_VALUE;\n\t}else if(e.clientY > v.h - exports.V_TRIGGER_AUTOSCROLL){\n\t\tdy = Math.min(exports.V_AUTOSCROLL_VALUE, maxScrollTop - html.scrollTop);\t// don't scroll past edge of doc\n\t}\n\twindow.scrollBy(dx, dy);\n};\n\nexports._validNodes = {\"div\": 1, \"p\": 1, \"td\": 1};\nexports._validOverflow = {\"auto\": 1, \"scroll\": 1};\n\nexports.autoScrollNodes = function(e){\n\t// summary:\n\t//\t\ta handler for mousemove and touchmove events, which scrolls the first available\n\t//\t\tDom element, it falls back to exports.autoScroll()\n\t// e: Event\n\t//\t\tmousemove/touchmove event\n\n\t// FIXME: needs more docs!\n\n\tvar b, t, w, h, rx, ry, dx = 0, dy = 0, oldLeft, oldTop;\n\n\tfor(var n = e.target; n;){\n\t\tif(n.nodeType == 1 && (n.tagName.toLowerCase() in exports._validNodes)){\n\t\t\tvar s = domStyle.getComputedStyle(n),\n\t\t\t\toverflowX = (s.overflowX.toLowerCase() in exports._validOverflow),\n\t\t\t\toverflowY = (s.overflowY.toLowerCase() in exports._validOverflow);\n\t\t\tif(overflowX || overflowY){\n\t\t\t\tb = domGeom.getContentBox(n, s);\n\t\t\t\tt = domGeom.position(n, true);\n\t\t\t}\n\t\t\t// overflow-x\n\t\t\tif(overflowX){\n\t\t\t\tw = Math.min(exports.H_TRIGGER_AUTOSCROLL, b.w / 2);\n\t\t\t\trx = e.pageX - t.x;\n\t\t\t\tif(has(\"webkit\") || has(\"opera\")){\n\t\t\t\t\t// FIXME: this code should not be here, it should be taken into account\n\t\t\t\t\t// either by the event fixing code, or the domGeom.position()\n\t\t\t\t\t// FIXME: this code doesn't work on Opera 9.5 Beta\n\t\t\t\t\trx += win.body().scrollLeft;\n\t\t\t\t}\n\t\t\t\tdx = 0;\n\t\t\t\tif(rx > 0 && rx < b.w){\n\t\t\t\t\tif(rx < w){\n\t\t\t\t\t\tdx = -w;\n\t\t\t\t\t}else if(rx > b.w - w){\n\t\t\t\t\t\tdx = w;\n\t\t\t\t\t}\n\t\t\t\t\toldLeft = n.scrollLeft;\n\t\t\t\t\tn.scrollLeft = n.scrollLeft + dx;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// overflow-y\n\t\t\tif(overflowY){\n\t\t\t\t//console.log(b.l, b.t, t.x, t.y, n.scrollLeft, n.scrollTop);\n\t\t\t\th = Math.min(exports.V_TRIGGER_AUTOSCROLL, b.h / 2);\n\t\t\t\try = e.pageY - t.y;\n\t\t\t\tif(has(\"webkit\") || has(\"opera\")){\n\t\t\t\t\t// FIXME: this code should not be here, it should be taken into account\n\t\t\t\t\t// either by the event fixing code, or the domGeom.position()\n\t\t\t\t\t// FIXME: this code doesn't work on Opera 9.5 Beta\n\t\t\t\t\try += win.body().scrollTop;\n\t\t\t\t}\n\t\t\t\tdy = 0;\n\t\t\t\tif(ry > 0 && ry < b.h){\n\t\t\t\t\tif(ry < h){\n\t\t\t\t\t\tdy = -h;\n\t\t\t\t\t}else if(ry > b.h - h){\n\t\t\t\t\t\tdy = h;\n\t\t\t\t\t}\n\t\t\t\t\toldTop = n.scrollTop;\n\t\t\t\t\tn.scrollTop = n.scrollTop + dy;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(dx || dy){ return; }\n\t\t}\n\t\ttry{\n\t\t\tn = n.parentNode;\n\t\t}catch(x){\n\t\t\tn = null;\n\t\t}\n\t}\n\texports.autoScroll(e);\n};\n\nreturn exports;\n\n});\n","define([\"../sniff\", \"../_base/kernel\", \"../_base/lang\", \"../dom\"],\n\tfunction(has, kernel, lang, dom){\n\n// module:\n//\t\tdojo/dnd/common\n\nvar exports = lang.getObject(\"dojo.dnd\", true);\n/*=====\n// TODO: for 2.0, replace line above with this code.\nvar exports = {\n\t// summary:\n\t//\t\tTODOC\n};\n=====*/\n\nexports.getCopyKeyState = function(evt){\n\treturn evt[has(\"mac\") ? \"metaKey\" : \"ctrlKey\"]\n};\n\nexports._uniqueId = 0;\nexports.getUniqueId = function(){\n\t// summary:\n\t//\t\treturns a unique string for use with any DOM element\n\tvar id;\n\tdo{\n\t\tid = kernel._scopeName + \"Unique\" + (++exports._uniqueId);\n\t}while(dom.byId(id));\n\treturn id;\n};\n\nexports._empty = {};\n\nexports.isFormElement = function(/*Event*/ e){\n\t// summary:\n\t//\t\treturns true if user clicked on a form element\n\tvar t = e.target;\n\tif(t.nodeType == 3 /*TEXT_NODE*/){\n\t\tt = t.parentNode;\n\t}\n\treturn \" a button textarea input select option \".indexOf(\" \" + t.tagName.toLowerCase() + \" \") >= 0;\t// Boolean\n};\n\nreturn exports;\n});\n","define([\"./_base/lang\", \"./_base/array\", \"./dom\"], function(lang, array, dom){\n\t// module:\n\t//\t\tdojo/dom-class\n\n\tvar className = \"className\";\n\n\t/* Part I of classList-based implementation is preserved here for posterity\n\tvar classList = \"classList\";\n\thas.add(\"dom-classList\", function(){\n\t\treturn classList in document.createElement(\"p\");\n\t});\n\t*/\n\n\t// =============================\n\t// (CSS) Class Functions\n\t// =============================\n\n\tvar cls, // exports object\n\t\tspaces = /\\s+/, a1 = [\"\"];\n\n\tfunction str2array(s){\n\t\tif(typeof s == \"string\" || s instanceof String){\n\t\t\tif(s && !spaces.test(s)){\n\t\t\t\ta1[0] = s;\n\t\t\t\treturn a1;\n\t\t\t}\n\t\t\tvar a = s.split(spaces);\n\t\t\tif(a.length && !a[0]){\n\t\t\t\ta.shift();\n\t\t\t}\n\t\t\tif(a.length && !a[a.length - 1]){\n\t\t\t\ta.pop();\n\t\t\t}\n\t\t\treturn a;\n\t\t}\n\t\t// assumed to be an array\n\t\tif(!s){\n\t\t\treturn [];\n\t\t}\n\t\treturn array.filter(s, function(x){ return x; });\n\t}\n\n\t/* Part II of classList-based implementation is preserved here for posterity\n\tif(has(\"dom-classList\")){\n\t\t// new classList version\n\t\tcls = {\n\t\t\tcontains: function containsClass(node, classStr){\n\t\t\t\tvar clslst = classStr && dom.byId(node)[classList];\n\t\t\t\treturn clslst && clslst.contains(classStr); // Boolean\n\t\t\t},\n\n\t\t\tadd: function addClass(node, classStr){\n\t\t\t\tnode = dom.byId(node);\n\t\t\t\tclassStr = str2array(classStr);\n\t\t\t\tfor(var i = 0, len = classStr.length; i < len; ++i){\n\t\t\t\t\tnode[classList].add(classStr[i]);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tremove: function removeClass(node, classStr){\n\t\t\t\tnode = dom.byId(node);\n\t\t\t\tif(classStr === undefined){\n\t\t\t\t\tnode[className] = \"\";\n\t\t\t\t}else{\n\t\t\t\t\tclassStr = str2array(classStr);\n\t\t\t\t\tfor(var i = 0, len = classStr.length; i < len; ++i){\n\t\t\t\t\t\tnode[classList].remove(classStr[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\treplace: function replaceClass(node, addClassStr, removeClassStr){\n\t\t\t\tnode = dom.byId(node);\n\t\t\t\tif(removeClassStr === undefined){\n\t\t\t\t\tnode[className] = \"\";\n\t\t\t\t}else{\n\t\t\t\t\tremoveClassStr = str2array(removeClassStr);\n\t\t\t\t\tfor(var i = 0, len = removeClassStr.length; i < len; ++i){\n\t\t\t\t\t\tnode[classList].remove(removeClassStr[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\taddClassStr = str2array(addClassStr);\n\t\t\t\tfor(i = 0, len = addClassStr.length; i < len; ++i){\n\t\t\t\t\tnode[classList].add(addClassStr[i]);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\ttoggle: function toggleClass(node, classStr, condition){\n\t\t\t\tnode = dom.byId(node);\n\t\t\t\tif(condition === undefined){\n\t\t\t\t\tclassStr = str2array(classStr);\n\t\t\t\t\tfor(var i = 0, len = classStr.length; i < len; ++i){\n\t\t\t\t\t\tnode[classList].toggle(classStr[i]);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tcls[condition ? \"add\" : \"remove\"](node, classStr);\n\t\t\t\t}\n\t\t\t\treturn condition; // Boolean\n\t\t\t}\n\t\t}\n\t}\n\t*/\n\n\t// regular DOM version\n\tvar fakeNode = {}; // for effective replacement\n\tcls = {\n\t\t// summary:\n\t\t//\t\tThis module defines the core dojo DOM class API.\n\n\t\tcontains: function containsClass(/*DomNode|String*/ node, /*String*/ classStr){\n\t\t\t// summary:\n\t\t\t//\t\tReturns whether or not the specified classes are a portion of the\n\t\t\t//\t\tclass list currently applied to the node.\n\t\t\t// node: String|DOMNode\n\t\t\t//\t\tString ID or DomNode reference to check the class for.\n\t\t\t// classStr: String\n\t\t\t//\t\tA string class name to look for.\n\t\t\t// example:\n\t\t\t//\t\tDo something if a node with id=\"someNode\" has class=\"aSillyClassName\" present\n\t\t\t//\t|\tif(domClass.contains(\"someNode\",\"aSillyClassName\")){ ... }\n\n\t\t\treturn ((\" \" + dom.byId(node)[className] + \" \").indexOf(\" \" + classStr + \" \") >= 0); // Boolean\n\t\t},\n\n\t\tadd: function addClass(/*DomNode|String*/ node, /*String|Array*/ classStr){\n\t\t\t// summary:\n\t\t\t//\t\tAdds the specified classes to the end of the class list on the\n\t\t\t//\t\tpassed node. Will not re-apply duplicate classes.\n\t\t\t//\n\t\t\t// node: String|DOMNode\n\t\t\t//\t\tString ID or DomNode reference to add a class string too\n\t\t\t//\n\t\t\t// classStr: String|Array\n\t\t\t//\t\tA String class name to add, or several space-separated class names,\n\t\t\t//\t\tor an array of class names.\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\tAdd a class to some node:\n\t\t\t//\t|\trequire([\"dojo/dom-class\"], function(domClass){\n\t\t\t//\t|\t\tdomClass.add(\"someNode\", \"anewClass\");\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\tAdd two classes at once:\n\t\t\t//\t|\trequire([\"dojo/dom-class\"], function(domClass){\n\t\t\t//\t|\t\tdomClass.add(\"someNode\", \"firstClass secondClass\");\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\tAdd two classes at once (using array):\n\t\t\t//\t|\trequire([\"dojo/dom-class\"], function(domClass){\n\t\t\t//\t|\t\tdomClass.add(\"someNode\", [\"firstClass\", \"secondClass\"]);\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\tAvailable in `dojo/NodeList` for multiple additions\n\t\t\t//\t|\trequire([\"dojo/query\"], function(query){\n\t\t\t//\t|\t\tquery(\"ul > li\").addClass(\"firstLevel\");\n\t\t\t//\t|\t});\n\n\t\t\tnode = dom.byId(node);\n\t\t\tclassStr = str2array(classStr);\n\t\t\tvar cls = node[className], oldLen;\n\t\t\tcls = cls ? \" \" + cls + \" \" : \" \";\n\t\t\toldLen = cls.length;\n\t\t\tfor(var i = 0, len = classStr.length, c; i < len; ++i){\n\t\t\t\tc = classStr[i];\n\t\t\t\tif(c && cls.indexOf(\" \" + c + \" \") < 0){\n\t\t\t\t\tcls += c + \" \";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(oldLen < cls.length){\n\t\t\t\tnode[className] = cls.substr(1, cls.length - 2);\n\t\t\t}\n\t\t},\n\n\t\tremove: function removeClass(/*DomNode|String*/ node, /*String|Array?*/ classStr){\n\t\t\t// summary:\n\t\t\t//\t\tRemoves the specified classes from node. No `contains()`\n\t\t\t//\t\tcheck is required.\n\t\t\t//\n\t\t\t// node: String|DOMNode\n\t\t\t//\t\tString ID or DomNode reference to remove the class from.\n\t\t\t//\n\t\t\t// classStr: String|Array\n\t\t\t//\t\tAn optional String class name to remove, or several space-separated\n\t\t\t//\t\tclass names, or an array of class names. If omitted, all class names\n\t\t\t//\t\twill be deleted.\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\tRemove a class from some node:\n\t\t\t//\t|\trequire([\"dojo/dom-class\"], function(domClass){\n\t\t\t//\t|\t\tdomClass.remove(\"someNode\", \"firstClass\");\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\tRemove two classes from some node:\n\t\t\t//\t|\trequire([\"dojo/dom-class\"], function(domClass){\n\t\t\t//\t|\t\tdomClass.remove(\"someNode\", \"firstClass secondClass\");\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\tRemove two classes from some node (using array):\n\t\t\t//\t|\trequire([\"dojo/dom-class\"], function(domClass){\n\t\t\t//\t|\t\tdomClass.remove(\"someNode\", [\"firstClass\", \"secondClass\"]);\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\tRemove all classes from some node:\n\t\t\t//\t|\trequire([\"dojo/dom-class\"], function(domClass){\n\t\t\t//\t|\t\tdomClass.remove(\"someNode\");\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\tAvailable in `dojo/NodeList` for multiple removal\n\t\t\t//\t|\trequire([\"dojo/query\"], function(query){\n\t\t\t//\t|\t\tquery(\"ul > li\").removeClass(\"foo\");\n\t\t\t//\t|\t});\n\n\t\t\tnode = dom.byId(node);\n\t\t\tvar cls;\n\t\t\tif(classStr !== undefined){\n\t\t\t\tclassStr = str2array(classStr);\n\t\t\t\tcls = \" \" + node[className] + \" \";\n\t\t\t\tfor(var i = 0, len = classStr.length; i < len; ++i){\n\t\t\t\t\tcls = cls.replace(\" \" + classStr[i] + \" \", \" \");\n\t\t\t\t}\n\t\t\t\tcls = lang.trim(cls);\n\t\t\t}else{\n\t\t\t\tcls = \"\";\n\t\t\t}\n\t\t\tif(node[className] != cls){ node[className] = cls; }\n\t\t},\n\n\t\treplace: function replaceClass(/*DomNode|String*/ node, /*String|Array*/ addClassStr, /*String|Array?*/ removeClassStr){\n\t\t\t// summary:\n\t\t\t//\t\tReplaces one or more classes on a node if not present.\n\t\t\t//\t\tOperates more quickly than calling domClass.remove and domClass.add\n\t\t\t//\n\t\t\t// node: String|DOMNode\n\t\t\t//\t\tString ID or DomNode reference to remove the class from.\n\t\t\t//\n\t\t\t// addClassStr: String|Array\n\t\t\t//\t\tA String class name to add, or several space-separated class names,\n\t\t\t//\t\tor an array of class names.\n\t\t\t//\n\t\t\t// removeClassStr: String|Array?\n\t\t\t//\t\tA String class name to remove, or several space-separated class names,\n\t\t\t//\t\tor an array of class names.\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t|\trequire([\"dojo/dom-class\"], function(domClass){\n\t\t\t//\t|\t\tdomClass.replace(\"someNode\", \"add1 add2\", \"remove1 remove2\");\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\tReplace all classes with addMe\n\t\t\t//\t|\trequire([\"dojo/dom-class\"], function(domClass){\n\t\t\t//\t|\t\tdomClass.replace(\"someNode\", \"addMe\");\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\tAvailable in `dojo/NodeList` for multiple toggles\n\t\t\t//\t|\trequire([\"dojo/query\"], function(query){\n\t\t\t//\t|\t\tquery(\".findMe\").replaceClass(\"addMe\", \"removeMe\");\n\t\t\t//\t|\t});\n\n\t\t\tnode = dom.byId(node);\n\t\t\tfakeNode[className] = node[className];\n\t\t\tcls.remove(fakeNode, removeClassStr);\n\t\t\tcls.add(fakeNode, addClassStr);\n\t\t\tif(node[className] !== fakeNode[className]){\n\t\t\t\tnode[className] = fakeNode[className];\n\t\t\t}\n\t\t},\n\n\t\ttoggle: function toggleClass(/*DomNode|String*/ node, /*String|Array*/ classStr, /*Boolean?*/ condition){\n\t\t\t// summary:\n\t\t\t//\t\tAdds a class to node if not present, or removes if present.\n\t\t\t//\t\tPass a boolean condition if you want to explicitly add or remove.\n\t\t\t//\t\tReturns the condition that was specified directly or indirectly.\n\t\t\t//\n\t\t\t// node: String|DOMNode\n\t\t\t//\t\tString ID or DomNode reference to toggle a class string\n\t\t\t//\n\t\t\t// classStr: String|Array\n\t\t\t//\t\tA String class name to toggle, or several space-separated class names,\n\t\t\t//\t\tor an array of class names.\n\t\t\t//\n\t\t\t// condition:\n\t\t\t//\t\tIf passed, true means to add the class, false means to remove.\n\t\t\t//\t\tOtherwise domClass.contains(node, classStr) is used to detect the class presence.\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t|\trequire([\"dojo/dom-class\"], function(domClass){\n\t\t\t//\t|\t\tdomClass.toggle(\"someNode\", \"hovered\");\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\tForcefully add a class\n\t\t\t//\t|\trequire([\"dojo/dom-class\"], function(domClass){\n\t\t\t//\t|\t\tdomClass.toggle(\"someNode\", \"hovered\", true);\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\tAvailable in `dojo/NodeList` for multiple toggles\n\t\t\t//\t|\trequire([\"dojo/query\"], function(query){\n\t\t\t//\t|\t\tquery(\".toggleMe\").toggleClass(\"toggleMe\");\n\t\t\t//\t|\t});\n\n\t\t\tnode = dom.byId(node);\n\t\t\tif(condition === undefined){\n\t\t\t\tclassStr = str2array(classStr);\n\t\t\t\tfor(var i = 0, len = classStr.length, c; i < len; ++i){\n\t\t\t\t\tc = classStr[i];\n\t\t\t\t\tcls[cls.contains(node, c) ? \"remove\" : \"add\"](node, c);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tcls[condition ? \"add\" : \"remove\"](node, classStr);\n\t\t\t}\n\t\t\treturn condition; // Boolean\n\t\t}\n\t};\n\n\treturn cls;\n});\n","define(['./global', './has'], function(global, has){\n\tvar doc = document,\n\t\treadyStates = { 'loaded': 1, 'complete': 1 },\n\t\tfixReadyState = typeof doc.readyState != \"string\",\n\t\tready = !!readyStates[doc.readyState],\n\t\treadyQ = [],\n\t\trecursiveGuard;\n\n\tfunction domReady(callback){\n\t\t// summary:\n\t\t//\t\tPlugin to delay require()/define() callback from firing until the DOM has finished loading.\n\t\treadyQ.push(callback);\n\t\tif(ready){ processQ(); }\n\t}\n\tdomReady.load = function(id, req, load){\n\t\tdomReady(load);\n\t};\n\n\t// Export queue so that ready() can check if it's empty or not.\n\tdomReady._Q = readyQ;\n\tdomReady._onQEmpty = function(){\n\t\t// summary:\n\t\t//\t\tPrivate method overridden by dojo/ready, to notify when everything in the\n\t\t//\t\tdomReady queue has been processed. Do not use directly.\n\t\t//\t\tWill be removed in 2.0, along with domReady._Q.\n\t};\n\n\t// For FF <= 3.5\n\tif(fixReadyState){ doc.readyState = \"loading\"; }\n\n\tfunction processQ(){\n\t\t// Calls all functions in the queue in order, unless processQ() is already running, in which case just return\n\n\t\tif(recursiveGuard){ return; }\n\t\trecursiveGuard = true;\n\n\t\twhile(readyQ.length){\n\t\t\ttry{\n\t\t\t\t(readyQ.shift())(doc);\n\t\t\t}catch(err){\n\t\t\t\tconsole.error(err, \"in domReady callback\", err.stack);\n\t\t\t}\n\t\t}\n\n\t\trecursiveGuard = false;\n\n\t\t// Notification for dojo/ready. Remove for 2.0.\n\t\t// Note that this could add more tasks to the ready queue.\n\t\tdomReady._onQEmpty();\n\t}\n\n\tif(!ready){\n\t\tvar tests = [],\n\t\t\tdetectReady = function(evt){\n\t\t\t\tevt = evt || global.event;\n\t\t\t\tif(ready || (evt.type == \"readystatechange\" && !readyStates[doc.readyState])){ return; }\n\n\t\t\t\t// For FF <= 3.5\n\t\t\t\tif(fixReadyState){ doc.readyState = \"complete\"; }\n\n\t\t\t\tready = 1;\n\t\t\t\tprocessQ();\n\t\t\t},\n\t\t\ton = function(node, event){\n\t\t\t\tnode.addEventListener(event, detectReady, false);\n\t\t\t\treadyQ.push(function(){ node.removeEventListener(event, detectReady, false); });\n\t\t\t};\n\n\t\tif(!has(\"dom-addeventlistener\")){\n\t\t\ton = function(node, event){\n\t\t\t\tevent = \"on\" + event;\n\t\t\t\tnode.attachEvent(event, detectReady);\n\t\t\t\treadyQ.push(function(){ node.detachEvent(event, detectReady); });\n\t\t\t};\n\n\t\t\tvar div = doc.createElement(\"div\");\n\t\t\ttry{\n\t\t\t\tif(div.doScroll && global.frameElement === null){\n\t\t\t\t\t// the doScroll test is only useful if we're in the top-most frame\n\t\t\t\t\ttests.push(function(){\n\t\t\t\t\t\t// Derived with permission from Diego Perini's IEContentLoaded\n\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\ttry{\n\t\t\t\t\t\t\tdiv.doScroll(\"left\");\n\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t}catch(e){}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}catch(e){}\n\t\t}\n\n\t\ton(doc, \"DOMContentLoaded\");\n\t\ton(global, \"load\");\n\n\t\tif(\"onreadystatechange\" in doc){\n\t\t\ton(doc, \"readystatechange\");\n\t\t}else if(!fixReadyState){\n\t\t\t// if the ready state property exists and there's\n\t\t\t// no readystatechange event, poll for the state\n\t\t\t// to change\n\t\t\ttests.push(function(){\n\t\t\t\treturn readyStates[doc.readyState];\n\t\t\t});\n\t\t}\n\n\t\tif(tests.length){\n\t\t\tvar poller = function(){\n\t\t\t\tif(ready){ return; }\n\t\t\t\tvar i = tests.length;\n\t\t\t\twhile(i--){\n\t\t\t\t\tif(tests[i]()){\n\t\t\t\t\t\tdetectReady(\"poller\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsetTimeout(poller, 30);\n\t\t\t};\n\t\t\tpoller();\n\t\t}\n\t}\n\n\treturn domReady;\n});\n","define([\n\t\"require\",\t\t\t// require, require.toUrl\n\t\"./_base/config\", // config.blankGif\n\t\"./dom-class\", // domClass.add\n\t\"./dom-style\", // domStyle.getComputedStyle\n\t\"./has\",\n\t\"./domReady\",\n\t\"./_base/window\" // win.body\n], function(require, config, domClass, domStyle, has, domReady, win){\n\n\t// module:\n\t//\t\tdojo/hccss\n\n\t/*=====\n\treturn function(){\n\t\t// summary:\n\t\t//\t\tTest if computer is in high contrast mode (i.e. if browser is not displaying background images).\n\t\t//\t\tDefines `has(\"highcontrast\")` and sets `dj_a11y` CSS class on `<body>` if machine is in high contrast mode.\n\t\t//\t\tReturns `has()` method;\n\t};\n\t=====*/\n\n\t// Has() test for when background images aren't displayed. Don't call has(\"highcontrast\") before dojo/domReady!.\n\thas.add(\"highcontrast\", function(){\n\t\t// note: if multiple documents, doesn't matter which one we use\n\t\tvar div = win.doc.createElement(\"div\");\n\t\ttry{\n\t\t\tdiv.style.cssText = \"border: 1px solid; border-color:red green; position: absolute; height: 5px; top: -999px;\" +\n\t\t\t\t\"background-image: url(\\\"\" + (config.blankGif || require.toUrl(\"./resources/blank.gif\")) + \"\\\");\";\n\t\t\twin.body().appendChild(div);\n\n\t\t\tvar cs = domStyle.getComputedStyle(div),\n\t\t\t\tbkImg = cs.backgroundImage;\n\t\t\treturn cs.borderTopColor == cs.borderRightColor ||\n\t\t\t\t(bkImg && (bkImg == \"none\" || bkImg == \"url(invalid-url:)\" ));\n\t\t}catch(e){\n\t\t\tconsole.warn(\"hccss: exception detecting high-contrast mode, document is likely hidden: \" + e.toString());\n\t\t\treturn false;\n\t\t}finally{\n\t\t\tif(has(\"ie\") <= 8){\n\t\t\t\tdiv.outerHTML = \"\";\t\t// prevent mixed-content warning, see http://support.microsoft.com/kb/925014\n\t\t\t}else{\n\t\t\t\twin.body().removeChild(div);\n\t\t\t}\n\t\t}\n\t});\n\n\tdomReady(function(){\n\t\tif(has(\"highcontrast\")){\n\t\t\tdomClass.add(win.body(), \"dj_a11y\");\n\t\t}\n\t});\n\n\treturn has;\n});\n","define([\"./_base/kernel\", \"./_base/lang\", \"./_base/array\", \"./_base/declare\", \"./dom\", \"./dom-construct\", \"./parser\"],\n\tfunction(kernel, lang, darray, declare, dom, domConstruct, parser){\n\t// module:\n\t//\t\tdojo/html\n\n\t// the parser might be needed..\n\n\t// idCounter is incremented with each instantiation to allow assignment of a unique id for tracking, logging purposes\n\tvar idCounter = 0;\n\n\tvar html = {\n\t\t// summary:\n\t\t//\t\tTODOC\n\n\t\t_secureForInnerHtml: function(/*String*/ cont){\n\t\t\t// summary:\n\t\t\t//\t\tremoves !DOCTYPE and title elements from the html string.\n\t\t\t//\n\t\t\t//\t\tkhtml is picky about dom faults, you can't attach a style or `<title>` node as child of body\n\t\t\t//\t\tmust go into head, so we need to cut out those tags\n\t\t\t// cont:\n\t\t\t//\t\tAn html string for insertion into the dom\n\t\t\t//\n\t\t\treturn cont.replace(/(?:\\s*<!DOCTYPE\\s[^>]+>|<title[^>]*>[\\s\\S]*?<\\/title>)/ig, \"\"); // String\n\t\t},\n\n\t\t// Deprecated, should use dojo/dom-constuct.empty() directly, remove in 2.0.\n\t\t_emptyNode: domConstruct.empty,\n\n\t\t_setNodeContent: function(/*DomNode*/ node, /*String|DomNode|NodeList*/ cont){\n\t\t\t// summary:\n\t\t\t//\t\tinserts the given content into the given node\n\t\t\t// node:\n\t\t\t//\t\tthe parent element\n\t\t\t// content:\n\t\t\t//\t\tthe content to be set on the parent element.\n\t\t\t//\t\tThis can be an html string, a node reference or a NodeList, dojo/NodeList, Array or other enumerable list of nodes\n\n\t\t\t// always empty\n\t\t\tdomConstruct.empty(node);\n\n\t\t\tif(cont){\n\t\t\t\tif(typeof cont == \"number\"){\n\t\t\t\t\tcont = cont.toString();\n\t\t\t\t}\n\t\t\t\tif(typeof cont == \"string\"){\n\t\t\t\t\tcont = domConstruct.toDom(cont, node.ownerDocument);\n\t\t\t\t}\n\t\t\t\tif(!cont.nodeType && lang.isArrayLike(cont)){\n\t\t\t\t\t// handle as enumerable, but it may shrink as we enumerate it\n\t\t\t\t\tfor(var startlen=cont.length, i=0; i<cont.length; i=startlen==cont.length ? i+1 : 0){\n\t\t\t\t\t\tdomConstruct.place( cont[i], node, \"last\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\t// pass nodes, documentFragments and unknowns through to dojo.place\n\t\t\t\t\tdomConstruct.place(cont, node, \"last\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// return DomNode\n\t\t\treturn node;\n\t\t},\n\n\t\t// we wrap up the content-setting operation in a object\n\t\t_ContentSetter: declare(\"dojo.html._ContentSetter\", null, {\n\t\t\t// node: DomNode|String\n\t\t\t//\t\tAn node which will be the parent element that we set content into\n\t\t\tnode: \"\",\n\n\t\t\t// content: String|DomNode|DomNode[]\n\t\t\t//\t\tThe content to be placed in the node. Can be an HTML string, a node reference, or a enumerable list of nodes\n\t\t\tcontent: \"\",\n\n\t\t\t// id: String?\n\t\t\t//\t\tUsually only used internally, and auto-generated with each instance\n\t\t\tid: \"\",\n\n\t\t\t// cleanContent: Boolean\n\t\t\t//\t\tShould the content be treated as a full html document,\n\t\t\t//\t\tand the real content stripped of <html>, <body> wrapper before injection\n\t\t\tcleanContent: false,\n\n\t\t\t// extractContent: Boolean\n\t\t\t//\t\tShould the content be treated as a full html document,\n\t\t\t//\t\tand the real content stripped of `<html> <body>` wrapper before injection\n\t\t\textractContent: false,\n\n\t\t\t// parseContent: Boolean\n\t\t\t//\t\tShould the node by passed to the parser after the new content is set\n\t\t\tparseContent: false,\n\n\t\t\t// parserScope: String\n\t\t\t//\t\tFlag passed to parser.\tRoot for attribute names to search for.\t If scopeName is dojo,\n\t\t\t//\t\twill search for data-dojo-type (or dojoType). For backwards compatibility\n\t\t\t//\t\treasons defaults to dojo._scopeName (which is \"dojo\" except when\n\t\t\t//\t\tmulti-version support is used, when it will be something like dojo16, dojo20, etc.)\n\t\t\tparserScope: kernel._scopeName,\n\n\t\t\t// startup: Boolean\n\t\t\t//\t\tStart the child widgets after parsing them.\t Only obeyed if parseContent is true.\n\t\t\tstartup: true,\n\n\t\t\t// lifecycle methods\n\t\t\tconstructor: function(/*Object*/ params, /*String|DomNode*/ node){\n\t\t\t\t// summary:\n\t\t\t\t//\t\tProvides a configurable, extensible object to wrap the setting on content on a node\n\t\t\t\t//\t\tcall the set() method to actually set the content..\n\n\t\t\t\t// the original params are mixed directly into the instance \"this\"\n\t\t\t\tlang.mixin(this, params || {});\n\n\t\t\t\t// give precedence to params.node vs. the node argument\n\t\t\t\t// and ensure its a node, not an id string\n\t\t\t\tnode = this.node = dom.byId( this.node || node );\n\n\t\t\t\tif(!this.id){\n\t\t\t\t\tthis.id = [\n\t\t\t\t\t\t\"Setter\",\n\t\t\t\t\t\t(node) ? node.id || node.tagName : \"\",\n\t\t\t\t\t\tidCounter++\n\t\t\t\t\t].join(\"_\");\n\t\t\t\t}\n\t\t\t},\n\t\t\tset: function(/* String|DomNode|NodeList? */ cont, /*Object?*/ params){\n\t\t\t\t// summary:\n\t\t\t\t//\t\tfront-end to the set-content sequence\n\t\t\t\t// cont:\n\t\t\t\t//\t\tAn html string, node or enumerable list of nodes for insertion into the dom\n\t\t\t\t//\t\tIf not provided, the object's content property will be used\n\t\t\t\tif(undefined !== cont){\n\t\t\t\t\tthis.content = cont;\n\t\t\t\t}\n\t\t\t\tif(typeof cont == 'number'){\n\t\t\t\t\tcont = cont.toString();\n\t\t\t\t}\n\t\t\t\t// in the re-use scenario, set needs to be able to mixin new configuration\n\t\t\t\tif(params){\n\t\t\t\t\tthis._mixin(params);\n\t\t\t\t}\n\n\t\t\t\tthis.onBegin();\n\t\t\t\tthis.setContent();\n\n\t\t\t\tvar ret = this.onEnd();\n\n\t\t\t\tif(ret && ret.then){\n\t\t\t\t\t// Make dojox/html/_ContentSetter.set() return a Promise that resolves when load and parse complete.\n\t\t\t\t\treturn ret;\n\t\t\t\t}else{\n\t\t\t\t\t// Vanilla dojo/html._ContentSetter.set() returns a DOMNode for back compat. For 2.0, switch it to\n\t\t\t\t\t// return a Deferred like above.\n\t\t\t\t\treturn this.node;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tsetContent: function(){\n\t\t\t\t// summary:\n\t\t\t\t//\t\tsets the content on the node\n\n\t\t\t\tvar node = this.node;\n\t\t\t\tif(!node){\n\t\t\t\t\t// can't proceed\n\t\t\t\t\tthrow new Error(this.declaredClass + \": setContent given no node\");\n\t\t\t\t}\n\t\t\t\ttry{\n\t\t\t\t\tnode = html._setNodeContent(node, this.content);\n\t\t\t\t}catch(e){\n\t\t\t\t\t// check if a domfault occurs when we are appending this.errorMessage\n\t\t\t\t\t// like for instance if domNode is a UL and we try append a DIV\n\n\t\t\t\t\t// FIXME: need to allow the user to provide a content error message string\n\t\t\t\t\tvar errMess = this.onContentError(e);\n\t\t\t\t\ttry{\n\t\t\t\t\t\tnode.innerHTML = errMess;\n\t\t\t\t\t}catch(e){\n\t\t\t\t\t\tconsole.error('Fatal ' + this.declaredClass + '.setContent could not change content due to '+e.message, e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// always put back the node for the next method\n\t\t\t\tthis.node = node; // DomNode\n\t\t\t},\n\n\t\t\tempty: function(){\n\t\t\t\t// summary:\n\t\t\t\t//\t\tcleanly empty out existing content\n\n\t\t\t\t// If there is a parse in progress, cancel it.\n\t\t\t\tif(this.parseDeferred){\n\t\t\t\t\tif(!this.parseDeferred.isResolved()){\n\t\t\t\t\t\tthis.parseDeferred.cancel();\n\t\t\t\t\t}\n\t\t\t\t\tdelete this.parseDeferred;\n\t\t\t\t}\n\n\t\t\t\t// destroy any widgets from a previous run\n\t\t\t\t// NOTE: if you don't want this you'll need to empty\n\t\t\t\t// the parseResults array property yourself to avoid bad things happening\n\t\t\t\tif(this.parseResults && this.parseResults.length){\n\t\t\t\t\tdarray.forEach(this.parseResults, function(w){\n\t\t\t\t\t\tif(w.destroy){\n\t\t\t\t\t\t\tw.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tdelete this.parseResults;\n\t\t\t\t}\n\t\t\t\t// this is fast, but if you know its already empty or safe, you could\n\t\t\t\t// override empty to skip this step\n\t\t\t\tdomConstruct.empty(this.node);\n\t\t\t},\n\n\t\t\tonBegin: function(){\n\t\t\t\t// summary:\n\t\t\t\t//\t\tCalled after instantiation, but before set();\n\t\t\t\t//\t\tIt allows modification of any of the object properties -\n\t\t\t\t//\t\tincluding the node and content provided - before the set operation actually takes place\n\t\t\t\t//\t\tThis default implementation checks for cleanContent and extractContent flags to\n\t\t\t\t//\t\toptionally pre-process html string content\n\t\t\t\tvar cont = this.content;\n\n\t\t\t\tif(lang.isString(cont)){\n\t\t\t\t\tif(this.cleanContent){\n\t\t\t\t\t\tcont = html._secureForInnerHtml(cont);\n\t\t\t\t\t}\n\n\t\t\t\t\tif(this.extractContent){\n\t\t\t\t\t\tvar match = cont.match(/<body[^>]*>\\s*([\\s\\S]+)\\s*<\\/body>/im);\n\t\t\t\t\t\tif(match){ cont = match[1]; }\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// clean out the node and any cruft associated with it - like widgets\n\t\t\t\tthis.empty();\n\n\t\t\t\tthis.content = cont;\n\t\t\t\treturn this.node; // DomNode\n\t\t\t},\n\n\t\t\tonEnd: function(){\n\t\t\t\t// summary:\n\t\t\t\t//\t\tCalled after set(), when the new content has been pushed into the node\n\t\t\t\t//\t\tIt provides an opportunity for post-processing before handing back the node to the caller\n\t\t\t\t//\t\tThis default implementation checks a parseContent flag to optionally run the dojo parser over the new content\n\t\t\t\tif(this.parseContent){\n\t\t\t\t\t// populates this.parseResults and this.parseDeferred if you need those..\n\t\t\t\t\tthis._parse();\n\t\t\t\t}\n\t\t\t\treturn this.node; // DomNode\n\t\t\t\t// TODO: for 2.0 return a Promise indicating that the parse completed.\n\t\t\t},\n\n\t\t\ttearDown: function(){\n\t\t\t\t// summary:\n\t\t\t\t//\t\tmanually reset the Setter instance if its being re-used for example for another set()\n\t\t\t\t// description:\n\t\t\t\t//\t\ttearDown() is not called automatically.\n\t\t\t\t//\t\tIn normal use, the Setter instance properties are simply allowed to fall out of scope\n\t\t\t\t//\t\tbut the tearDown method can be called to explicitly reset this instance.\n\t\t\t\tdelete this.parseResults;\n\t\t\t\tdelete this.parseDeferred;\n\t\t\t\tdelete this.node;\n\t\t\t\tdelete this.content;\n\t\t\t},\n\n\t\t\tonContentError: function(err){\n\t\t\t\treturn \"Error occurred setting content: \" + err;\n\t\t\t},\n\n\t\t\tonExecError: function(err){\n\t\t\t\treturn \"Error occurred executing scripts: \" + err;\n\t\t\t},\n\n\t\t\t_mixin: function(params){\n\t\t\t\t// mix properties/methods into the instance\n\t\t\t\t// TODO: the intention with tearDown is to put the Setter's state\n\t\t\t\t// back to that of the original constructor (vs. deleting/resetting everything regardless of ctor params)\n\t\t\t\t// so we could do something here to move the original properties aside for later restoration\n\t\t\t\tvar empty = {}, key;\n\t\t\t\tfor(key in params){\n\t\t\t\t\tif(key in empty){ continue; }\n\t\t\t\t\t// TODO: here's our opportunity to mask the properties we don't consider configurable/overridable\n\t\t\t\t\t// .. but history shows we'll almost always guess wrong\n\t\t\t\t\tthis[key] = params[key];\n\t\t\t\t}\n\t\t\t},\n\t\t\t_parse: function(){\n\t\t\t\t// summary:\n\t\t\t\t//\t\truns the dojo parser over the node contents, storing any results in this.parseResults\n\t\t\t\t//\t\tand the parse promise in this.parseDeferred\n\t\t\t\t//\t\tAny errors resulting from parsing are passed to _onError for handling\n\n\t\t\t\tvar rootNode = this.node;\n\t\t\t\ttry{\n\t\t\t\t\t// store the results (widgets, whatever) for potential retrieval\n\t\t\t\t\tvar inherited = {};\n\t\t\t\t\tdarray.forEach([\"dir\", \"lang\", \"textDir\"], function(name){\n\t\t\t\t\t\tif(this[name]){\n\t\t\t\t\t\t\tinherited[name] = this[name];\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this);\n\t\t\t\t\tvar self = this;\n\t\t\t\t\tthis.parseDeferred = parser.parse({\n\t\t\t\t\t\trootNode: rootNode,\n\t\t\t\t\t\tnoStart: !this.startup,\n\t\t\t\t\t\tinherited: inherited,\n\t\t\t\t\t\tscope: this.parserScope\n\t\t\t\t\t}).then(function(results){\n\t\t\t\t\t\t\treturn self.parseResults = results;\n\t\t\t\t\t\t}, function(e){\n\t\t\t\t\t\t\tself._onError('Content', e, \"Error parsing in _ContentSetter#\" + self.id);\n\t\t\t\t\t\t});\n\t\t\t\t}catch(e){\n\t\t\t\t\tthis._onError('Content', e, \"Error parsing in _ContentSetter#\" + this.id);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onError: function(type, err, consoleText){\n\t\t\t\t// summary:\n\t\t\t\t//\t\tshows user the string that is returned by on[type]Error\n\t\t\t\t//\t\toverride/implement on[type]Error and return your own string to customize\n\t\t\t\tvar errText = this['on' + type + 'Error'].call(this, err);\n\t\t\t\tif(consoleText){\n\t\t\t\t\tconsole.error(consoleText, err);\n\t\t\t\t}else if(errText){ // a empty string won't change current content\n\t\t\t\t\thtml._setNodeContent(this.node, errText, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}), // end declare()\n\n\t\tset: function(/*DomNode*/ node, /*String|DomNode|NodeList*/ cont, /*Object?*/ params){\n\t\t\t// summary:\n\t\t\t//\t\tinserts (replaces) the given content into the given node. dojo/dom-construct.place(cont, node, \"only\")\n\t\t\t//\t\tmay be a better choice for simple HTML insertion.\n\t\t\t// description:\n\t\t\t//\t\tUnless you need to use the params capabilities of this method, you should use\n\t\t\t//\t\tdojo/dom-construct.place(cont, node, \"only\"). dojo/dom-construct..place() has more robust support for injecting\n\t\t\t//\t\tan HTML string into the DOM, but it only handles inserting an HTML string as DOM\n\t\t\t//\t\telements, or inserting a DOM node. dojo/dom-construct..place does not handle NodeList insertions\n\t\t\t//\t\tdojo/dom-construct.place(cont, node, \"only\"). dojo/dom-construct.place() has more robust support for injecting\n\t\t\t//\t\tan HTML string into the DOM, but it only handles inserting an HTML string as DOM\n\t\t\t//\t\telements, or inserting a DOM node. dojo/dom-construct.place does not handle NodeList insertions\n\t\t\t//\t\tor the other capabilities as defined by the params object for this method.\n\t\t\t// node:\n\t\t\t//\t\tthe parent element that will receive the content\n\t\t\t// cont:\n\t\t\t//\t\tthe content to be set on the parent element.\n\t\t\t//\t\tThis can be an html string, a node reference or a NodeList, dojo/NodeList, Array or other enumerable list of nodes\n\t\t\t// params:\n\t\t\t//\t\tOptional flags/properties to configure the content-setting. See dojo/html/_ContentSetter\n\t\t\t// example:\n\t\t\t//\t\tA safe string/node/nodelist content replacement/injection with hooks for extension\n\t\t\t//\t\tExample Usage:\n\t\t\t//\t|\thtml.set(node, \"some string\");\n\t\t\t//\t|\thtml.set(node, contentNode, {options});\n\t\t\t//\t|\thtml.set(node, myNode.childNodes, {options});\n\t\t\tif(undefined == cont){\n\t\t\t\tconsole.warn(\"dojo.html.set: no cont argument provided, using empty string\");\n\t\t\t\tcont = \"\";\n\t\t\t}\n\t\t\tif (typeof cont == 'number'){\n\t\t\t\tcont = cont.toString();\n\t\t\t}\n\t\t\tif(!params){\n\t\t\t\t// simple and fast\n\t\t\t\treturn html._setNodeContent(node, cont, true);\n\t\t\t}else{\n\t\t\t\t// more options but slower\n\t\t\t\t// note the arguments are reversed in order, to match the convention for instantiation via the parser\n\t\t\t\tvar op = new html._ContentSetter(lang.mixin(\n\t\t\t\t\tparams,\n\t\t\t\t\t{ content: cont, node: node }\n\t\t\t\t));\n\t\t\t\treturn op.set();\n\t\t\t}\n\t\t}\n\t};\n\tlang.setObject(\"dojo.html\", html);\n\n\treturn html;\n});\n","define([\n\t\"require\", \"./_base/kernel\", \"./_base/lang\", \"./_base/array\", \"./_base/config\", \"./dom\", \"./_base/window\",\n\t\t\"./_base/url\", \"./aspect\", \"./promise/all\", \"./date/stamp\", \"./Deferred\", \"./has\", \"./query\", \"./on\", \"./ready\"\n], function(require, dojo, dlang, darray, config, dom, dwindow, _Url, aspect, all, dates, Deferred, has, query, don, ready){\n\n\t// module:\n\t//\t\tdojo/parser\n\n\tnew Date(\"X\"); // workaround for #11279, new Date(\"\") == NaN\n\n\t// data-dojo-props etc. is not restricted to JSON, it can be any javascript\n\tfunction myEval(text){\n\t\treturn eval(\"(\" + text + \")\");\n\t}\n\n\t// Widgets like BorderContainer add properties to _Widget via dojo.extend().\n\t// If BorderContainer is loaded after _Widget's parameter list has been cached,\n\t// we need to refresh that parameter list (for _Widget and all widgets that extend _Widget).\n\tvar extendCnt = 0;\n\taspect.after(dlang, \"extend\", function(){\n\t\textendCnt++;\n\t}, true);\n\n\tfunction getNameMap(ctor){\n\t\t// summary:\n\t\t//\t\tReturns map from lowercase name to attribute name in class, ex: {onclick: \"onClick\"}\n\t\tvar map = ctor._nameCaseMap, proto = ctor.prototype;\n\n\t\t// Create the map if it's undefined.\n\t\t// Refresh the map if a superclass was possibly extended with new methods since the map was created.\n\t\tif(!map || map._extendCnt < extendCnt){\n\t\t\tmap = ctor._nameCaseMap = {};\n\t\t\tfor(var name in proto){\n\t\t\t\tif(name.charAt(0) === \"_\"){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\t// skip internal properties\n\t\t\t\tmap[name.toLowerCase()] = name;\n\t\t\t}\n\t\t\tmap._extendCnt = extendCnt;\n\t\t}\n\t\treturn map;\n\t}\n\n\tfunction getCtor(/*String[]*/ types, /*Function?*/ contextRequire){\n\t\t// summary:\n\t\t//\t\tRetrieves a constructor. If the types array contains more than one class/MID then the\n\t\t//\t\tsubsequent classes will be mixed into the first class and a unique constructor will be\n\t\t//\t\treturned for that array.\n\n\t\tif(!contextRequire){\n\t\t\tcontextRequire = require;\n\t\t}\n\n\t\t// Map from widget name or list of widget names(ex: \"dijit/form/Button,acme/MyMixin\") to a constructor.\n\t\t// Keep separate map for each requireContext to avoid false matches (ex: \"./Foo\" can mean different things\n\t\t// depending on context.)\n\t\tvar ctorMap = contextRequire._dojoParserCtorMap || (contextRequire._dojoParserCtorMap = {});\n\n\t\tvar ts = types.join();\n\t\tif(!ctorMap[ts]){\n\t\t\tvar mixins = [];\n\t\t\tfor(var i = 0, l = types.length; i < l; i++){\n\t\t\t\tvar t = types[i];\n\t\t\t\t// TODO: Consider swapping getObject and require in the future\n\t\t\t\tmixins[mixins.length] = (ctorMap[t] = ctorMap[t] || (dlang.getObject(t) || (~t.indexOf('/') &&\n\t\t\t\t\tcontextRequire(t))));\n\t\t\t}\n\t\t\tvar ctor = mixins.shift();\n\t\t\tctorMap[ts] = mixins.length ? (ctor.createSubclass ? ctor.createSubclass(mixins) : ctor.extend.apply(ctor, mixins)) : ctor;\n\t\t}\n\n\t\treturn ctorMap[ts];\n\t}\n\n\tvar parser = {\n\t\t// summary:\n\t\t//\t\tThe Dom/Widget parsing package\n\n\t\t_clearCache: function(){\n\t\t\t// summary:\n\t\t\t//\t\tClear cached data. Used mainly for benchmarking.\n\t\t\textendCnt++;\n\t\t\t_ctorMap = {};\n\t\t},\n\n\t\t_functionFromScript: function(script, attrData){\n\t\t\t// summary:\n\t\t\t//\t\tConvert a `<script type=\"dojo/method\" args=\"a, b, c\"> ... </script>`\n\t\t\t//\t\tinto a function\n\t\t\t// script: DOMNode\n\t\t\t//\t\tThe `<script>` DOMNode\n\t\t\t// attrData: String\n\t\t\t//\t\tFor HTML5 compliance, searches for attrData + \"args\" (typically\n\t\t\t//\t\t\"data-dojo-args\") instead of \"args\"\n\t\t\tvar preamble = \"\",\n\t\t\t\tsuffix = \"\",\n\t\t\t\targsStr = (script.getAttribute(attrData + \"args\") || script.getAttribute(\"args\")),\n\t\t\t\twithStr = script.getAttribute(\"with\");\n\n\t\t\t// Convert any arguments supplied in script tag into an array to be passed to the\n\t\t\tvar fnArgs = (argsStr || \"\").split(/\\s*,\\s*/);\n\n\t\t\tif(withStr && withStr.length){\n\t\t\t\tdarray.forEach(withStr.split(/\\s*,\\s*/), function(part){\n\t\t\t\t\tpreamble += \"with(\" + part + \"){\";\n\t\t\t\t\tsuffix += \"}\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn new Function(fnArgs, preamble + script.innerHTML + suffix);\n\t\t},\n\n\t\tinstantiate: function(nodes, mixin, options){\n\t\t\t// summary:\n\t\t\t//\t\tTakes array of nodes, and turns them into class instances and\n\t\t\t//\t\tpotentially calls a startup method to allow them to connect with\n\t\t\t//\t\tany children.\n\t\t\t// nodes: Array\n\t\t\t//\t\tArray of DOM nodes\n\t\t\t// mixin: Object?\n\t\t\t//\t\tAn object that will be mixed in with each node in the array.\n\t\t\t//\t\tValues in the mixin will override values in the node, if they\n\t\t\t//\t\texist.\n\t\t\t// options: Object?\n\t\t\t//\t\tAn object used to hold kwArgs for instantiation.\n\t\t\t//\t\tSee parse.options argument for details.\n\t\t\t// returns:\n\t\t\t//\t\tArray of instances.\n\n\t\t\tmixin = mixin || {};\n\t\t\toptions = options || {};\n\n\t\t\tvar dojoType = (options.scope || dojo._scopeName) + \"Type\", // typically \"dojoType\"\n\t\t\t\tattrData = \"data-\" + (options.scope || dojo._scopeName) + \"-\", // typically \"data-dojo-\"\n\t\t\t\tdataDojoType = attrData + \"type\", // typically \"data-dojo-type\"\n\t\t\t\tdataDojoMixins = attrData + \"mixins\";\t\t\t\t\t// typically \"data-dojo-mixins\"\n\n\t\t\tvar list = [];\n\t\t\tdarray.forEach(nodes, function(node){\n\t\t\t\tvar type = dojoType in mixin ? mixin[dojoType] : node.getAttribute(dataDojoType) || node.getAttribute(dojoType);\n\t\t\t\tif(type){\n\t\t\t\t\tvar mixinsValue = node.getAttribute(dataDojoMixins),\n\t\t\t\t\t\ttypes = mixinsValue ? [type].concat(mixinsValue.split(/\\s*,\\s*/)) : [type];\n\n\t\t\t\t\tlist.push({\n\t\t\t\t\t\tnode: node,\n\t\t\t\t\t\ttypes: types\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Instantiate the nodes and return the list of instances.\n\t\t\treturn this._instantiate(list, mixin, options);\n\t\t},\n\n\t\t_instantiate: function(nodes, mixin, options, returnPromise){\n\t\t\t// summary:\n\t\t\t//\t\tTakes array of objects representing nodes, and turns them into class instances and\n\t\t\t//\t\tpotentially calls a startup method to allow them to connect with\n\t\t\t//\t\tany children.\n\t\t\t// nodes: Array\n\t\t\t//\t\tArray of objects like\n\t\t\t//\t|\t\t{\n\t\t\t//\t|\t\t\tctor: Function (may be null)\n\t\t\t//\t|\t\t\ttypes: [\"dijit/form/Button\", \"acme/MyMixin\"] (used if ctor not specified)\n\t\t\t//\t|\t\t\tnode: DOMNode,\n\t\t\t//\t|\t\t\tscripts: [ ... ],\t// array of <script type=\"dojo/...\"> children of node\n\t\t\t//\t|\t\t\tinherited: { ... }\t// settings inherited from ancestors like dir, theme, etc.\n\t\t\t//\t|\t\t}\n\t\t\t// mixin: Object\n\t\t\t//\t\tAn object that will be mixed in with each node in the array.\n\t\t\t//\t\tValues in the mixin will override values in the node, if they\n\t\t\t//\t\texist.\n\t\t\t// options: Object\n\t\t\t//\t\tAn options object used to hold kwArgs for instantiation.\n\t\t\t//\t\tSee parse.options argument for details.\n\t\t\t// returnPromise: Boolean\n\t\t\t//\t\tReturn a Promise rather than the instance; supports asynchronous widget creation.\n\t\t\t// returns:\n\t\t\t//\t\tArray of instances, or if returnPromise is true, a promise for array of instances\n\t\t\t//\t\tthat resolves when instances have finished initializing.\n\n\t\t\t// Call widget constructors. Some may be asynchronous and return promises.\n\t\t\tvar thelist = darray.map(nodes, function(obj){\n\t\t\t\tvar ctor = obj.ctor || getCtor(obj.types, options.contextRequire);\n\t\t\t\t// If we still haven't resolved a ctor, it is fatal now\n\t\t\t\tif(!ctor){\n\t\t\t\t\tthrow new Error(\"Unable to resolve constructor for: '\" + obj.types.join() + \"'\");\n\t\t\t\t}\n\t\t\t\treturn this.construct(ctor, obj.node, mixin, options, obj.scripts, obj.inherited);\n\t\t\t}, this);\n\n\t\t\t// After all widget construction finishes, call startup on each top level instance if it makes sense (as for\n\t\t\t// widgets). Parent widgets will recursively call startup on their (non-top level) children\n\t\t\tfunction onConstruct(thelist){\n\t\t\t\tif(!mixin._started && !options.noStart){\n\t\t\t\t\tdarray.forEach(thelist, function(instance){\n\t\t\t\t\t\tif(typeof instance.startup === \"function\" && !instance._started){\n\t\t\t\t\t\t\tinstance.startup();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn thelist;\n\t\t\t}\n\n\t\t\tif(returnPromise){\n\t\t\t\treturn all(thelist).then(onConstruct);\n\t\t\t}else{\n\t\t\t\t// Back-compat path, remove for 2.0\n\t\t\t\treturn onConstruct(thelist);\n\t\t\t}\n\t\t},\n\n\t\tconstruct: function(ctor, node, mixin, options, scripts, inherited){\n\t\t\t// summary:\n\t\t\t//\t\tCalls new ctor(params, node), where params is the hash of parameters specified on the node,\n\t\t\t//\t\texcluding data-dojo-type and data-dojo-mixins. Does not call startup().\n\t\t\t// ctor: Function\n\t\t\t//\t\tWidget constructor.\n\t\t\t// node: DOMNode\n\t\t\t//\t\tThis node will be replaced/attached to by the widget. It also specifies the arguments to pass to ctor.\n\t\t\t// mixin: Object?\n\t\t\t//\t\tAttributes in this object will be passed as parameters to ctor,\n\t\t\t//\t\toverriding attributes specified on the node.\n\t\t\t// options: Object?\n\t\t\t//\t\tAn options object used to hold kwArgs for instantiation. See parse.options argument for details.\n\t\t\t// scripts: DomNode[]?\n\t\t\t//\t\tArray of `<script type=\"dojo/*\">` DOMNodes. If not specified, will search for `<script>` tags inside node.\n\t\t\t// inherited: Object?\n\t\t\t//\t\tSettings from dir=rtl or lang=... on a node above this node. Overrides options.inherited.\n\t\t\t// returns:\n\t\t\t//\t\tInstance or Promise for the instance, if markupFactory() itself returned a promise\n\n\t\t\tvar proto = ctor && ctor.prototype;\n\t\t\toptions = options || {};\n\n\t\t\t// Setup hash to hold parameter settings for this widget.\tStart with the parameter\n\t\t\t// settings inherited from ancestors (\"dir\" and \"lang\").\n\t\t\t// Inherited setting may later be overridden by explicit settings on node itself.\n\t\t\tvar params = {};\n\n\t\t\tif(options.defaults){\n\t\t\t\t// settings for the document itself (or whatever subtree is being parsed)\n\t\t\t\tdlang.mixin(params, options.defaults);\n\t\t\t}\n\t\t\tif(inherited){\n\t\t\t\t// settings from dir=rtl or lang=... on a node above this node\n\t\t\t\tdlang.mixin(params, inherited);\n\t\t\t}\n\n\t\t\t// Get list of attributes explicitly listed in the markup\n\t\t\tvar attributes;\n\t\t\tif(has(\"dom-attributes-explicit\")){\n\t\t\t\t// Standard path to get list of user specified attributes\n\t\t\t\tattributes = node.attributes;\n\t\t\t}else if(has(\"dom-attributes-specified-flag\")){\n\t\t\t\t// Special processing needed for IE8, to skip a few faux values in attributes[]\n\t\t\t\tattributes = darray.filter(node.attributes, function(a){\n\t\t\t\t\treturn a.specified;\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\t// Special path for IE6-7, avoid (sometimes >100) bogus entries in node.attributes\n\t\t\t\tvar clone = /^input$|^img$/i.test(node.nodeName) ? node : node.cloneNode(false),\n\t\t\t\t\tattrs = clone.outerHTML.replace(/=[^\\s\"']+|=\"[^\"]*\"|='[^']*'/g, \"\").replace(/^\\s*<[a-zA-Z0-9]*\\s*/, \"\").replace(/\\s*>.*$/, \"\");\n\n\t\t\t\tattributes = darray.map(attrs.split(/\\s+/), function(name){\n\t\t\t\t\tvar lcName = name.toLowerCase();\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\t// getAttribute() doesn't work for button.value, returns innerHTML of button.\n\t\t\t\t\t\t// but getAttributeNode().value doesn't work for the form.encType or li.value\n\t\t\t\t\t\tvalue: (node.nodeName == \"LI\" && name == \"value\") || lcName == \"enctype\" ?\n\t\t\t\t\t\t\tnode.getAttribute(lcName) : node.getAttributeNode(lcName).value\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Hash to convert scoped attribute name (ex: data-dojo17-params) to something friendly (ex: data-dojo-params)\n\t\t\t// TODO: remove scope for 2.0\n\t\t\tvar scope = options.scope || dojo._scopeName,\n\t\t\t\tattrData = \"data-\" + scope + \"-\", // typically \"data-dojo-\"\n\t\t\t\thash = {};\n\t\t\tif(scope !== \"dojo\"){\n\t\t\t\thash[attrData + \"props\"] = \"data-dojo-props\";\n\t\t\t\thash[attrData + \"type\"] = \"data-dojo-type\";\n\t\t\t\thash[attrData + \"mixins\"] = \"data-dojo-mixins\";\n\t\t\t\thash[scope + \"type\"] = \"dojotype\";\n\t\t\t\thash[attrData + \"id\"] = \"data-dojo-id\";\n\t\t\t}\n\n\t\t\t// Read in attributes and process them, including data-dojo-props, data-dojo-type,\n\t\t\t// dojoAttachPoint, etc., as well as normal foo=bar attributes.\n\t\t\tvar i = 0, item, funcAttrs = [], jsname, extra;\n\t\t\twhile(item = attributes[i++]){\n\t\t\t\tvar name = item.name,\n\t\t\t\t\tlcName = name.toLowerCase(),\n\t\t\t\t\tvalue = item.value;\n\n\t\t\t\tswitch(hash[lcName] || lcName){\n\t\t\t\t// Already processed, just ignore\n\t\t\t\tcase \"data-dojo-type\":\n\t\t\t\tcase \"dojotype\":\n\t\t\t\tcase \"data-dojo-mixins\":\n\t\t\t\t\tbreak;\n\n\t\t\t\t// Data-dojo-props. Save for later to make sure it overrides direct foo=bar settings\n\t\t\t\tcase \"data-dojo-props\":\n\t\t\t\t\textra = value;\n\t\t\t\t\tbreak;\n\n\t\t\t\t// data-dojo-id or jsId. TODO: drop jsId in 2.0\n\t\t\t\tcase \"data-dojo-id\":\n\t\t\t\tcase \"jsid\":\n\t\t\t\t\tjsname = value;\n\t\t\t\t\tbreak;\n\n\t\t\t\t// For the benefit of _Templated\n\t\t\t\tcase \"data-dojo-attach-point\":\n\t\t\t\tcase \"dojoattachpoint\":\n\t\t\t\t\tparams.dojoAttachPoint = value;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"data-dojo-attach-event\":\n\t\t\t\tcase \"dojoattachevent\":\n\t\t\t\t\tparams.dojoAttachEvent = value;\n\t\t\t\t\tbreak;\n\n\t\t\t\t// Special parameter handling needed for IE\n\t\t\t\tcase \"class\":\n\t\t\t\t\tparams[\"class\"] = node.className;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"style\":\n\t\t\t\t\tparams[\"style\"] = node.style && node.style.cssText;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t// Normal attribute, ex: value=\"123\"\n\n\t\t\t\t\t// Find attribute in widget corresponding to specified name.\n\t\t\t\t\t// May involve case conversion, ex: onclick --> onClick\n\t\t\t\t\tif(!(name in proto)){\n\t\t\t\t\t\tvar map = getNameMap(ctor);\n\t\t\t\t\t\tname = map[lcName] || name;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set params[name] to value, doing type conversion\n\t\t\t\t\tif(name in proto){\n\t\t\t\t\t\tswitch(typeof proto[name]){\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tparams[name] = value;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"number\":\n\t\t\t\t\t\t\tparams[name] = value.length ? Number(value) : NaN;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\t\t// for checked/disabled value might be \"\" or \"checked\".\t interpret as true.\n\t\t\t\t\t\t\tparams[name] = value.toLowerCase() != \"false\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\t\tif(value === \"\" || value.search(/[^\\w\\.]+/i) != -1){\n\t\t\t\t\t\t\t\t// The user has specified some text for a function like \"return x+5\"\n\t\t\t\t\t\t\t\tparams[name] = new Function(value);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t// The user has specified the name of a global function like \"myOnClick\"\n\t\t\t\t\t\t\t\t// or a single word function \"return\"\n\t\t\t\t\t\t\t\tparams[name] = dlang.getObject(value, false) || new Function(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfuncAttrs.push(name);\t// prevent \"double connect\", see #15026\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tvar pVal = proto[name];\n\t\t\t\t\t\t\tparams[name] =\n\t\t\t\t\t\t\t\t(pVal && \"length\" in pVal) ? (value ? value.split(/\\s*,\\s*/) : []) :\t// array\n\t\t\t\t\t\t\t\t\t(pVal instanceof Date) ?\n\t\t\t\t\t\t\t\t\t\t(value == \"\" ? new Date(\"\") :\t// the NaN of dates\n\t\t\t\t\t\t\t\t\t\tvalue == \"now\" ? new Date() :\t// current date\n\t\t\t\t\t\t\t\t\t\tdates.fromISOString(value)) :\n\t\t\t\t\t\t\t\t(pVal instanceof _Url) ? (dojo.baseUrl + value) :\n\t\t\t\t\t\t\t\tmyEval(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tparams[name] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove function attributes from DOMNode to prevent \"double connect\" problem, see #15026.\n\t\t\t// Do this as a separate loop since attributes[] is often a live collection (depends on the browser though).\n\t\t\tfor(var j = 0; j < funcAttrs.length; j++){\n\t\t\t\tvar lcfname = funcAttrs[j].toLowerCase();\n\t\t\t\tnode.removeAttribute(lcfname);\n\t\t\t\tnode[lcfname] = null;\n\t\t\t}\n\n\t\t\t// Mix things found in data-dojo-props into the params, overriding any direct settings\n\t\t\tif(extra){\n\t\t\t\ttry{\n\t\t\t\t\textra = myEval.call(options.propsThis, \"{\" + extra + \"}\");\n\t\t\t\t\tdlang.mixin(params, extra);\n\t\t\t\t}catch(e){\n\t\t\t\t\t// give the user a pointer to their invalid parameters. FIXME: can we kill this in production?\n\t\t\t\t\tthrow new Error(e.toString() + \" in data-dojo-props='\" + extra + \"'\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Any parameters specified in \"mixin\" override everything else.\n\t\t\tdlang.mixin(params, mixin);\n\n\t\t\t// Get <script> nodes associated with this widget, if they weren't specified explicitly\n\t\t\tif(!scripts){\n\t\t\t\tscripts = (ctor && (ctor._noScript || proto._noScript) ? [] : query(\"> script[type^='dojo/']\", node));\n\t\t\t}\n\n\t\t\t// Process <script type=\"dojo/*\"> script tags\n\t\t\t// <script type=\"dojo/method\" data-dojo-event=\"foo\"> tags are added to params, and passed to\n\t\t\t// the widget on instantiation.\n\t\t\t// <script type=\"dojo/method\"> tags (with no event) are executed after instantiation\n\t\t\t// <script type=\"dojo/connect\" data-dojo-event=\"foo\"> tags are dojo.connected after instantiation,\n\t\t\t// and likewise with <script type=\"dojo/aspect\" data-dojo-method=\"foo\">\n\t\t\t// <script type=\"dojo/watch\" data-dojo-prop=\"foo\"> tags are dojo.watch after instantiation\n\t\t\t// <script type=\"dojo/on\" data-dojo-event=\"foo\"> tags are dojo.on after instantiation\n\t\t\t// note: dojo/* script tags cannot exist in self closing widgets, like <input />\n\t\t\tvar aspects = [],\t// aspects to connect after instantiation\n\t\t\t\tcalls = [],\t\t// functions to call after instantiation\n\t\t\t\twatches = [], // functions to watch after instantiation\n\t\t\t\tons = []; // functions to on after instantiation\n\n\t\t\tif(scripts){\n\t\t\t\tfor(i = 0; i < scripts.length; i++){\n\t\t\t\t\tvar script = scripts[i];\n\t\t\t\t\tnode.removeChild(script);\n\t\t\t\t\t// FIXME: drop event=\"\" support in 2.0. use data-dojo-event=\"\" instead\n\t\t\t\t\tvar event = (script.getAttribute(attrData + \"event\") || script.getAttribute(\"event\")),\n\t\t\t\t\t\tprop = script.getAttribute(attrData + \"prop\"),\n\t\t\t\t\t\tmethod = script.getAttribute(attrData + \"method\"),\n\t\t\t\t\t\tadvice = script.getAttribute(attrData + \"advice\"),\n\t\t\t\t\t\tscriptType = script.getAttribute(\"type\"),\n\t\t\t\t\t\tnf = this._functionFromScript(script, attrData);\n\t\t\t\t\tif(event){\n\t\t\t\t\t\tif(scriptType == \"dojo/connect\"){\n\t\t\t\t\t\t\taspects.push({ method: event, func: nf });\n\t\t\t\t\t\t}else if(scriptType == \"dojo/on\"){\n\t\t\t\t\t\t\tons.push({ event: event, func: nf });\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t// <script type=\"dojo/method\" data-dojo-event=\"foo\">\n\t\t\t\t\t\t\t// TODO for 2.0: use data-dojo-method=\"foo\" instead (also affects dijit/Declaration)\n\t\t\t\t\t\t\tparams[event] = nf;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else if(scriptType == \"dojo/aspect\"){\n\t\t\t\t\t\taspects.push({ method: method, advice: advice, func: nf });\n\t\t\t\t\t}else if(scriptType == \"dojo/watch\"){\n\t\t\t\t\t\twatches.push({ prop: prop, func: nf });\n\t\t\t\t\t}else{\n\t\t\t\t\t\tcalls.push(nf);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// create the instance\n\t\t\tvar markupFactory = ctor.markupFactory || proto.markupFactory;\n\t\t\tvar instance = markupFactory ? markupFactory(params, node, ctor) : new ctor(params, node);\n\n\t\t\tfunction onInstantiate(instance){\n\t\t\t\t// map it to the JS namespace if that makes sense\n\t\t\t\tif(jsname){\n\t\t\t\t\tdlang.setObject(jsname, instance);\n\t\t\t\t}\n\n\t\t\t\t// process connections and startup functions\n\t\t\t\tfor(i = 0; i < aspects.length; i++){\n\t\t\t\t\taspect[aspects[i].advice || \"after\"](instance, aspects[i].method, dlang.hitch(instance, aspects[i].func), true);\n\t\t\t\t}\n\t\t\t\tfor(i = 0; i < calls.length; i++){\n\t\t\t\t\tcalls[i].call(instance);\n\t\t\t\t}\n\t\t\t\tfor(i = 0; i < watches.length; i++){\n\t\t\t\t\tinstance.watch(watches[i].prop, watches[i].func);\n\t\t\t\t}\n\t\t\t\tfor(i = 0; i < ons.length; i++){\n\t\t\t\t\tdon(instance, ons[i].event, ons[i].func);\n\t\t\t\t}\n\n\t\t\t\treturn instance;\n\t\t\t}\n\n\t\t\tif(instance.then){\n\t\t\t\treturn instance.then(onInstantiate);\n\t\t\t}else{\n\t\t\t\treturn onInstantiate(instance);\n\t\t\t}\n\t\t},\n\n\t\tscan: function(root, options){\n\t\t\t// summary:\n\t\t\t//\t\tScan a DOM tree and return an array of objects representing the DOMNodes\n\t\t\t//\t\tthat need to be turned into widgets.\n\t\t\t// description:\n\t\t\t//\t\tSearch specified node (or document root node) recursively for class instances\n\t\t\t//\t\tand return an array of objects that represent potential widgets to be\n\t\t\t//\t\tinstantiated. Searches for either data-dojo-type=\"MID\" or dojoType=\"MID\" where\n\t\t\t//\t\t\"MID\" is a module ID like \"dijit/form/Button\" or a fully qualified Class name\n\t\t\t//\t\tlike \"dijit/form/Button\". If the MID is not currently available, scan will\n\t\t\t//\t\tattempt to require() in the module.\n\t\t\t//\n\t\t\t//\t\tSee parser.parse() for details of markup.\n\t\t\t// root: DomNode?\n\t\t\t//\t\tA default starting root node from which to start the parsing. Can be\n\t\t\t//\t\tomitted, defaulting to the entire document. If omitted, the `options`\n\t\t\t//\t\tobject can be passed in this place. If the `options` object has a\n\t\t\t//\t\t`rootNode` member, that is used.\n\t\t\t// options: Object\n\t\t\t//\t\ta kwArgs options object, see parse() for details\n\t\t\t//\n\t\t\t// returns: Promise\n\t\t\t//\t\tA promise that is resolved with the nodes that have been parsed.\n\n\t\t\tvar list = [], // Output List\n\t\t\t\tmids = [], // An array of modules that are not yet loaded\n\t\t\t\tmidsHash = {}; // Used to keep the mids array unique\n\n\t\t\tvar dojoType = (options.scope || dojo._scopeName) + \"Type\", // typically \"dojoType\"\n\t\t\t\tattrData = \"data-\" + (options.scope || dojo._scopeName) + \"-\", // typically \"data-dojo-\"\n\t\t\t\tdataDojoType = attrData + \"type\", // typically \"data-dojo-type\"\n\t\t\t\tdataDojoTextDir = attrData + \"textdir\", // typically \"data-dojo-textdir\"\n\t\t\t\tdataDojoMixins = attrData + \"mixins\";\t\t\t\t\t// typically \"data-dojo-mixins\"\n\n\t\t\t// Info on DOMNode currently being processed\n\t\t\tvar node = root.firstChild;\n\n\t\t\t// Info on parent of DOMNode currently being processed\n\t\t\t//\t- inherited: dir, lang, and textDir setting of parent, or inherited by parent\n\t\t\t//\t- parent: pointer to identical structure for my parent (or null if no parent)\n\t\t\t//\t- scripts: if specified, collects <script type=\"dojo/...\"> type nodes from children\n\t\t\tvar inherited = options.inherited;\n\t\t\tif(!inherited){\n\t\t\t\tfunction findAncestorAttr(node, attr){\n\t\t\t\t\treturn (node.getAttribute && node.getAttribute(attr)) ||\n\t\t\t\t\t\t(node.parentNode && findAncestorAttr(node.parentNode, attr));\n\t\t\t\t}\n\n\t\t\t\tinherited = {\n\t\t\t\t\tdir: findAncestorAttr(root, \"dir\"),\n\t\t\t\t\tlang: findAncestorAttr(root, \"lang\"),\n\t\t\t\t\ttextDir: findAncestorAttr(root, dataDojoTextDir)\n\t\t\t\t};\n\t\t\t\tfor(var key in inherited){\n\t\t\t\t\tif(!inherited[key]){\n\t\t\t\t\t\tdelete inherited[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Metadata about parent node\n\t\t\tvar parent = {\n\t\t\t\tinherited: inherited\n\t\t\t};\n\n\t\t\t// For collecting <script type=\"dojo/...\"> type nodes (when null, we don't need to collect)\n\t\t\tvar scripts;\n\n\t\t\t// when true, only look for <script type=\"dojo/...\"> tags, and don't recurse to children\n\t\t\tvar scriptsOnly;\n\n\t\t\tfunction getEffective(parent){\n\t\t\t\t// summary:\n\t\t\t\t//\t\tGet effective dir, lang, textDir settings for specified obj\n\t\t\t\t//\t\t(matching \"parent\" object structure above), and do caching.\n\t\t\t\t//\t\tTake care not to return null entries.\n\t\t\t\tif(!parent.inherited){\n\t\t\t\t\tparent.inherited = {};\n\t\t\t\t\tvar node = parent.node,\n\t\t\t\t\t\tgrandparent = getEffective(parent.parent);\n\t\t\t\t\tvar inherited = {\n\t\t\t\t\t\tdir: node.getAttribute(\"dir\") || grandparent.dir,\n\t\t\t\t\t\tlang: node.getAttribute(\"lang\") || grandparent.lang,\n\t\t\t\t\t\ttextDir: node.getAttribute(dataDojoTextDir) || grandparent.textDir\n\t\t\t\t\t};\n\t\t\t\t\tfor(var key in inherited){\n\t\t\t\t\t\tif(inherited[key]){\n\t\t\t\t\t\t\tparent.inherited[key] = inherited[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn parent.inherited;\n\t\t\t}\n\n\t\t\t// DFS on DOM tree, collecting nodes with data-dojo-type specified.\n\t\t\twhile(true){\n\t\t\t\tif(!node){\n\t\t\t\t\t// Finished this level, continue to parent's next sibling\n\t\t\t\t\tif(!parent || !parent.node){\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tnode = parent.node.nextSibling;\n\t\t\t\t\tscriptsOnly = false;\n\t\t\t\t\tparent = parent.parent;\n\t\t\t\t\tscripts = parent.scripts;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif(node.nodeType != 1){\n\t\t\t\t\t// Text or comment node, skip to next sibling\n\t\t\t\t\tnode = node.nextSibling;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif(scripts && node.nodeName.toLowerCase() == \"script\"){\n\t\t\t\t\t// Save <script type=\"dojo/...\"> for parent, then continue to next sibling\n\t\t\t\t\ttype = node.getAttribute(\"type\");\n\t\t\t\t\tif(type && /^dojo\\/\\w/i.test(type)){\n\t\t\t\t\t\tscripts.push(node);\n\t\t\t\t\t}\n\t\t\t\t\tnode = node.nextSibling;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif(scriptsOnly){\n\t\t\t\t\t// scriptsOnly flag is set, we have already collected scripts if the parent wants them, so now we shouldn't\n\t\t\t\t\t// continue further analysis of the node and will continue to the next sibling\n\t\t\t\t\tnode = node.nextSibling;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Check for data-dojo-type attribute, fallback to backward compatible dojoType\n\t\t\t\t// TODO: Remove dojoType in 2.0\n\t\t\t\tvar type = node.getAttribute(dataDojoType) || node.getAttribute(dojoType);\n\n\t\t\t\t// Short circuit for leaf nodes containing nothing [but text]\n\t\t\t\tvar firstChild = node.firstChild;\n\t\t\t\tif(!type && (!firstChild || (firstChild.nodeType == 3 && !firstChild.nextSibling))){\n\t\t\t\t\tnode = node.nextSibling;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Meta data about current node\n\t\t\t\tvar current;\n\n\t\t\t\tvar ctor = null;\n\t\t\t\tif(type){\n\t\t\t\t\t// If dojoType/data-dojo-type specified, add to output array of nodes to instantiate.\n\t\t\t\t\tvar mixinsValue = node.getAttribute(dataDojoMixins),\n\t\t\t\t\t\ttypes = mixinsValue ? [type].concat(mixinsValue.split(/\\s*,\\s*/)) : [type];\n\n\t\t\t\t\t// Note: won't find classes declared via dojo/Declaration or any modules that haven't been\n\t\t\t\t\t// loaded yet so use try/catch to avoid throw from require()\n\t\t\t\t\ttry{\n\t\t\t\t\t\tctor = getCtor(types, options.contextRequire);\n\t\t\t\t\t}catch(e){}\n\n\t\t\t\t\t// If the constructor was not found, check to see if it has modules that can be loaded\n\t\t\t\t\tif(!ctor){\n\t\t\t\t\t\tdarray.forEach(types, function(t){\n\t\t\t\t\t\t\tif(~t.indexOf('/') && !midsHash[t]){\n\t\t\t\t\t\t\t\t// If the type looks like a MID and it currently isn't in the array of MIDs to load, add it.\n\t\t\t\t\t\t\t\tmidsHash[t] = true;\n\t\t\t\t\t\t\t\tmids[mids.length] = t;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tvar childScripts = ctor && !ctor.prototype._noScript ? [] : null; // <script> nodes that are parent's children\n\n\t\t\t\t\t// Setup meta data about this widget node, and save it to list of nodes to instantiate\n\t\t\t\t\tcurrent = {\n\t\t\t\t\t\ttypes: types,\n\t\t\t\t\t\tctor: ctor,\n\t\t\t\t\t\tparent: parent,\n\t\t\t\t\t\tnode: node,\n\t\t\t\t\t\tscripts: childScripts\n\t\t\t\t\t};\n\t\t\t\t\tcurrent.inherited = getEffective(current); // dir & lang settings for current node, explicit or inherited\n\t\t\t\t\tlist.push(current);\n\t\t\t\t}else{\n\t\t\t\t\t// Meta data about this non-widget node\n\t\t\t\t\tcurrent = {\n\t\t\t\t\t\tnode: node,\n\t\t\t\t\t\tscripts: scripts,\n\t\t\t\t\t\tparent: parent\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Recurse, collecting <script type=\"dojo/...\"> children, and also looking for\n\t\t\t\t// descendant nodes with dojoType specified (unless the widget has the stopParser flag).\n\t\t\t\t// When finished with children, go to my next sibling.\n\t\t\t\tscripts = childScripts;\n\t\t\t\tscriptsOnly = node.stopParser || (ctor && ctor.prototype.stopParser && !(options.template));\n\t\t\t\tparent = current;\n\t\t\t\tnode = firstChild;\n\t\t\t}\n\n\t\t\tvar d = new Deferred();\n\n\t\t\t// If there are modules to load then require them in\n\t\t\tif(mids.length){\n\t\t\t\t// Warn that there are modules being auto-required\n\t\t\t\tif(has(\"dojo-debug-messages\")){\n\t\t\t\t\tconsole.warn(\"WARNING: Modules being Auto-Required: \" + mids.join(\", \"));\n\t\t\t\t}\n\t\t\t\tvar r = options.contextRequire || require;\n\t\t\t\tr(mids, function(){\n\t\t\t\t\t// Go through list of widget nodes, filling in missing constructors, and filtering out nodes that shouldn't\n\t\t\t\t\t// be instantiated due to a stopParser flag on an ancestor that we belatedly learned about due to\n\t\t\t\t\t// auto-require of a module like ContentPane. Assumes list is in DFS order.\n\t\t\t\t\td.resolve(darray.filter(list, function(widget){\n\t\t\t\t\t\tif(!widget.ctor){\n\t\t\t\t\t\t\t// Attempt to find the constructor again. Still won't find classes defined via\n\t\t\t\t\t\t\t// dijit/Declaration so need to try/catch.\n\t\t\t\t\t\t\ttry{\n\t\t\t\t\t\t\t\twidget.ctor = getCtor(widget.types, options.contextRequire);\n\t\t\t\t\t\t\t}catch(e){}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Get the parent widget\n\t\t\t\t\t\tvar parent = widget.parent;\n\t\t\t\t\t\twhile(parent && !parent.types){\n\t\t\t\t\t\t\tparent = parent.parent;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Return false if this node should be skipped due to stopParser on an ancestor.\n\t\t\t\t\t\t// Since list[] is in DFS order, this loop will always set parent.instantiateChildren before\n\t\t\t\t\t\t// trying to compute widget.instantiate.\n\t\t\t\t\t\tvar proto = widget.ctor && widget.ctor.prototype;\n\t\t\t\t\t\twidget.instantiateChildren = !(proto && proto.stopParser && !(options.template));\n\t\t\t\t\t\twidget.instantiate = !parent || (parent.instantiate && parent.instantiateChildren);\n\t\t\t\t\t\treturn widget.instantiate;\n\t\t\t\t\t}));\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\t// There were no modules to load, so just resolve with the parsed nodes. This separate code path is for\n\t\t\t\t// efficiency, to avoid running the require() and the callback code above.\n\t\t\t\td.resolve(list);\n\t\t\t}\n\n\t\t\t// Return the promise\n\t\t\treturn d.promise;\n\t\t},\n\n\t\t_require: function(/*DOMNode*/ script, /*Object?*/ options){\n\t\t\t// summary:\n\t\t\t//\t\tHelper for _scanAMD(). Takes a `<script type=dojo/require>bar: \"acme/bar\", ...</script>` node,\n\t\t\t//\t\tcalls require() to load the specified modules and (asynchronously) assign them to the specified global\n\t\t\t//\t\tvariables, and returns a Promise for when that operation completes.\n\t\t\t//\n\t\t\t//\t\tIn the example above, it is effectively doing a require([\"acme/bar\", ...], function(a){ bar = a; }).\n\n\t\t\tvar hash = myEval(\"{\" + script.innerHTML + \"}\"), // can't use dojo/json::parse() because maybe no quotes\n\t\t\t\tvars = [],\n\t\t\t\tmids = [],\n\t\t\t\td = new Deferred();\n\n\t\t\tvar contextRequire = (options && options.contextRequire) || require;\n\n\t\t\tfor(var name in hash){\n\t\t\t\tvars.push(name);\n\t\t\t\tmids.push(hash[name]);\n\t\t\t}\n\n\t\t\tcontextRequire(mids, function(){\n\t\t\t\tfor(var i = 0; i < vars.length; i++){\n\t\t\t\t\tdlang.setObject(vars[i], arguments[i]);\n\t\t\t\t}\n\t\t\t\td.resolve(arguments);\n\t\t\t});\n\n\t\t\treturn d.promise;\n\t\t},\n\n\t\t_scanAmd: function(root, options){\n\t\t\t// summary:\n\t\t\t//\t\tScans the DOM for any declarative requires and returns their values.\n\t\t\t// description:\n\t\t\t//\t\tLooks for `<script type=dojo/require>bar: \"acme/bar\", ...</script>` node, calls require() to load the\n\t\t\t//\t\tspecified modules and (asynchronously) assign them to the specified global variables,\n\t\t\t//\t\tand returns a Promise for when those operations complete.\n\t\t\t// root: DomNode\n\t\t\t//\t\tThe node to base the scan from.\n\t\t\t// options: Object?\n\t\t\t//\t\ta kwArgs options object, see parse() for details\n\n\t\t\t// Promise that resolves when all the <script type=dojo/require> nodes have finished loading.\n\t\t\tvar deferred = new Deferred(),\n\t\t\t\tpromise = deferred.promise;\n\t\t\tdeferred.resolve(true);\n\n\t\t\tvar self = this;\n\t\t\tquery(\"script[type='dojo/require']\", root).forEach(function(node){\n\t\t\t\t// Fire off require() call for specified modules. Chain this require to fire after\n\t\t\t\t// any previous requires complete, so that layers can be loaded before individual module require()'s fire.\n\t\t\t\tpromise = promise.then(function(){\n\t\t\t\t\treturn self._require(node, options);\n\t\t\t\t});\n\n\t\t\t\t// Remove from DOM so it isn't seen again\n\t\t\t\tnode.parentNode.removeChild(node);\n\t\t\t});\n\n\t\t\treturn promise;\n\t\t},\n\n\t\tparse: function(rootNode, options){\n\t\t\t// summary:\n\t\t\t//\t\tScan the DOM for class instances, and instantiate them.\n\t\t\t// description:\n\t\t\t//\t\tSearch specified node (or root node) recursively for class instances,\n\t\t\t//\t\tand instantiate them. Searches for either data-dojo-type=\"Class\" or\n\t\t\t//\t\tdojoType=\"Class\" where \"Class\" is a a fully qualified class name,\n\t\t\t//\t\tlike `dijit/form/Button`\n\t\t\t//\n\t\t\t//\t\tUsing `data-dojo-type`:\n\t\t\t//\t\tAttributes using can be mixed into the parameters used to instantiate the\n\t\t\t//\t\tClass by using a `data-dojo-props` attribute on the node being converted.\n\t\t\t//\t\t`data-dojo-props` should be a string attribute to be converted from JSON.\n\t\t\t//\n\t\t\t//\t\tUsing `dojoType`:\n\t\t\t//\t\tAttributes are read from the original domNode and converted to appropriate\n\t\t\t//\t\ttypes by looking up the Class prototype values. This is the default behavior\n\t\t\t//\t\tfrom Dojo 1.0 to Dojo 1.5. `dojoType` support is deprecated, and will\n\t\t\t//\t\tgo away in Dojo 2.0.\n\t\t\t// rootNode: DomNode?\n\t\t\t//\t\tA default starting root node from which to start the parsing. Can be\n\t\t\t//\t\tomitted, defaulting to the entire document. If omitted, the `options`\n\t\t\t//\t\tobject can be passed in this place. If the `options` object has a\n\t\t\t//\t\t`rootNode` member, that is used.\n\t\t\t// options: Object?\n\t\t\t//\t\tA hash of options.\n\t\t\t//\n\t\t\t//\t\t- noStart: Boolean?:\n\t\t\t//\t\t\twhen set will prevent the parser from calling .startup()\n\t\t\t//\t\t\twhen locating the nodes.\n\t\t\t//\t\t- rootNode: DomNode?:\n\t\t\t//\t\t\tidentical to the function's `rootNode` argument, though\n\t\t\t//\t\t\tallowed to be passed in via this `options object.\n\t\t\t//\t\t- template: Boolean:\n\t\t\t//\t\t\tIf true, ignores ContentPane's stopParser flag and parses contents inside of\n\t\t\t//\t\t\ta ContentPane inside of a template. This allows dojoAttachPoint on widgets/nodes\n\t\t\t//\t\t\tnested inside the ContentPane to work.\n\t\t\t//\t\t- inherited: Object:\n\t\t\t//\t\t\tHash possibly containing dir and lang settings to be applied to\n\t\t\t//\t\t\tparsed widgets, unless there's another setting on a sub-node that overrides\n\t\t\t//\t\t- scope: String:\n\t\t\t//\t\t\tRoot for attribute names to search for. If scopeName is dojo,\n\t\t\t//\t\t\twill search for data-dojo-type (or dojoType). For backwards compatibility\n\t\t\t//\t\t\treasons defaults to dojo._scopeName (which is \"dojo\" except when\n\t\t\t//\t\t\tmulti-version support is used, when it will be something like dojo16, dojo20, etc.)\n\t\t\t//\t\t- propsThis: Object:\n\t\t\t//\t\t\tIf specified, \"this\" referenced from data-dojo-props will refer to propsThis.\n\t\t\t//\t\t\tIntended for use from the widgets-in-template feature of `dijit._WidgetsInTemplateMixin`\n\t\t\t//\t\t- contextRequire: Function:\n\t\t\t//\t\t\tIf specified, this require is utilised for looking resolving modules instead of the\n\t\t\t//\t\t\t`dojo/parser` context `require()`. Intended for use from the widgets-in-template feature of\n\t\t\t//\t\t\t`dijit._WidgetsInTemplateMixin`.\n\t\t\t// returns: Mixed\n\t\t\t//\t\tReturns a blended object that is an array of the instantiated objects, but also can include\n\t\t\t//\t\ta promise that is resolved with the instantiated objects. This is done for backwards\n\t\t\t//\t\tcompatibility. If the parser auto-requires modules, it will always behave in a promise\n\t\t\t//\t\tfashion and `parser.parse().then(function(instances){...})` should be used.\n\t\t\t// example:\n\t\t\t//\t\tParse all widgets on a page:\n\t\t\t//\t|\t\tparser.parse();\n\t\t\t// example:\n\t\t\t//\t\tParse all classes within the node with id=\"foo\"\n\t\t\t//\t|\t\tparser.parse(dojo.byId('foo'));\n\t\t\t// example:\n\t\t\t//\t\tParse all classes in a page, but do not call .startup() on any\n\t\t\t//\t\tchild\n\t\t\t//\t|\t\tparser.parse({ noStart: true })\n\t\t\t// example:\n\t\t\t//\t\tParse all classes in a node, but do not call .startup()\n\t\t\t//\t|\t\tparser.parse(someNode, { noStart:true });\n\t\t\t//\t|\t\t// or\n\t\t\t//\t|\t\tparser.parse({ noStart:true, rootNode: someNode });\n\n\t\t\t// determine the root node and options based on the passed arguments.\n\t\t\tif(rootNode && typeof rootNode != \"string\" && !(\"nodeType\" in rootNode)){\n\t\t\t\t// If called as parse(options) rather than parse(), parse(rootNode), or parse(rootNode, options)...\n\t\t\t\toptions = rootNode;\n\t\t\t\trootNode = options.rootNode;\n\t\t\t}\n\t\t\tvar root = rootNode ? dom.byId(rootNode) : dwindow.body();\n\t\t\toptions = options || {};\n\n\t\t\tvar mixin = options.template ? { template: true } : {},\n\t\t\t\tinstances = [],\n\t\t\t\tself = this;\n\n\t\t\t// First scan for any <script type=dojo/require> nodes, and execute.\n\t\t\t// Then scan for all nodes with data-dojo-type, and load any unloaded modules.\n\t\t\t// Then build the object instances. Add instances to already existing (but empty) instances[] array,\n\t\t\t// which may already have been returned to caller. Also, use otherwise to collect and throw any errors\n\t\t\t// that occur during the parse().\n\t\t\tvar p =\n\t\t\t\tthis._scanAmd(root, options).then(function(){\n\t\t\t\t\treturn self.scan(root, options);\n\t\t\t\t}).then(function(parsedNodes){\n\t\t\t\t\treturn self._instantiate(parsedNodes, mixin, options, true);\n\t\t\t\t}).then(function(_instances){\n\t\t\t\t\t// Copy the instances into the instances[] array we declared above, and are accessing as\n\t\t\t\t\t// our return value.\n\t\t\t\t\treturn instances = instances.concat(_instances);\n\t\t\t\t}).otherwise(function(e){\n\t\t\t\t\t// TODO Modify to follow better pattern for promise error management when available\n\t\t\t\t\tconsole.error(\"dojo/parser::parse() error\", e);\n\t\t\t\t\tthrow e;\n\t\t\t\t});\n\n\t\t\t// Blend the array with the promise\n\t\t\tdlang.mixin(instances, p);\n\t\t\treturn instances;\n\t\t}\n\t};\n\n\tif(has(\"extend-dojo\")){\n\t\tdojo.parser = parser;\n\t}\n\n\t// Register the parser callback. It should be the first callback\n\t// after the a11y test.\n\tif(config.parseOnLoad){\n\t\tready(100, parser, \"parse\");\n\t}\n\n\treturn parser;\n});\n","define([\"./_base/kernel\", \"./has\", \"./dom\", \"./on\", \"./_base/array\", \"./_base/lang\", \"./selector/_loader\", \"./selector/_loader!default\"],\n\tfunction(dojo, has, dom, on, array, lang, loader, defaultEngine){\n\n\t\"use strict\";\n\n\thas.add(\"array-extensible\", function(){\n\t\t// test to see if we can extend an array (not supported in old IE)\n\t\treturn lang.delegate([], {length: 1}).length == 1 && !has(\"bug-for-in-skips-shadowed\");\n\t});\n\t\n\tvar ap = Array.prototype, aps = ap.slice, apc = ap.concat, forEach = array.forEach;\n\n\tvar tnl = function(/*Array*/ a, /*dojo/NodeList?*/ parent, /*Function?*/ NodeListCtor){\n\t\t// summary:\n\t\t//\t\tdecorate an array to make it look like a `dojo/NodeList`.\n\t\t// a:\n\t\t//\t\tArray of nodes to decorate.\n\t\t// parent:\n\t\t//\t\tAn optional parent NodeList that generated the current\n\t\t//\t\tlist of nodes. Used to call _stash() so the parent NodeList\n\t\t//\t\tcan be accessed via end() later.\n\t\t// NodeListCtor:\n\t\t//\t\tAn optional constructor function to use for any\n\t\t//\t\tnew NodeList calls. This allows a certain chain of\n\t\t//\t\tNodeList calls to use a different object than dojo/NodeList.\n\t\tvar nodeList = new (NodeListCtor || this._NodeListCtor || nl)(a);\n\t\treturn parent ? nodeList._stash(parent) : nodeList;\n\t};\n\n\tvar loopBody = function(f, a, o){\n\t\ta = [0].concat(aps.call(a, 0));\n\t\to = o || dojo.global;\n\t\treturn function(node){\n\t\t\ta[0] = node;\n\t\t\treturn f.apply(o, a);\n\t\t};\n\t};\n\n\t// adapters\n\n\tvar adaptAsForEach = function(f, o){\n\t\t// summary:\n\t\t//\t\tadapts a single node function to be used in the forEach-type\n\t\t//\t\tactions. The initial object is returned from the specialized\n\t\t//\t\tfunction.\n\t\t// f: Function\n\t\t//\t\ta function to adapt\n\t\t// o: Object?\n\t\t//\t\tan optional context for f\n\t\treturn function(){\n\t\t\tthis.forEach(loopBody(f, arguments, o));\n\t\t\treturn this;\t// Object\n\t\t};\n\t};\n\n\tvar adaptAsMap = function(f, o){\n\t\t// summary:\n\t\t//\t\tadapts a single node function to be used in the map-type\n\t\t//\t\tactions. The return is a new array of values, as via `dojo/_base/array.map`\n\t\t// f: Function\n\t\t//\t\ta function to adapt\n\t\t// o: Object?\n\t\t//\t\tan optional context for f\n\t\treturn function(){\n\t\t\treturn this.map(loopBody(f, arguments, o));\n\t\t};\n\t};\n\n\tvar adaptAsFilter = function(f, o){\n\t\t// summary:\n\t\t//\t\tadapts a single node function to be used in the filter-type actions\n\t\t// f: Function\n\t\t//\t\ta function to adapt\n\t\t// o: Object?\n\t\t//\t\tan optional context for f\n\t\treturn function(){\n\t\t\treturn this.filter(loopBody(f, arguments, o));\n\t\t};\n\t};\n\n\tvar adaptWithCondition = function(f, g, o){\n\t\t// summary:\n\t\t//\t\tadapts a single node function to be used in the map-type\n\t\t//\t\tactions, behaves like forEach() or map() depending on arguments\n\t\t// f: Function\n\t\t//\t\ta function to adapt\n\t\t// g: Function\n\t\t//\t\ta condition function, if true runs as map(), otherwise runs as forEach()\n\t\t// o: Object?\n\t\t//\t\tan optional context for f and g\n\t\treturn function(){\n\t\t\tvar a = arguments, body = loopBody(f, a, o);\n\t\t\tif(g.call(o || dojo.global, a)){\n\t\t\t\treturn this.map(body);\t// self\n\t\t\t}\n\t\t\tthis.forEach(body);\n\t\t\treturn this;\t// self\n\t\t};\n\t};\n\n\tvar NodeList = function(array){\n\t\t// summary:\n\t\t//\t\tArray-like object which adds syntactic\n\t\t//\t\tsugar for chaining, common iteration operations, animation, and\n\t\t//\t\tnode manipulation. NodeLists are most often returned as the\n\t\t//\t\tresult of dojo/query() calls.\n\t\t// description:\n\t\t//\t\tNodeList instances provide many utilities that reflect\n\t\t//\t\tcore Dojo APIs for Array iteration and manipulation, DOM\n\t\t//\t\tmanipulation, and event handling. Instead of needing to dig up\n\t\t//\t\tfunctions in the dojo package, NodeLists generally make the\n\t\t//\t\tfull power of Dojo available for DOM manipulation tasks in a\n\t\t//\t\tsimple, chainable way.\n\t\t// example:\n\t\t//\t\tcreate a node list from a node\n\t\t//\t\t|\trequire([\"dojo/query\", \"dojo/dom\"\n\t\t//\t\t|\t], function(query, dom){\n\t\t//\t\t|\t\tquery.NodeList(dom.byId(\"foo\"));\n\t\t//\t\t|\t});\n\t\t// example:\n\t\t//\t\tget a NodeList from a CSS query and iterate on it\n\t\t//\t\t|\trequire([\"dojo/on\", \"dojo/dom\"\n\t\t//\t\t|\t], function(on, dom){\n\t\t//\t\t|\t\tvar l = query(\".thinger\");\n\t\t//\t\t|\t\tl.forEach(function(node, index, nodeList){\n\t\t//\t\t|\t\t\tconsole.log(index, node.innerHTML);\n\t\t//\t\t|\t\t});\n\t\t//\t\t|\t});\n\t\t// example:\n\t\t//\t\tuse native and Dojo-provided array methods to manipulate a\n\t\t//\t\tNodeList without needing to use dojo.* functions explicitly:\n\t\t//\t\t|\trequire([\"dojo/query\", \"dojo/dom-construct\", \"dojo/dom\"\n\t\t//\t\t|\t], function(query, domConstruct, dom){\n\t\t//\t\t|\t\tvar l = query(\".thinger\");\n\t\t//\t\t|\t\t// since NodeLists are real arrays, they have a length\n\t\t//\t\t|\t\t// property that is both readable and writable and\n\t\t//\t\t|\t\t// push/pop/shift/unshift methods\n\t\t//\t\t|\t\tconsole.log(l.length);\n\t\t//\t\t|\t\tl.push(domConstruct.create(\"span\"));\n\t\t//\t\t|\n\t\t//\t\t|\t\t// dojo's normalized array methods work too:\n\t\t//\t\t|\t\tconsole.log( l.indexOf(dom.byId(\"foo\")) );\n\t\t//\t\t|\t\t// ...including the special \"function as string\" shorthand\n\t\t//\t\t|\t\tconsole.log( l.every(\"item.nodeType == 1\") );\n\t\t//\t\t|\n\t\t//\t\t|\t\t// NodeLists can be [..] indexed, or you can use the at()\n\t\t//\t\t|\t\t// function to get specific items wrapped in a new NodeList:\n\t\t//\t\t|\t\tvar node = l[3]; // the 4th element\n\t\t//\t\t|\t\tvar newList = l.at(1, 3); // the 2nd and 4th elements\n\t\t//\t\t|\t});\n\t\t// example:\n\t\t//\t\tchainability is a key advantage of NodeLists:\n\t\t//\t\t|\trequire([\"dojo/query\", \"dojo/NodeList-dom\"\n\t\t//\t\t|\t], function(query){\n\t\t//\t\t|\t\tquery(\".thinger\")\n\t\t//\t\t|\t\t\t.onclick(function(e){ /* ... */ })\n\t\t//\t\t|\t\t\t.at(1, 3, 8) // get a subset\n\t\t//\t\t|\t\t\t\t.style(\"padding\", \"5px\")\n\t\t//\t\t|\t\t\t\t.forEach(console.log);\n\t\t//\t\t|\t});\n\n\t\tvar isNew = this instanceof nl && has(\"array-extensible\");\n\t\tif(typeof array == \"number\"){\n\t\t\tarray = Array(array);\n\t\t}\n\t\tvar nodeArray = (array && \"length\" in array) ? array : arguments;\n\t\tif(isNew || !nodeArray.sort){\n\t\t\t// make sure it's a real array before we pass it on to be wrapped \n\t\t\tvar target = isNew ? this : [],\n\t\t\t\tl = target.length = nodeArray.length;\n\t\t\tfor(var i = 0; i < l; i++){\n\t\t\t\ttarget[i] = nodeArray[i];\n\t\t\t}\n\t\t\tif(isNew){\n\t\t\t\t// called with new operator, this means we are going to use this instance and push\n\t\t\t\t// the nodes on to it. This is usually much faster since the NodeList properties\n\t\t\t\t//\tdon't need to be copied (unless the list of nodes is extremely large).\n\t\t\t\treturn target;\n\t\t\t}\n\t\t\tnodeArray = target;\n\t\t}\n\t\t// called without new operator, use a real array and copy prototype properties,\n\t\t// this is slower and exists for back-compat. Should be removed in 2.0.\n\t\tlang._mixin(nodeArray, nlp);\n\t\tnodeArray._NodeListCtor = function(array){\n\t\t\t// call without new operator to preserve back-compat behavior\n\t\t\treturn nl(array);\n\t\t};\n\t\treturn nodeArray;\n\t};\n\t\n\tvar nl = NodeList, nlp = nl.prototype = \n\t\thas(\"array-extensible\") ? [] : {};// extend an array if it is extensible\n\n\t// expose adapters and the wrapper as private functions\n\n\tnl._wrap = nlp._wrap = tnl;\n\tnl._adaptAsMap = adaptAsMap;\n\tnl._adaptAsForEach = adaptAsForEach;\n\tnl._adaptAsFilter = adaptAsFilter;\n\tnl._adaptWithCondition = adaptWithCondition;\n\n\t// mass assignment\n\n\t// add array redirectors\n\tforEach([\"slice\", \"splice\"], function(name){\n\t\tvar f = ap[name];\n\t\t//Use a copy of the this array via this.slice() to allow .end() to work right in the splice case.\n\t\t// CANNOT apply ._stash()/end() to splice since it currently modifies\n\t\t// the existing this array -- it would break backward compatibility if we copy the array before\n\t\t// the splice so that we can use .end(). So only doing the stash option to this._wrap for slice.\n\t\tnlp[name] = function(){ return this._wrap(f.apply(this, arguments), name == \"slice\" ? this : null); };\n\t});\n\t// concat should be here but some browsers with native NodeList have problems with it\n\n\t// add array.js redirectors\n\tforEach([\"indexOf\", \"lastIndexOf\", \"every\", \"some\"], function(name){\n\t\tvar f = array[name];\n\t\tnlp[name] = function(){ return f.apply(dojo, [this].concat(aps.call(arguments, 0))); };\n\t});\n\n\tlang.extend(NodeList, {\n\t\t// copy the constructors\n\t\tconstructor: nl,\n\t\t_NodeListCtor: nl,\n\t\ttoString: function(){\n\t\t\t// Array.prototype.toString can't be applied to objects, so we use join\n\t\t\treturn this.join(\",\");\n\t\t},\n\t\t_stash: function(parent){\n\t\t\t// summary:\n\t\t\t//\t\tprivate function to hold to a parent NodeList. end() to return the parent NodeList.\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\tHow to make a `dojo/NodeList` method that only returns the third node in\n\t\t\t//\t\tthe dojo/NodeList but allows access to the original NodeList by using this._stash:\n\t\t\t//\t|\trequire([\"dojo/query\", \"dojo/_base/lang\", \"dojo/NodeList\", \"dojo/NodeList-dom\"\n\t\t\t//\t|\t], function(query, lang){\n\t\t\t//\t|\t\tlang.extend(NodeList, {\n\t\t\t//\t|\t\t\tthird: function(){\n\t\t\t//\t|\t\t\t\tvar newNodeList = NodeList(this[2]);\n\t\t\t//\t|\t\t\t\treturn newNodeList._stash(this);\n\t\t\t//\t|\t\t\t}\n\t\t\t//\t|\t\t});\n\t\t\t//\t|\t\t// then see how _stash applies a sub-list, to be .end()'ed out of\n\t\t\t//\t|\t\tquery(\".foo\")\n\t\t\t//\t|\t\t\t.third()\n\t\t\t//\t|\t\t\t\t.addClass(\"thirdFoo\")\n\t\t\t//\t|\t\t\t.end()\n\t\t\t//\t|\t\t\t// access to the orig .foo list\n\t\t\t//\t|\t\t\t.removeClass(\"foo\")\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\tthis._parent = parent;\n\t\t\treturn this; // dojo/NodeList\n\t\t},\n\n\t\ton: function(eventName, listener){\n\t\t\t// summary:\n\t\t\t//\t\tListen for events on the nodes in the NodeList. Basic usage is:\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\t\t|\trequire([\"dojo/query\"\n\t\t\t//\t\t|\t], function(query){\n\t\t\t//\t\t|\t\tquery(\".my-class\").on(\"click\", listener);\n\t\t\t//\t\t\tThis supports event delegation by using selectors as the first argument with the event names as\n\t\t\t//\t\t\tpseudo selectors. For example:\n\t\t\t//\t\t| \t\tquery(\"#my-list\").on(\"li:click\", listener);\n\t\t\t//\t\t\tThis will listen for click events within `<li>` elements that are inside the `#my-list` element.\n\t\t\t//\t\t\tBecause on supports CSS selector syntax, we can use comma-delimited events as well:\n\t\t\t//\t\t| \t\tquery(\"#my-list\").on(\"li button:mouseover, li:click\", listener);\n\t\t\t//\t\t|\t});\n\t\t\tvar handles = this.map(function(node){\n\t\t\t\treturn on(node, eventName, listener); // TODO: apply to the NodeList so the same selector engine is used for matches\n\t\t\t});\n\t\t\thandles.remove = function(){\n\t\t\t\tfor(var i = 0; i < handles.length; i++){\n\t\t\t\t\thandles[i].remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn handles;\n\t\t},\n\n\t\tend: function(){\n\t\t\t// summary:\n\t\t\t//\t\tEnds use of the current `NodeList` by returning the previous NodeList\n\t\t\t//\t\tthat generated the current NodeList.\n\t\t\t// description:\n\t\t\t//\t\tReturns the `NodeList` that generated the current `NodeList`. If there\n\t\t\t//\t\tis no parent NodeList, an empty NodeList is returned.\n\t\t\t// example:\n\t\t\t//\t|\trequire([\"dojo/query\", \"dojo/NodeList-dom\"\n\t\t\t//\t|\t], function(query){\n\t\t\t//\t|\t\tquery(\"a\")\n\t\t\t//\t|\t\t\t.filter(\".disabled\")\n\t\t\t//\t|\t\t\t\t// operate on the anchors that only have a disabled class\n\t\t\t//\t|\t\t\t\t.style(\"color\", \"grey\")\n\t\t\t//\t|\t\t\t.end()\n\t\t\t//\t|\t\t\t// jump back to the list of anchors\n\t\t\t//\t|\t\t\t.style(...)\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\tif(this._parent){\n\t\t\t\treturn this._parent;\n\t\t\t}else{\n\t\t\t\t//Just return empty list.\n\t\t\t\treturn new this._NodeListCtor(0);\n\t\t\t}\n\t\t},\n\n\t\t// http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array#Methods\n\n\t\t// FIXME: handle return values for #3244\n\t\t//\t\thttp://trac.dojotoolkit.org/ticket/3244\n\n\t\t// FIXME:\n\t\t//\t\tneed to wrap or implement:\n\t\t//\t\t\tjoin (perhaps w/ innerHTML/outerHTML overload for toString() of items?)\n\t\t//\t\t\treduce\n\t\t//\t\t\treduceRight\n\n\t\t/*=====\n\t\tslice: function(begin, end){\n\t\t\t// summary:\n\t\t\t//\t\tReturns a new NodeList, maintaining this one in place\n\t\t\t// description:\n\t\t\t//\t\tThis method behaves exactly like the Array.slice method\n\t\t\t//\t\twith the caveat that it returns a `dojo/NodeList` and not a\n\t\t\t//\t\traw Array. For more details, see Mozilla's [slice\n\t\t\t//\t\tdocumentation](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice)\n\t\t\t// begin: Integer\n\t\t\t//\t\tCan be a positive or negative integer, with positive\n\t\t\t//\t\tintegers noting the offset to begin at, and negative\n\t\t\t//\t\tintegers denoting an offset from the end (i.e., to the left\n\t\t\t//\t\tof the end)\n\t\t\t// end: Integer?\n\t\t\t//\t\tOptional parameter to describe what position relative to\n\t\t\t//\t\tthe NodeList's zero index to end the slice at. Like begin,\n\t\t\t//\t\tcan be positive or negative.\n\t\t\treturn this._wrap(a.slice.apply(this, arguments));\n\t\t},\n\n\t\tsplice: function(index, howmany, item){\n\t\t\t// summary:\n\t\t\t//\t\tReturns a new NodeList, manipulating this NodeList based on\n\t\t\t//\t\tthe arguments passed, potentially splicing in new elements\n\t\t\t//\t\tat an offset, optionally deleting elements\n\t\t\t// description:\n\t\t\t//\t\tThis method behaves exactly like the Array.splice method\n\t\t\t//\t\twith the caveat that it returns a `dojo/NodeList` and not a\n\t\t\t//\t\traw Array. For more details, see Mozilla's [splice\n\t\t\t//\t\tdocumentation](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice)\n\t\t\t//\t\tFor backwards compatibility, calling .end() on the spliced NodeList\n\t\t\t//\t\tdoes not return the original NodeList -- splice alters the NodeList in place.\n\t\t\t// index: Integer\n\t\t\t//\t\tbegin can be a positive or negative integer, with positive\n\t\t\t//\t\tintegers noting the offset to begin at, and negative\n\t\t\t//\t\tintegers denoting an offset from the end (i.e., to the left\n\t\t\t//\t\tof the end)\n\t\t\t// howmany: Integer?\n\t\t\t//\t\tOptional parameter to describe what position relative to\n\t\t\t//\t\tthe NodeList's zero index to end the slice at. Like begin,\n\t\t\t//\t\tcan be positive or negative.\n\t\t\t// item: Object...?\n\t\t\t//\t\tAny number of optional parameters may be passed in to be\n\t\t\t//\t\tspliced into the NodeList\n\t\t\treturn this._wrap(a.splice.apply(this, arguments));\t// dojo/NodeList\n\t\t},\n\n\t\tindexOf: function(value, fromIndex){\n\t\t\t// summary:\n\t\t\t//\t\tsee `dojo/_base/array.indexOf()`. The primary difference is that the acted-on\n\t\t\t//\t\tarray is implicitly this NodeList\n\t\t\t// value: Object\n\t\t\t//\t\tThe value to search for.\n\t\t\t// fromIndex: Integer?\n\t\t\t//\t\tThe location to start searching from. Optional. Defaults to 0.\n\t\t\t// description:\n\t\t\t//\t\tFor more details on the behavior of indexOf, see Mozilla's\n\t\t\t//\t\t[indexOf\n\t\t\t//\t\tdocs](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf)\n\t\t\t// returns:\n\t\t\t//\t\tPositive Integer or 0 for a match, -1 of not found.\n\t\t\treturn d.indexOf(this, value, fromIndex); // Integer\n\t\t},\n\n\t\tlastIndexOf: function(value, fromIndex){\n\t\t\t// summary:\n\t\t\t//\t\tsee `dojo/_base/array.lastIndexOf()`. The primary difference is that the\n\t\t\t//\t\tacted-on array is implicitly this NodeList\n\t\t\t// description:\n\t\t\t//\t\tFor more details on the behavior of lastIndexOf, see\n\t\t\t//\t\tMozilla's [lastIndexOf\n\t\t\t//\t\tdocs](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf)\n\t\t\t// value: Object\n\t\t\t//\t\tThe value to search for.\n\t\t\t// fromIndex: Integer?\n\t\t\t//\t\tThe location to start searching from. Optional. Defaults to 0.\n\t\t\t// returns:\n\t\t\t//\t\tPositive Integer or 0 for a match, -1 of not found.\n\t\t\treturn d.lastIndexOf(this, value, fromIndex); // Integer\n\t\t},\n\n\t\tevery: function(callback, thisObject){\n\t\t\t// summary:\n\t\t\t//\t\tsee `dojo/_base/array.every()` and the [Array.every\n\t\t\t//\t\tdocs](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every).\n\t\t\t//\t\tTakes the same structure of arguments and returns as\n\t\t\t//\t\tdojo/_base/array.every() with the caveat that the passed array is\n\t\t\t//\t\timplicitly this NodeList\n\t\t\t// callback: Function\n\t\t\t//\t\tthe callback\n\t\t\t// thisObject: Object?\n\t\t\t//\t\tthe context\n\t\t\treturn d.every(this, callback, thisObject); // Boolean\n\t\t},\n\n\t\tsome: function(callback, thisObject){\n\t\t\t// summary:\n\t\t\t//\t\tTakes the same structure of arguments and returns as\n\t\t\t//\t\t`dojo/_base/array.some()` with the caveat that the passed array is\n\t\t\t//\t\timplicitly this NodeList. See `dojo/_base/array.some()` and Mozilla's\n\t\t\t//\t\t[Array.some\n\t\t\t//\t\tdocumentation](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some).\n\t\t\t// callback: Function\n\t\t\t//\t\tthe callback\n\t\t\t// thisObject: Object?\n\t\t\t//\t\tthe context\n\t\t\treturn d.some(this, callback, thisObject); // Boolean\n\t\t},\n\t\t=====*/\n\n\t\tconcat: function(item){\n\t\t\t// summary:\n\t\t\t//\t\tReturns a new NodeList comprised of items in this NodeList\n\t\t\t//\t\tas well as items passed in as parameters\n\t\t\t// description:\n\t\t\t//\t\tThis method behaves exactly like the Array.concat method\n\t\t\t//\t\twith the caveat that it returns a `NodeList` and not a\n\t\t\t//\t\traw Array. For more details, see the [Array.concat\n\t\t\t//\t\tdocs](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/concat)\n\t\t\t// item: Object?\n\t\t\t//\t\tAny number of optional parameters may be passed in to be\n\t\t\t//\t\tspliced into the NodeList\n\n\t\t\t//return this._wrap(apc.apply(this, arguments));\n\t\t\t// the line above won't work for the native NodeList, or for Dojo NodeLists either :-(\n\n\t\t\t// implementation notes:\n\t\t\t// Array.concat() doesn't recognize native NodeLists or Dojo NodeLists\n\t\t\t// as arrays, and so does not inline them into a unioned array, but\n\t\t\t// appends them as single entities. Both the original NodeList and the\n\t\t\t// items passed in as parameters must be converted to raw Arrays\n\t\t\t// and then the concatenation result may be re-_wrap()ed as a Dojo NodeList.\n\n\t\t\tvar t = aps.call(this, 0),\n\t\t\t\tm = array.map(arguments, function(a){\n\t\t\t\t\treturn aps.call(a, 0);\n\t\t\t\t});\n\t\t\treturn this._wrap(apc.apply(t, m), this);\t// dojo/NodeList\n\t\t},\n\n\t\tmap: function(/*Function*/ func, /*Function?*/ obj){\n\t\t\t// summary:\n\t\t\t//\t\tsee `dojo/_base/array.map()`. The primary difference is that the acted-on\n\t\t\t//\t\tarray is implicitly this NodeList and the return is a\n\t\t\t//\t\tNodeList (a subclass of Array)\n\t\t\treturn this._wrap(array.map(this, func, obj), this); // dojo/NodeList\n\t\t},\n\n\t\tforEach: function(callback, thisObj){\n\t\t\t// summary:\n\t\t\t//\t\tsee `dojo/_base/array.forEach()`. The primary difference is that the acted-on\n\t\t\t//\t\tarray is implicitly this NodeList. If you want the option to break out\n\t\t\t//\t\tof the forEach loop, use every() or some() instead.\n\t\t\tforEach(this, callback, thisObj);\n\t\t\t// non-standard return to allow easier chaining\n\t\t\treturn this; // dojo/NodeList\n\t\t},\n\t\tfilter: function(/*String|Function*/ filter){\n\t\t\t// summary:\n\t\t\t//\t\t\"masks\" the built-in javascript filter() method (supported\n\t\t\t//\t\tin Dojo via `dojo/_base/array.filter`) to support passing a simple\n\t\t\t//\t\tstring filter in addition to supporting filtering function\n\t\t\t//\t\tobjects.\n\t\t\t// filter:\n\t\t\t//\t\tIf a string, a CSS rule like \".thinger\" or \"div > span\".\n\t\t\t// example:\n\t\t\t//\t\t\"regular\" JS filter syntax as exposed in `dojo/_base/array.filter`:\n\t\t\t//\t\t|\trequire([\"dojo/query\", \"dojo/NodeList-dom\"\n\t\t\t//\t\t|\t], function(query){\n\t\t\t//\t\t|\t\tquery(\"*\").filter(function(item){\n\t\t\t//\t\t|\t\t\t// highlight every paragraph\n\t\t\t//\t\t|\t\t\treturn (item.nodeName == \"p\");\n\t\t\t//\t\t|\t\t}).style(\"backgroundColor\", \"yellow\");\n\t\t\t//\t\t|\t});\n\t\t\t// example:\n\t\t\t//\t\tthe same filtering using a CSS selector\n\t\t\t//\t\t|\trequire([\"dojo/query\", \"dojo/NodeList-dom\"\n\t\t\t//\t\t|\t], function(query){\n\t\t\t//\t\t|\t\tquery(\"*\").filter(\"p\").styles(\"backgroundColor\", \"yellow\");\n\t\t\t//\t\t|\t});\n\n\t\t\tvar a = arguments, items = this, start = 0;\n\t\t\tif(typeof filter == \"string\"){ // inline'd type check\n\t\t\t\titems = query._filterResult(this, a[0]);\n\t\t\t\tif(a.length == 1){\n\t\t\t\t\t// if we only got a string query, pass back the filtered results\n\t\t\t\t\treturn items._stash(this); // dojo/NodeList\n\t\t\t\t}\n\t\t\t\t// if we got a callback, run it over the filtered items\n\t\t\t\tstart = 1;\n\t\t\t}\n\t\t\treturn this._wrap(array.filter(items, a[start], a[start + 1]), this);\t// dojo/NodeList\n\t\t},\n\t\tinstantiate: function(/*String|Object*/ declaredClass, /*Object?*/ properties){\n\t\t\t// summary:\n\t\t\t//\t\tCreate a new instance of a specified class, using the\n\t\t\t//\t\tspecified properties and each node in the NodeList as a\n\t\t\t//\t\tsrcNodeRef.\n\t\t\t// example:\n\t\t\t//\t\tGrabs all buttons in the page and converts them to dijit/form/Button's.\n\t\t\t//\t|\tvar buttons = query(\"button\").instantiate(Button, {showLabel: true});\n\t\t\tvar c = lang.isFunction(declaredClass) ? declaredClass : lang.getObject(declaredClass);\n\t\t\tproperties = properties || {};\n\t\t\treturn this.forEach(function(node){\n\t\t\t\tnew c(properties, node);\n\t\t\t});\t// dojo/NodeList\n\t\t},\n\t\tat: function(/*===== index =====*/){\n\t\t\t// summary:\n\t\t\t//\t\tReturns a new NodeList comprised of items in this NodeList\n\t\t\t//\t\tat the given index or indices.\n\t\t\t//\n\t\t\t// index: Integer...\n\t\t\t//\t\tOne or more 0-based indices of items in the current\n\t\t\t//\t\tNodeList. A negative index will start at the end of the\n\t\t\t//\t\tlist and go backwards.\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\tShorten the list to the first, second, and third elements\n\t\t\t//\t|\trequire([\"dojo/query\"\n\t\t\t//\t|\t], function(query){\n\t\t\t//\t|\t\tquery(\"a\").at(0, 1, 2).forEach(fn);\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\tRetrieve the first and last elements of a unordered list:\n\t\t\t//\t|\trequire([\"dojo/query\"\n\t\t\t//\t|\t], function(query){\n\t\t\t//\t|\t\tquery(\"ul > li\").at(0, -1).forEach(cb);\n\t\t\t//\t|\t});\n\t\t\t//\n\t\t\t// example:\n\t\t\t//\tDo something for the first element only, but end() out back to\n\t\t\t//\tthe original list and continue chaining:\n\t\t\t//\t|\trequire([\"dojo/query\"\n\t\t\t//\t|\t], function(query){\n\t\t\t//\t|\t\tquery(\"a\").at(0).onclick(fn).end().forEach(function(n){\n\t\t\t//\t|\t\t\tconsole.log(n); // all anchors on the page.\n\t\t\t//\t|\t})\n\t\t\t//\t|\t});\n\n\t\t\tvar t = new this._NodeListCtor(0);\n\t\t\tforEach(arguments, function(i){\n\t\t\t\tif(i < 0){ i = this.length + i; }\n\t\t\t\tif(this[i]){ t.push(this[i]); }\n\t\t\t}, this);\n\t\t\treturn t._stash(this); // dojo/NodeList\n\t\t}\n\t});\n\n\tfunction queryForEngine(engine, NodeList){\n\t\tvar query = function(/*String*/ query, /*String|DOMNode?*/ root){\n\t\t\t// summary:\n\t\t\t//\t\tReturns nodes which match the given CSS selector, searching the\n\t\t\t//\t\tentire document by default but optionally taking a node to scope\n\t\t\t//\t\tthe search by. Returns an instance of NodeList.\n\t\t\tif(typeof root == \"string\"){\n\t\t\t\troot = dom.byId(root);\n\t\t\t\tif(!root){\n\t\t\t\t\treturn new NodeList([]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar results = typeof query == \"string\" ? engine(query, root) : query ? (query.end && query.on) ? query : [query] : [];\n\t\t\tif(results.end && results.on){\n\t\t\t\t// already wrapped\n\t\t\t\treturn results;\n\t\t\t}\n\t\t\treturn new NodeList(results);\n\t\t};\n\t\tquery.matches = engine.match || function(node, selector, root){\n\t\t\t// summary:\n\t\t\t//\t\tTest to see if a node matches a selector\n\t\t\treturn query.filter([node], selector, root).length > 0;\n\t\t};\n\t\t// the engine provides a filtering function, use it to for matching\n\t\tquery.filter = engine.filter || function(nodes, selector, root){\n\t\t\t// summary:\n\t\t\t//\t\tFilters an array of nodes. Note that this does not guarantee to return a NodeList, just an array.\n\t\t\treturn query(selector, root).filter(function(node){\n\t\t\t\treturn array.indexOf(nodes, node) > -1;\n\t\t\t});\n\t\t};\n\t\tif(typeof engine != \"function\"){\n\t\t\tvar search = engine.search;\n\t\t\tengine = function(selector, root){\n\t\t\t\t// Slick does it backwards (or everyone else does it backwards, probably the latter)\n\t\t\t\treturn search(root || document, selector);\n\t\t\t};\n\t\t}\n\t\treturn query;\n\t}\n\tvar query = queryForEngine(defaultEngine, NodeList);\n\t/*=====\n\tquery = function(selector, context){\n\t\t// summary:\n\t\t//\t\tThis modules provides DOM querying functionality. The module export is a function\n\t\t//\t\tthat can be used to query for DOM nodes by CSS selector and returns a NodeList\n\t\t//\t\trepresenting the matching nodes.\n\t\t// selector: String\n\t\t//\t\tA CSS selector to search for.\n\t\t// context: String|DomNode?\n\t\t//\t\tAn optional context to limit the searching scope. Only nodes under `context` will be\n\t\t//\t\tscanned.\n\t\t// example:\n\t\t//\t\tadd an onclick handler to every submit button in the document\n\t\t//\t\twhich causes the form to be sent via Ajax instead:\n\t\t//\t|\trequire([\"dojo/query\", \"dojo/request\", \"dojo/dom-form\", \"dojo/dom-construct\", \"dojo/dom-style\"\n\t\t//\t|\t], function(query, request, domForm, domConstruct, domStyle){\n\t\t//\t|\t\tquery(\"input[type='submit']\").on(\"click\", function(e){\n\t\t//\t|\t\t\te.preventDefault(); // prevent sending the form\n\t\t//\t|\t\t\tvar btn = e.target;\n\t\t//\t|\t\t\trequest.post(\"http://example.com/\", {\n\t\t//\t|\t\t\t\tdata: domForm.toObject(btn.form)\n\t\t//\t|\t\t\t}).then(function(response){\n\t\t//\t|\t\t\t\t// replace the form with the response\n\t\t//\t|\t\t\t\tdomConstruct.create(div, {innerHTML: response}, btn.form, \"after\");\n\t\t//\t|\t\t\t\tdomStyle.set(btn.form, \"display\", \"none\");\n\t\t//\t|\t\t\t});\n\t\t//\t|\t\t});\n\t\t//\t|\t});\n\t\t//\n\t\t// description:\n\t\t//\t\tdojo/query is responsible for loading the appropriate query engine and wrapping\n\t\t//\t\tits results with a `NodeList`. You can use dojo/query with a specific selector engine\n\t\t//\t\tby using it as a plugin. For example, if you installed the sizzle package, you could\n\t\t//\t\tuse it as the selector engine with:\n\t\t//\t\t|\trequire([\"dojo/query!sizzle\"], function(query){\n\t\t//\t\t|\t\tquery(\"div\")...\n\t\t//\n\t\t//\t\tThe id after the ! can be a module id of the selector engine or one of the following values:\n\t\t//\n\t\t//\t\t- acme: This is the default engine used by Dojo base, and will ensure that the full\n\t\t//\t\tAcme engine is always loaded.\n\t\t//\n\t\t//\t\t- css2: If the browser has a native selector engine, this will be used, otherwise a\n\t\t//\t\tvery minimal lightweight selector engine will be loaded that can do simple CSS2 selectors\n\t\t//\t\t(by #id, .class, tag, and [name=value] attributes, with standard child or descendant (>)\n\t\t//\t\toperators) and nothing more.\n\t\t//\n\t\t//\t\t- css2.1: If the browser has a native selector engine, this will be used, otherwise the\n\t\t//\t\tfull Acme engine will be loaded.\n\t\t//\n\t\t//\t\t- css3: If the browser has a native selector engine with support for CSS3 pseudo\n\t\t//\t\tselectors (most modern browsers except IE8), this will be used, otherwise the\n\t\t//\t\tfull Acme engine will be loaded.\n\t\t//\n\t\t//\t\t- Or the module id of a selector engine can be used to explicitly choose the selector engine\n\t\t//\n\t\t//\t\tFor example, if you are using CSS3 pseudo selectors in module, you can specify that\n\t\t//\t\tyou will need support them with:\n\t\t//\t\t|\trequire([\"dojo/query!css3\"], function(query){\n\t\t//\t\t|\t\tquery('#t > h3:nth-child(odd)')...\n\t\t//\n\t\t//\t\tYou can also choose the selector engine/load configuration by setting the query-selector:\n\t\t//\t\tFor example:\n\t\t//\t\t|\t<script data-dojo-config=\"query-selector:'css3'\" src=\"dojo.js\"></script>\n\t\t//\n\t\treturn new NodeList(); // dojo/NodeList\n\t };\n\t =====*/\n\n\t// the query that is returned from this module is slightly different than dojo.query,\n\t// because dojo.query has to maintain backwards compatibility with returning a\n\t// true array which has performance problems. The query returned from the module\n\t// does not use true arrays, but rather inherits from Array, making it much faster to\n\t// instantiate.\n\tdojo.query = queryForEngine(defaultEngine, function(array){\n\t\t// call it without the new operator to invoke the back-compat behavior that returns a true array\n\t\treturn NodeList(array);\t// dojo/NodeList\n\t});\n\n\tquery.load = function(id, parentRequire, loaded){\n\t\t// summary:\n\t\t//\t\tcan be used as AMD plugin to conditionally load new query engine\n\t\t// example:\n\t\t//\t|\trequire([\"dojo/query!custom\"], function(qsa){\n\t\t//\t|\t\t// loaded selector/custom.js as engine\n\t\t//\t|\t\tqsa(\"#foobar\").forEach(...);\n\t\t//\t|\t});\n\t\tloader.load(id, parentRequire, function(engine){\n\t\t\tloaded(queryForEngine(engine, NodeList));\n\t\t});\n\t};\n\n\tdojo._filterQueryResult = query._filterResult = function(nodes, selector, root){\n\t\treturn new NodeList(query.filter(nodes, selector, root));\n\t};\n\tdojo.NodeList = query.NodeList = NodeList;\n\treturn query;\n});\n","define([\"./_base/kernel\", \"./has\", \"require\", \"./has!host-browser?./domReady\", \"./_base/lang\"], function(dojo, has, require, domReady, lang){\n\t// module:\n\t//\t\tdojo/ready\n\t// note:\n\t//\t\tThis module should be unnecessary in dojo 2.0\n\n\tvar\n\t\t// truthy if DOMContentLoaded or better (e.g., window.onload fired) has been achieved\n\t\tisDomReady = 0,\n\n\t\t// The queue of functions waiting to execute as soon as dojo.ready conditions satisfied\n\t\tloadQ = [],\n\n\t\t// prevent recursion in onLoad\n\t\tonLoadRecursiveGuard = 0,\n\n\t\thandleDomReady = function(){\n\t\t\tisDomReady = 1;\n\t\t\tdojo._postLoad = dojo.config.afterOnLoad = true;\n\t\t\tonEvent();\n\t\t},\n\n\t\tonEvent = function(){\n\t\t\t// Called when some state changes:\n\t\t\t//\t\t- dom ready\n\t\t\t//\t\t- dojo/domReady has finished processing everything in its queue\n\t\t\t//\t\t- task added to loadQ\n\t\t\t//\t\t- require() has finished loading all currently requested modules\n\t\t\t//\n\t\t\t// Run the functions queued with dojo.ready if appropriate.\n\n\n\t\t\t//guard against recursions into this function\n\t\t\tif(onLoadRecursiveGuard){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonLoadRecursiveGuard = 1;\n\n\t\t\t// Run tasks in queue if require() is finished loading modules, the dom is ready, and there are no\n\t\t\t// pending tasks registered via domReady().\n\t\t\t// The last step is necessary so that a user defined dojo.ready() callback is delayed until after the\n\t\t\t// domReady() calls inside of dojo.\t Failure can be seen on dijit/tests/robot/Dialog_ally.html on IE8\n\t\t\t// because the dijit/focus.js domReady() callback doesn't execute until after the test starts running.\n\t\t\twhile(isDomReady && (!domReady || domReady._Q.length == 0) && (require.idle ? require.idle() : true) && loadQ.length){\n\t\t\t\tvar f = loadQ.shift();\n\t\t\t\ttry{\n\t\t\t\t\tf();\n\t\t\t\t}catch(e){\n\t\t\t\t\t// force the dojo.js on(\"error\") handler do display the message\n\t\t\t\t\te.info = e.message;\n\t\t\t\t\tif(require.signal){\n\t\t\t\t\t\trequire.signal(\"error\", e);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tonLoadRecursiveGuard = 0;\n\t\t};\n\n\t// Check if we should run the next queue operation whenever require() finishes loading modules or domReady\n\t// finishes processing it's queue.\n\trequire.on && require.on(\"idle\", onEvent);\n\tif(domReady){\n\t\tdomReady._onQEmpty = onEvent;\n\t}\n\n\tvar ready = dojo.ready = dojo.addOnLoad = function(priority, context, callback){\n\t\t// summary:\n\t\t//\t\tAdd a function to execute on DOM content loaded and all requested modules have arrived and been evaluated.\n\t\t//\t\tIn most cases, the `domReady` plug-in should suffice and this method should not be needed.\n\t\t//\n\t\t//\t\tWhen called in a non-browser environment, just checks that all requested modules have arrived and been\n\t\t//\t\tevaluated.\n\t\t// priority: Integer?\n\t\t//\t\tThe order in which to exec this callback relative to other callbacks, defaults to 1000\n\t\t// context: Object?|Function\n\t\t//\t\tThe context in which to run execute callback, or a callback if not using context\n\t\t// callback: Function?\n\t\t//\t\tThe function to execute.\n\t\t//\n\t\t// example:\n\t\t//\tSimple DOM and Modules ready syntax\n\t\t//\t|\trequire([\"dojo/ready\"], function(ready){\n\t\t//\t|\t\tready(function(){ alert(\"Dom ready!\"); });\n\t\t//\t|\t});\n\t\t//\n\t\t// example:\n\t\t//\tUsing a priority\n\t\t//\t|\trequire([\"dojo/ready\"], function(ready){\n\t\t//\t|\t\tready(2, function(){ alert(\"low priority ready!\"); })\n\t\t//\t|\t});\n\t\t//\n\t\t// example:\n\t\t//\tUsing context\n\t\t//\t|\trequire([\"dojo/ready\"], function(ready){\n\t\t//\t|\t\tready(foo, function(){\n\t\t//\t|\t\t\t// in here, this == foo\n\t\t//\t|\t\t});\n\t\t//\t|\t});\n\t\t//\n\t\t// example:\n\t\t//\tUsing dojo/hitch style args:\n\t\t//\t|\trequire([\"dojo/ready\"], function(ready){\n\t\t//\t|\t\tvar foo = { dojoReady: function(){ console.warn(this, \"dojo dom and modules ready.\"); } };\n\t\t//\t|\t\tready(foo, \"dojoReady\");\n\t\t//\t|\t});\n\n\t\tvar hitchArgs = lang._toArray(arguments);\n\t\tif(typeof priority != \"number\"){\n\t\t\tcallback = context;\n\t\t\tcontext = priority;\n\t\t\tpriority = 1000;\n\t\t}else{\n\t\t\thitchArgs.shift();\n\t\t}\n\t\tcallback = callback ?\n\t\t\tlang.hitch.apply(dojo, hitchArgs) :\n\t\t\tfunction(){\n\t\t\t\tcontext();\n\t\t\t};\n\t\tcallback.priority = priority;\n\t\tfor(var i = 0; i < loadQ.length && priority >= loadQ[i].priority; i++){}\n\t\tloadQ.splice(i, 0, callback);\n\t\tonEvent();\n\t};\n\n\thas.add(\"dojo-config-addOnLoad\", 1);\n\tif(has(\"dojo-config-addOnLoad\")){\n\t\tvar dca = dojo.config.addOnLoad;\n\t\tif(dca){\n\t\t\tready[(lang.isArray(dca) ? \"apply\" : \"call\")](dojo, dca);\n\t\t}\n\t}\n\n\tif(has(\"dojo-sync-loader\") && dojo.config.parseOnLoad && !dojo.isAsync){\n\t\tready(99, function(){\n\t\t\tif(!dojo.parser){\n\t\t\t\tdojo.deprecated(\"Add explicit require(['dojo/parser']);\", \"\", \"2.0\");\n\t\t\t\trequire([\"dojo/parser\"]);\n\t\t\t}\n\t\t});\n\t}\n\n\tif(domReady){\n\t\tdomReady(handleDomReady);\n\t}else{\n\t\thandleDomReady();\n\t}\n\n\treturn ready;\n});\n","define([\n\t'./request/default!'/*=====,\n\t'./_base/declare',\n\t'./promise/Promise' =====*/\n], function(request/*=====, declare, Promise =====*/){\n\t/*=====\n\trequest = function(url, options){\n\t\t// summary:\n\t\t//\t\tSend a request using the default transport for the current platform.\n\t\t// url: String\n\t\t//\t\tThe URL to request.\n\t\t// options: dojo/request.__Options?\n\t\t//\t\tOptions for the request.\n\t\t// returns: dojo/request.__Promise\n\t};\n\trequest.__Promise = declare(Promise, {\n\t\t// response: dojo/promise/Promise\n\t\t//\t\tA promise resolving to an object representing\n\t\t//\t\tthe response from the server.\n\t});\n\trequest.__BaseOptions = declare(null, {\n\t\t// query: String|Object?\n\t\t//\t\tQuery parameters to append to the URL.\n\t\t// data: String|Object?\n\t\t//\t\tData to transfer. This is ignored for GET and DELETE\n\t\t//\t\trequests.\n\t\t// preventCache: Boolean?\n\t\t//\t\tWhether to append a cache-busting parameter to the URL.\n\t\t// timeout: Integer?\n\t\t//\t\tMilliseconds to wait for the response. If this time\n\t\t//\t\tpasses, the then the promise is rejected.\n\t\t// handleAs: String?\n\t\t//\t\tHow to handle the response from the server. Default is\n\t\t//\t\t'text'. Other values are 'json', 'javascript', and 'xml'.\n\t});\n\trequest.__MethodOptions = declare(null, {\n\t\t// method: String?\n\t\t//\t\tThe HTTP method to use to make the request. Must be\n\t\t//\t\tuppercase.\n\t});\n\trequest.__Options = declare([request.__BaseOptions, request.__MethodOptions]);\n\n\trequest.get = function(url, options){\n\t\t// summary:\n\t\t//\t\tSend an HTTP GET request using the default transport for the current platform.\n\t\t// url: String\n\t\t//\t\tURL to request\n\t\t// options: dojo/request.__BaseOptions?\n\t\t//\t\tOptions for the request.\n\t\t// returns: dojo/request.__Promise\n\t};\n\trequest.post = function(url, options){\n\t\t// summary:\n\t\t//\t\tSend an HTTP POST request using the default transport for the current platform.\n\t\t// url: String\n\t\t//\t\tURL to request\n\t\t// options: dojo/request.__BaseOptions?\n\t\t//\t\tOptions for the request.\n\t\t// returns: dojo/request.__Promise\n\t};\n\trequest.put = function(url, options){\n\t\t// summary:\n\t\t//\t\tSend an HTTP POST request using the default transport for the current platform.\n\t\t// url: String\n\t\t//\t\tURL to request\n\t\t// options: dojo/request.__BaseOptions?\n\t\t//\t\tOptions for the request.\n\t\t// returns: dojo/request.__Promise\n\t};\n\trequest.del = function(url, options){\n\t\t// summary:\n\t\t//\t\tSend an HTTP DELETE request using the default transport for the current platform.\n\t\t// url: String\n\t\t//\t\tURL to request\n\t\t// options: dojo/request.__BaseOptions?\n\t\t//\t\tOptions for the request.\n\t\t// returns: dojo/request.__Promise\n\t};\n\t=====*/\n\treturn request;\n});\n","define([\"../has\", \"require\"],\n\t\tfunction(has, require){\n\n\"use strict\";\nif (typeof document !== \"undefined\") {\n\tvar testDiv = document.createElement(\"div\");\n\thas.add(\"dom-qsa2.1\", !!testDiv.querySelectorAll);\n\thas.add(\"dom-qsa3\", function(){\n\t\t// test to see if we have a reasonable native selector engine available\n\t\ttry{\n\t\t\ttestDiv.innerHTML = \"<p class='TEST'></p>\"; // test kind of from sizzle\n\t\t\t// Safari can't handle uppercase or unicode characters when\n\t\t\t// in quirks mode, IE8 can't handle pseudos like :empty\n\t\t\treturn testDiv.querySelectorAll(\".TEST:empty\").length == 1;\n\t\t}catch(e){}\n\t});\n}\n\nvar fullEngine;\nvar acme = \"./acme\", lite = \"./lite\";\nreturn {\n\t// summary:\n\t//\t\tThis module handles loading the appropriate selector engine for the given browser\n\n\tload: function(id, parentRequire, loaded, config){\n\t\tif (config && config.isBuild) {\n\t\t\t//Indicate that the optimizer should not wait\n\t\t\t//for this resource any more and complete optimization.\n\t\t\t//This resource will be resolved dynamically during\n\t\t\t//run time in the web browser.\n\t\t\tloaded();\n\t\t\treturn;\n\t\t}\n\n\t\tvar req = require;\n\t\t// here we implement the default logic for choosing a selector engine\n\t\tid = id == \"default\" ? has(\"config-selectorEngine\") || \"css3\" : id;\n\t\tid = id == \"css2\" || id == \"lite\" ? lite :\n\t\t\t\tid == \"css2.1\" ? has(\"dom-qsa2.1\") ? lite : acme :\n\t\t\t\tid == \"css3\" ? has(\"dom-qsa3\") ? lite : acme :\n\t\t\t\tid == \"acme\" ? acme : (req = parentRequire) && id;\n\t\tif(id.charAt(id.length-1) == '?'){\n\t\t\tid = id.substring(0,id.length - 1);\n\t\t\tvar optionalLoad = true;\n\t\t}\n\t\t// the query engine is optional, only load it if a native one is not available or existing one has not been loaded\n\t\tif(optionalLoad && (has(\"dom-compliant-qsa\") || fullEngine)){\n\t\t\treturn loaded(fullEngine);\n\t\t}\n\t\t// load the referenced selector engine\n\t\treq([id], function(engine){\n\t\t\tif(id != \"./lite\"){\n\t\t\t\tfullEngine = engine;\n\t\t\t}\n\t\t\tloaded(engine);\n\t\t});\n\t}\n};\n});\n","define([\"../has\", \"../_base/kernel\"], function(has, dojo){\n\"use strict\";\n\nvar testDiv = document.createElement(\"div\");\nvar matchesSelector = testDiv.matches || testDiv.webkitMatchesSelector || testDiv.mozMatchesSelector || testDiv.msMatchesSelector || testDiv.oMatchesSelector;\nvar querySelectorAll = testDiv.querySelectorAll;\nvar unionSplit = /([^\\s,](?:\"(?:\\\\.|[^\"])+\"|'(?:\\\\.|[^'])+'|[^,])*)/g;\nhas.add(\"dom-matches-selector\", !!matchesSelector);\nhas.add(\"dom-qsa\", !!querySelectorAll); \n\n// this is a simple query engine. It has handles basic selectors, and for simple\n// common selectors is extremely fast\nvar liteEngine = function(selector, root){\n\t// summary:\n\t//\t\tA small lightweight query selector engine that implements CSS2.1 selectors\n\t//\t\tminus pseudo-classes and the sibling combinator, plus CSS3 attribute selectors\n\n\tif(combine && selector.indexOf(',') > -1){\n\t\treturn combine(selector, root);\n\t}\n\t// use the root's ownerDocument if provided, otherwise try to use dojo.doc. Note \n\t// that we don't use dojo/_base/window's doc to reduce dependencies, and \n\t// fallback to plain document if dojo.doc hasn't been defined (by dojo/_base/window).\n\t// presumably we will have a better way to do this in 2.0 \n\tvar doc = root ? root.ownerDocument || root : dojo.doc || document, \n\t\tmatch = (querySelectorAll ? \n\t\t\t/^([\\w]*)#([\\w\\-]+$)|^(\\.)([\\w\\-\\*]+$)|^(\\w+$)/ : // this one only matches on simple queries where we can beat qSA with specific methods\n\t\t\t/^([\\w]*)#([\\w\\-]+)(?:\\s+(.*))?$|(?:^|(>|.+\\s+))([\\w\\-\\*]+)(\\S*$)/) // this one matches parts of the query that we can use to speed up manual filtering\n\t\t\t.exec(selector);\n\troot = root || doc;\n\tif(match){\n\t\tvar isInsideDomTree = has('ie') === 8 && has('quirks')?\n\t\t\troot.nodeType === doc.nodeType:\n\t\t\troot.parentNode !== null && root.nodeType !== 9 && root.parentNode === doc;\n\n\t\t// fast path regardless of whether or not querySelectorAll exists\n\t\tif(match[2] && isInsideDomTree){\n\t\t\t// an #id\n\t\t\t// use dojo.byId if available as it fixes the id retrieval in IE, note that we can't use the dojo namespace in 2.0, but if there is a conditional module use, we will use that\n\t\t\tvar found = dojo.byId ? dojo.byId(match[2], doc) : doc.getElementById(match[2]);\n\t\t\tif(!found || (match[1] && match[1] != found.tagName.toLowerCase())){\n\t\t\t\t// if there is a tag qualifer and it doesn't match, no matches\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tif(root != doc){\n\t\t\t\t// there is a root element, make sure we are a child of it\n\t\t\t\tvar parent = found;\n\t\t\t\twhile(parent != root){\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t\tif(!parent){\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn match[3] ?\n\t\t\t\t\tliteEngine(match[3], found) \n\t\t\t\t\t: [found];\n\t\t}\n\t\tif(match[3] && root.getElementsByClassName){\n\t\t\t// a .class\n\t\t\treturn root.getElementsByClassName(match[4]);\n\t\t}\n\t\tvar found;\n\t\tif(match[5]){\n\t\t\t// a tag\n\t\t\tfound = root.getElementsByTagName(match[5]);\n\t\t\tif(match[4] || match[6]){\n\t\t\t\tselector = (match[4] || \"\") + match[6];\n\t\t\t}else{\n\t\t\t\t// that was the entirety of the query, return results\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t}\n\tif(querySelectorAll){\n\t\t// qSA works strangely on Element-rooted queries\n\t\t// We can work around this by specifying an extra ID on the root\n\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t// IE 8 doesn't work on object elements\n\t\tif (root.nodeType === 1 && root.nodeName.toLowerCase() !== \"object\"){\t\t\t\t\n\t\t\treturn useRoot(root, selector, root.querySelectorAll);\n\t\t}else{\n\t\t\t// we can use the native qSA\n\t\t\treturn root.querySelectorAll(selector);\n\t\t}\n\t}else if(!found){\n\t\t// search all children and then filter\n\t\tfound = root.getElementsByTagName(\"*\");\n\t}\n\t// now we filter the nodes that were found using the matchesSelector\n\tvar results = [];\n\tfor(var i = 0, l = found.length; i < l; i++){\n\t\tvar node = found[i];\n\t\tif(node.nodeType == 1 && jsMatchesSelector(node, selector, root)){\n\t\t\t// keep the nodes that match the selector\n\t\t\tresults.push(node);\n\t\t}\n\t}\n\treturn results;\n};\nvar useRoot = function(context, query, method){\n\t// this function creates a temporary id so we can do rooted qSA queries, this is taken from sizzle\n\tvar oldContext = context,\n\t\told = context.getAttribute(\"id\"),\n\t\tnid = old || \"__dojo__\",\n\t\thasParent = context.parentNode,\n\t\trelativeHierarchySelector = /^\\s*[+~]/.test(query);\n\n\tif(relativeHierarchySelector && !hasParent){\n\t\treturn [];\n\t}\n\tif(!old){\n\t\tcontext.setAttribute(\"id\", nid);\n\t}else{\n\t\tnid = nid.replace(/'/g, \"\\\\$&\");\n\t}\n\tif(relativeHierarchySelector && hasParent){\n\t\tcontext = context.parentNode;\n\t}\n\tvar selectors = query.match(unionSplit);\n\tfor(var i = 0; i < selectors.length; i++){\n\t\tselectors[i] = \"[id='\" + nid + \"'] \" + selectors[i];\n\t}\n\tquery = selectors.join(\",\");\n\n\ttry{\n\t\treturn method.call(context, query);\n\t}finally{\n\t\tif(!old){\n\t\t\toldContext.removeAttribute(\"id\");\n\t\t}\n\t}\n};\n\nif(!has(\"dom-matches-selector\")){\n\tvar jsMatchesSelector = (function(){\n\t\t// a JS implementation of CSS selector matching, first we start with the various handlers\n\t\tvar caseFix = testDiv.tagName == \"div\" ? \"toLowerCase\" : \"toUpperCase\";\n\t\tvar selectorTypes = {\n\t\t\t\"\": function(tagName){\n\t\t\t\ttagName = tagName[caseFix]();\n\t\t\t\treturn function(node){\n\t\t\t\t\treturn node.tagName == tagName;\n\t\t\t\t};\n\t\t\t},\n\t\t\t\".\": function(className){\n\t\t\t\tvar classNameSpaced = ' ' + className + ' ';\n\t\t\t\treturn function(node){\n\t\t\t\t\treturn node.className.indexOf(className) > -1 && (' ' + node.className + ' ').indexOf(classNameSpaced) > -1;\n\t\t\t\t};\n\t\t\t},\n\t\t\t\"#\": function(id){\n\t\t\t\treturn function(node){\n\t\t\t\t\treturn node.id == id;\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t\tvar attrComparators = {\n\t\t\t\"^=\": function(attrValue, value){\n\t\t\t\treturn attrValue.indexOf(value) == 0;\n\t\t\t},\n\t\t\t\"*=\": function(attrValue, value){\n\t\t\t\treturn attrValue.indexOf(value) > -1;\n\t\t\t},\n\t\t\t\"$=\": function(attrValue, value){\n\t\t\t\treturn attrValue.substring(attrValue.length - value.length, attrValue.length) == value;\n\t\t\t},\n\t\t\t\"~=\": function(attrValue, value){\n\t\t\t\treturn (' ' + attrValue + ' ').indexOf(' ' + value + ' ') > -1;\n\t\t\t},\n\t\t\t\"|=\": function(attrValue, value){\n\t\t\t\treturn (attrValue + '-').indexOf(value + '-') == 0;\n\t\t\t},\n\t\t\t\"=\": function(attrValue, value){\n\t\t\t\treturn attrValue == value;\n\t\t\t},\n\t\t\t\"\": function(attrValue, value){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t};\n\t\tfunction attr(name, value, type){\n\t\t\tvar firstChar = value.charAt(0);\n\t\t\tif(firstChar == '\"' || firstChar == \"'\"){\n\t\t\t\t// it is quoted, remove the quotes\n\t\t\t\tvalue = value.slice(1, -1);\n\t\t\t}\n\t\t\tvalue = value.replace(/\\\\/g,'');\n\t\t\tvar comparator = attrComparators[type || \"\"];\n\t\t\treturn function(node){\n\t\t\t\tvar attrValue = node.getAttribute(name);\n\t\t\t\treturn attrValue && comparator(attrValue, value);\n\t\t\t};\n\t\t}\n\t\tfunction ancestor(matcher){\n\t\t\treturn function(node, root){\n\t\t\t\twhile((node = node.parentNode) != root){\n\t\t\t\t\tif(matcher(node, root)){\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tfunction parent(matcher){\n\t\t\treturn function(node, root){\n\t\t\t\tnode = node.parentNode;\n\t\t\t\treturn matcher ? \n\t\t\t\t\tnode != root && matcher(node, root)\n\t\t\t\t\t: node == root;\n\t\t\t};\n\t\t}\n\t\tvar cache = {};\n\t\tfunction and(matcher, next){\n\t\t\treturn matcher ?\n\t\t\t\tfunction(node, root){\n\t\t\t\t\treturn next(node) && matcher(node, root);\n\t\t\t\t}\n\t\t\t\t: next;\n\t\t}\n\t\treturn function(node, selector, root){\n\t\t\t// this returns true or false based on if the node matches the selector (optionally within the given root)\n\t\t\tvar matcher = cache[selector]; // check to see if we have created a matcher function for the given selector\n\t\t\tif(!matcher){\n\t\t\t\t// create a matcher function for the given selector\n\t\t\t\t// parse the selectors\n\t\t\t\tif(selector.replace(/(?:\\s*([> ])\\s*)|(#|\\.)?((?:\\\\.|[\\w-])+)|\\[\\s*([\\w-]+)\\s*(.?=)?\\s*(\"(?:\\\\.|[^\"])+\"|'(?:\\\\.|[^'])+'|(?:\\\\.|[^\\]])*)\\s*\\]/g, function(t, combinator, type, value, attrName, attrType, attrValue){\n\t\t\t\t\tif(value){\n\t\t\t\t\t\tmatcher = and(matcher, selectorTypes[type || \"\"](value.replace(/\\\\/g, '')));\n\t\t\t\t\t}\n\t\t\t\t\telse if(combinator){\n\t\t\t\t\t\tmatcher = (combinator == \" \" ? ancestor : parent)(matcher);\n\t\t\t\t\t}\n\t\t\t\t\telse if(attrName){\n\t\t\t\t\t\tmatcher = and(matcher, attr(attrName, attrValue, attrType));\n\t\t\t\t\t}\n\t\t\t\t\treturn \"\";\n\t\t\t\t})){\n\t\t\t\t\tthrow new Error(\"Syntax error in query\");\n\t\t\t\t}\n\t\t\t\tif(!matcher){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tcache[selector] = matcher;\n\t\t\t}\n\t\t\t// now run the matcher function on the node\n\t\t\treturn matcher(node, root);\n\t\t};\n\t})();\n}\nif(!has(\"dom-qsa\")){\n\tvar combine = function(selector, root){\n\t\t// combined queries\n\t\tvar selectors = selector.match(unionSplit);\n\t\tvar indexed = [];\n\t\t// add all results and keep unique ones, this only runs in IE, so we take advantage \n\t\t// of known IE features, particularly sourceIndex which is unique and allows us to \n\t\t// order the results \n\t\tfor(var i = 0; i < selectors.length; i++){\n\t\t\tselector = new String(selectors[i].replace(/\\s*$/,''));\n\t\t\tselector.indexOf = escape; // keep it from recursively entering combine\n\t\t\tvar results = liteEngine(selector, root);\n\t\t\tfor(var j = 0, l = results.length; j < l; j++){\n\t\t\t\tvar node = results[j];\n\t\t\t\tindexed[node.sourceIndex] = node;\n\t\t\t}\n\t\t}\n\t\t// now convert from a sparse array to a dense array\n\t\tvar totalResults = [];\n\t\tfor(i in indexed){\n\t\t\ttotalResults.push(indexed[i]);\n\t\t}\n\t\treturn totalResults;\n\t};\n}\n\nliteEngine.match = matchesSelector ? function(node, selector, root){\n\tif(root && root.nodeType != 9){\n\t\t// doesn't support three args, use rooted id trick\n\t\treturn useRoot(root, selector, function(query){\n\t\t\treturn matchesSelector.call(node, query);\n\t\t});\n\t}\n\t// we have a native matchesSelector, use that\n\treturn matchesSelector.call(node, selector);\n} : jsMatchesSelector; // otherwise use the JS matches impl\n\nreturn liteEngine;\n});\n","define([\n\t\"./_base/kernel\",\t// kernel.global\n\t\"./_base/lang\"\n], function(kernel, lang){\n\n// module:\n//\t\tdojo/string\nvar ESCAPE_REGEXP = /[&<>'\"\\/]/g;\nvar ESCAPE_MAP = {\n\t'&': '&',\n\t'<': '<',\n\t'>': '>',\n\t'\"': '"',\n\t\"'\": ''',\n\t'/': '/'\n};\nvar string = {\n\t// summary:\n\t//\t\tString utilities for Dojo\n};\nlang.setObject(\"dojo.string\", string);\n\nstring.escape = function(/*String*/str){\n\t// summary:\n\t//\t\tEfficiently escape a string for insertion into HTML (innerHTML or attributes), replacing &, <, >, \", ', and / characters.\n\t// str:\n\t//\t\tthe string to escape\n\tif(!str){ return \"\"; }\n\treturn str.replace(ESCAPE_REGEXP, function(c) {\n\t\treturn ESCAPE_MAP[c];\n\t});\n};\n\nstring.rep = function(/*String*/str, /*Integer*/num){\n\t// summary:\n\t//\t\tEfficiently replicate a string `n` times.\n\t// str:\n\t//\t\tthe string to replicate\n\t// num:\n\t//\t\tnumber of times to replicate the string\n\n\tif(num <= 0 || !str){ return \"\"; }\n\n\tvar buf = [];\n\tfor(;;){\n\t\tif(num & 1){\n\t\t\tbuf.push(str);\n\t\t}\n\t\tif(!(num >>= 1)){ break; }\n\t\tstr += str;\n\t}\n\treturn buf.join(\"\");\t// String\n};\n\nstring.pad = function(/*String*/text, /*Integer*/size, /*String?*/ch, /*Boolean?*/end){\n\t// summary:\n\t//\t\tPad a string to guarantee that it is at least `size` length by\n\t//\t\tfilling with the character `ch` at either the start or end of the\n\t//\t\tstring. Pads at the start, by default.\n\t// text:\n\t//\t\tthe string to pad\n\t// size:\n\t//\t\tlength to provide padding\n\t// ch:\n\t//\t\tcharacter to pad, defaults to '0'\n\t// end:\n\t//\t\tadds padding at the end if true, otherwise pads at start\n\t// example:\n\t//\t|\t// Fill the string to length 10 with \"+\" characters on the right. Yields \"Dojo++++++\".\n\t//\t|\tstring.pad(\"Dojo\", 10, \"+\", true);\n\n\tif(!ch){\n\t\tch = '0';\n\t}\n\tvar out = String(text),\n\t\tpad = string.rep(ch, Math.ceil((size - out.length) / ch.length));\n\treturn end ? out + pad : pad + out;\t// String\n};\n\nstring.substitute = function(\t/*String*/\t\ttemplate,\n\t\t\t\t\t\t\t\t\t/*Object|Array*/map,\n\t\t\t\t\t\t\t\t\t/*Function?*/\ttransform,\n\t\t\t\t\t\t\t\t\t/*Object?*/\t\tthisObject){\n\t// summary:\n\t//\t\tPerforms parameterized substitutions on a string. Throws an\n\t//\t\texception if any parameter is unmatched.\n\t// template:\n\t//\t\ta string with expressions in the form `${key}` to be replaced or\n\t//\t\t`${key:format}` which specifies a format function. keys are case-sensitive.\n\t//\t\tThe special sequence `${}` can be used escape `$`.\n\t// map:\n\t//\t\thash to search for substitutions\n\t// transform:\n\t//\t\ta function to process all parameters before substitution takes\n\t//\t\tplace, e.g. mylib.encodeXML\n\t// thisObject:\n\t//\t\twhere to look for optional format function; default to the global\n\t//\t\tnamespace\n\t// example:\n\t//\t\tSubstitutes two expressions in a string from an Array or Object\n\t//\t|\t// returns \"File 'foo.html' is not found in directory '/temp'.\"\n\t//\t|\t// by providing substitution data in an Array\n\t//\t|\tstring.substitute(\n\t//\t|\t\t\"File '${0}' is not found in directory '${1}'.\",\n\t//\t|\t\t[\"foo.html\",\"/temp\"]\n\t//\t|\t);\n\t//\t|\n\t//\t|\t// also returns \"File 'foo.html' is not found in directory '/temp'.\"\n\t//\t|\t// but provides substitution data in an Object structure. Dotted\n\t//\t|\t// notation may be used to traverse the structure.\n\t//\t|\tstring.substitute(\n\t//\t|\t\t\"File '${name}' is not found in directory '${info.dir}'.\",\n\t//\t|\t\t{ name: \"foo.html\", info: { dir: \"/temp\" } }\n\t//\t|\t);\n\t// example:\n\t//\t\tUse a transform function to modify the values:\n\t//\t|\t// returns \"file 'foo.html' is not found in directory '/temp'.\"\n\t//\t|\tstring.substitute(\n\t//\t|\t\t\"${0} is not found in ${1}.\",\n\t//\t|\t\t[\"foo.html\",\"/temp\"],\n\t//\t|\t\tfunction(str){\n\t//\t|\t\t\t// try to figure out the type\n\t//\t|\t\t\tvar prefix = (str.charAt(0) == \"/\") ? \"directory\": \"file\";\n\t//\t|\t\t\treturn prefix + \" '\" + str + \"'\";\n\t//\t|\t\t}\n\t//\t|\t);\n\t// example:\n\t//\t\tUse a formatter\n\t//\t|\t// returns \"thinger -- howdy\"\n\t//\t|\tstring.substitute(\n\t//\t|\t\t\"${0:postfix}\", [\"thinger\"], null, {\n\t//\t|\t\t\tpostfix: function(value, key){\n\t//\t|\t\t\t\treturn value + \" -- howdy\";\n\t//\t|\t\t\t}\n\t//\t|\t\t}\n\t//\t|\t);\n\n\tthisObject = thisObject || kernel.global;\n\ttransform = transform ?\n\t\tlang.hitch(thisObject, transform) : function(v){ return v; };\n\n\treturn template.replace(/\\$\\{([^\\s\\:\\}]*)(?:\\:([^\\s\\:\\}]+))?\\}/g,\n\t\tfunction(match, key, format){\n\t\t\tif (key == ''){\n\t\t\t\treturn '$';\n\t\t\t}\n\t\t\tvar value = lang.getObject(key, false, map);\n\t\t\tif(format){\n\t\t\t\tvalue = lang.getObject(format, false, thisObject).call(thisObject, value, key);\n\t\t\t}\n\t\t\tvar result = transform(value, key);\n\n\t\t\tif (typeof result === 'undefined') {\n\t\t\t\tthrow new Error('string.substitute could not find key \"' + key + '\" in template');\n\t\t\t}\n\n\t\t\treturn result.toString();\n\t\t}); // String\n};\n\nstring.trim = String.prototype.trim ?\n\tlang.trim : // aliasing to the native function\n\tfunction(str){\n\t\tstr = str.replace(/^\\s+/, '');\n\t\tfor(var i = str.length - 1; i >= 0; i--){\n\t\t\tif(/\\S/.test(str.charAt(i))){\n\t\t\t\tstr = str.substring(0, i + 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn str;\n\t};\n\n/*=====\n string.trim = function(str){\n\t // summary:\n\t //\t\tTrims whitespace from both sides of the string\n\t // str: String\n\t //\t\tString to be trimmed\n\t // returns: String\n\t //\t\tReturns the trimmed string\n\t // description:\n\t //\t\tThis version of trim() was taken from [Steven Levithan's blog](http://blog.stevenlevithan.com/archives/faster-trim-javascript).\n\t //\t\tThe short yet performant version of this function is dojo/_base/lang.trim(),\n\t //\t\twhich is part of Dojo base. Uses String.prototype.trim instead, if available.\n\t return \"\";\t// String\n };\n =====*/\n\n\treturn string;\n});\n","define([\"./_base/kernel\", \"require\", \"./has\", \"./has!host-browser?./request\"], function(dojo, require, has, request){\n\t// module:\n\t//\t\tdojo/text\n\n\tvar getText;\n\tif(has(\"host-browser\")){\n\t\tgetText= function(url, sync, load){\n\t\t\trequest(url, {sync:!!sync, headers: { 'X-Requested-With': null } }).then(load);\n\t\t};\n\t}else{\n\t\t// Path for node.js and rhino, to load from local file system.\n\t\t// TODO: use node.js native methods rather than depending on a require.getText() method to exist.\n\t\tif(require.getText){\n\t\t\tgetText= require.getText;\n\t\t}else{\n\t\t\tconsole.error(\"dojo/text plugin failed to load because loader does not support getText\");\n\t\t}\n\t}\n\n\tvar\n\t\ttheCache = {},\n\n\t\tstrip= function(text){\n\t\t\t//Strips <?xml ...?> declarations so that external SVG and XML\n\t\t\t//documents can be added to a document without worry. Also, if the string\n\t\t\t//is an HTML document, only the part inside the body tag is returned.\n\t\t\tif(text){\n\t\t\t\ttext= text.replace(/^\\s*<\\?xml(\\s)+version=[\\'\\\"](\\d)*.(\\d)*[\\'\\\"](\\s)*\\?>/im, \"\");\n\t\t\t\tvar matches= text.match(/<body[^>]*>\\s*([\\s\\S]+)\\s*<\\/body>/im);\n\t\t\t\tif(matches){\n\t\t\t\t\ttext= matches[1];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\ttext = \"\";\n\t\t\t}\n\t\t\treturn text;\n\t\t},\n\n\t\tnotFound = {},\n\n\t\tpending = {};\n\n\tdojo.cache = function(/*String||Object*/module, /*String*/url, /*String||Object?*/value){\n\t\t// summary:\n\t\t//\t\tA getter and setter for storing the string content associated with the\n\t\t//\t\tmodule and url arguments.\n\t\t// description:\n\t\t//\t\tIf module is a string that contains slashes, then it is interpretted as a fully\n\t\t//\t\tresolved path (typically a result returned by require.toUrl), and url should not be\n\t\t//\t\tprovided. This is the preferred signature. If module is a string that does not\n\t\t//\t\tcontain slashes, then url must also be provided and module and url are used to\n\t\t//\t\tcall `dojo.moduleUrl()` to generate a module URL. This signature is deprecated.\n\t\t//\t\tIf value is specified, the cache value for the moduleUrl will be set to\n\t\t//\t\tthat value. Otherwise, dojo.cache will fetch the moduleUrl and store it\n\t\t//\t\tin its internal cache and return that cached value for the URL. To clear\n\t\t//\t\ta cache value pass null for value. Since XMLHttpRequest (XHR) is used to fetch the\n\t\t//\t\tthe URL contents, only modules on the same domain of the page can use this capability.\n\t\t//\t\tThe build system can inline the cache values though, to allow for xdomain hosting.\n\t\t// module: String||Object\n\t\t//\t\tIf a String with slashes, a fully resolved path; if a String without slashes, the\n\t\t//\t\tmodule name to use for the base part of the URL, similar to module argument\n\t\t//\t\tto `dojo.moduleUrl`. If an Object, something that has a .toString() method that\n\t\t//\t\tgenerates a valid path for the cache item. For example, a dojo._Url object.\n\t\t// url: String\n\t\t//\t\tThe rest of the path to append to the path derived from the module argument. If\n\t\t//\t\tmodule is an object, then this second argument should be the \"value\" argument instead.\n\t\t// value: String||Object?\n\t\t//\t\tIf a String, the value to use in the cache for the module/url combination.\n\t\t//\t\tIf an Object, it can have two properties: value and sanitize. The value property\n\t\t//\t\tshould be the value to use in the cache, and sanitize can be set to true or false,\n\t\t//\t\tto indicate if XML declarations should be removed from the value and if the HTML\n\t\t//\t\tinside a body tag in the value should be extracted as the real value. The value argument\n\t\t//\t\tor the value property on the value argument are usually only used by the build system\n\t\t//\t\tas it inlines cache content.\n\t\t// example:\n\t\t//\t\tTo ask dojo.cache to fetch content and store it in the cache (the dojo[\"cache\"] style\n\t\t//\t\tof call is used to avoid an issue with the build system erroneously trying to intern\n\t\t//\t\tthis example. To get the build system to intern your dojo.cache calls, use the\n\t\t//\t\t\"dojo.cache\" style of call):\n\t\t//\t\t| //If template.html contains \"<h1>Hello</h1>\" that will be\n\t\t//\t\t| //the value for the text variable.\n\t\t//\t\t| //Note: This is pre-AMD, deprecated syntax\n\t\t//\t\t| var text = dojo[\"cache\"](\"my.module\", \"template.html\");\n\t\t// example:\n\t\t//\t\tTo ask dojo.cache to fetch content and store it in the cache, and sanitize the input\n\t\t//\t\t (the dojo[\"cache\"] style of call is used to avoid an issue with the build system\n\t\t//\t\terroneously trying to intern this example. To get the build system to intern your\n\t\t//\t\tdojo.cache calls, use the \"dojo.cache\" style of call):\n\t\t//\t\t| //If template.html contains \"<html><body><h1>Hello</h1></body></html>\", the\n\t\t//\t\t| //text variable will contain just \"<h1>Hello</h1>\".\n\t\t//\t\t| //Note: This is pre-AMD, deprecated syntax\n\t\t//\t\t| var text = dojo[\"cache\"](\"my.module\", \"template.html\", {sanitize: true});\n\t\t// example:\n\t\t//\t\tSame example as previous, but demonstrates how an object can be passed in as\n\t\t//\t\tthe first argument, then the value argument can then be the second argument.\n\t\t//\t\t| //If template.html contains \"<html><body><h1>Hello</h1></body></html>\", the\n\t\t//\t\t| //text variable will contain just \"<h1>Hello</h1>\".\n\t\t//\t\t| //Note: This is pre-AMD, deprecated syntax\n\t\t//\t\t| var text = dojo[\"cache\"](new dojo._Url(\"my/module/template.html\"), {sanitize: true});\n\n\t\t//\t * (string string [value]) => (module, url, value)\n\t\t//\t * (object [value]) => (module, value), url defaults to \"\"\n\t\t//\n\t\t//\t * if module is an object, then it must be convertable to a string\n\t\t//\t * (module, url) module + (url ? (\"/\" + url) : \"\") must be a legal argument to require.toUrl\n\t\t//\t * value may be a string or an object; if an object then may have the properties \"value\" and/or \"sanitize\"\n\t\tvar key;\n\t\tif(typeof module==\"string\"){\n\t\t\tif(/\\//.test(module)){\n\t\t\t\t// module is a version 1.7+ resolved path\n\t\t\t\tkey = module;\n\t\t\t\tvalue = url;\n\t\t\t}else{\n\t\t\t\t// module is a version 1.6- argument to dojo.moduleUrl\n\t\t\t\tkey = require.toUrl(module.replace(/\\./g, \"/\") + (url ? (\"/\" + url) : \"\"));\n\t\t\t}\n\t\t}else{\n\t\t\tkey = module + \"\";\n\t\t\tvalue = url;\n\t\t}\n\t\tvar\n\t\t\tval = (value != undefined && typeof value != \"string\") ? value.value : value,\n\t\t\tsanitize = value && value.sanitize;\n\n\t\tif(typeof val == \"string\"){\n\t\t\t//We have a string, set cache value\n\t\t\ttheCache[key] = val;\n\t\t\treturn sanitize ? strip(val) : val;\n\t\t}else if(val === null){\n\t\t\t//Remove cached value\n\t\t\tdelete theCache[key];\n\t\t\treturn null;\n\t\t}else{\n\t\t\t//Allow cache values to be empty strings. If key property does\n\t\t\t//not exist, fetch it.\n\t\t\tif(!(key in theCache)){\n\t\t\t\tgetText(key, true, function(text){\n\t\t\t\t\ttheCache[key]= text;\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn sanitize ? strip(theCache[key]) : theCache[key];\n\t\t}\n\t};\n\n\treturn {\n\t\t// summary:\n\t\t//\t\tThis module implements the dojo/text! plugin and the dojo.cache API.\n\t\t// description:\n\t\t//\t\tWe choose to include our own plugin to leverage functionality already contained in dojo\n\t\t//\t\tand thereby reduce the size of the plugin compared to various foreign loader implementations.\n\t\t//\t\tAlso, this allows foreign AMD loaders to be used without their plugins.\n\t\t//\n\t\t//\t\tCAUTION: this module is designed to optionally function synchronously to support the dojo v1.x synchronous\n\t\t//\t\tloader. This feature is outside the scope of the CommonJS plugins specification.\n\n\t\t// the dojo/text caches it's own resources because of dojo.cache\n\t\tdynamic: true,\n\n\t\tnormalize: function(id, toAbsMid){\n\t\t\t// id is something like (path may be relative):\n\t\t\t//\n\t\t\t//\t \"path/to/text.html\"\n\t\t\t//\t \"path/to/text.html!strip\"\n\t\t\tvar parts= id.split(\"!\"),\n\t\t\t\turl= parts[0];\n\t\t\treturn (/^\\./.test(url) ? toAbsMid(url) : url) + (parts[1] ? \"!\" + parts[1] : \"\");\n\t\t},\n\n\t\tload: function(id, require, load){\n\t\t\t// id: String\n\t\t\t//\t\tPath to the resource.\n\t\t\t// require: Function\n\t\t\t//\t\tObject that include the function toUrl with given id returns a valid URL from which to load the text.\n\t\t\t// load: Function\n\t\t\t//\t\tCallback function which will be called, when the loading finished.\n\n\t\t\t// id is something like (path is always absolute):\n\t\t\t//\n\t\t\t//\t \"path/to/text.html\"\n\t\t\t//\t \"path/to/text.html!strip\"\n\t\t\tvar\n\t\t\t\tparts= id.split(\"!\"),\n\t\t\t\tstripFlag= parts.length>1,\n\t\t\t\tabsMid= parts[0],\n\t\t\t\turl = require.toUrl(parts[0]),\n\t\t\t\trequireCacheUrl = \"url:\" + url,\n\t\t\t\ttext = notFound,\n\t\t\t\tfinish = function(text){\n\t\t\t\t\tload(stripFlag ? strip(text) : text);\n\t\t\t\t};\n\t\t\tif(absMid in theCache){\n\t\t\t\ttext = theCache[absMid];\n\t\t\t}else if(require.cache && requireCacheUrl in require.cache){\n\t\t\t\ttext = require.cache[requireCacheUrl];\n\t\t\t}else if(url in theCache){\n\t\t\t\ttext = theCache[url];\n\t\t\t}\n\t\t\tif(text===notFound){\n\t\t\t\tif(pending[url]){\n\t\t\t\t\tpending[url].push(finish);\n\t\t\t\t}else{\n\t\t\t\t\tvar pendingList = pending[url] = [finish];\n\t\t\t\t\tgetText(url, !require.async, function(text){\n\t\t\t\t\t\ttheCache[absMid]= theCache[url]= text;\n\t\t\t\t\t\tfor(var i = 0; i<pendingList.length;){\n\t\t\t\t\t\t\tpendingList[i++](text);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete pending[url];\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tfinish(text);\n\t\t\t}\n\t\t}\n\t};\n\n});\n\n","define([\"./_base/kernel\", \"./aspect\", \"./dom\", \"./dom-class\", \"./_base/lang\", \"./on\", \"./has\", \"./mouse\", \"./domReady\", \"./_base/window\"],\nfunction(dojo, aspect, dom, domClass, lang, on, has, mouse, domReady, win){\n\n\t// module:\n\t//\t\tdojo/touch\n\n\tvar ios4 = has(\"ios\") < 5;\n\n\t// Detect if platform supports Pointer Events, and if so, the names of the events (pointerdown vs. MSPointerDown).\n\tvar hasPointer = has(\"pointer-events\") || has(\"MSPointer\"),\n\t\tpointer = (function () {\n\t\t\tvar pointer = {};\n\t\t\tfor (var type in { down: 1, move: 1, up: 1, cancel: 1, over: 1, out: 1 }) {\n\t\t\t\tpointer[type] = has(\"MSPointer\") ?\n\t\t\t\t\t\"MSPointer\" + type.charAt(0).toUpperCase() + type.slice(1) :\n\t\t\t\t\t\"pointer\" + type;\n\t\t\t}\n\t\t\treturn pointer;\n\t\t})();\n\n\t// Detect if platform supports the webkit touchstart/touchend/... events\n\tvar hasTouch = has(\"touch-events\");\n\n\t// Click generation variables\n\tvar clicksInited, clickTracker, useTarget = false, clickTarget, clickX, clickY, clickDx, clickDy, clickTime;\n\n\t// Time of most recent touchstart, touchmove, or touchend event\n\tvar lastTouch;\n\n\tfunction dualEvent(mouseType, touchType, pointerType){\n\t\t// Returns synthetic event that listens for both the specified mouse event and specified touch event.\n\t\t// But ignore fake mouse events that were generated due to the user touching the screen.\n\t\tif(hasPointer && pointerType){\n\t\t\t// IE10+: MSPointer* events are designed to handle both mouse and touch in a uniform way,\n\t\t\t// so just use that regardless of hasTouch.\n\t\t\treturn function(node, listener){\n\t\t\t\treturn on(node, pointerType, listener);\n\t\t\t};\n\t\t}else if(hasTouch){\n\t\t\treturn function(node, listener){\n\t\t\t\tvar handle1 = on(node, touchType, function(evt){\n\t\t\t\t\t\tlistener.call(this, evt);\n\n\t\t\t\t\t\t// On slow mobile browsers (see https://bugs.dojotoolkit.org/ticket/17634),\n\t\t\t\t\t\t// a handler for a touch event may take >1s to run. That time shouldn't\n\t\t\t\t\t\t// be included in the calculation for lastTouch.\n\t\t\t\t\t\tlastTouch = (new Date()).getTime();\n\t\t\t\t\t}),\n\t\t\t\t\thandle2 = on(node, mouseType, function(evt){\n\t\t\t\t\t\tif(!lastTouch || (new Date()).getTime() > lastTouch + 1000){\n\t\t\t\t\t\t\tlistener.call(this, evt);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\tremove: function(){\n\t\t\t\t\t\thandle1.remove();\n\t\t\t\t\t\thandle2.remove();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}else{\n\t\t\t// Avoid creating listeners for touch events on performance sensitive older browsers like IE6\n\t\t\treturn function(node, listener){\n\t\t\t\treturn on(node, mouseType, listener);\n\t\t\t};\n\t\t}\n\t}\n\n\tfunction marked(/*DOMNode*/ node){\n\t\t// Search for node ancestor has been marked with the dojoClick property to indicate special processing.\n\t\t// Returns marked ancestor.\n\t\tdo{\n\t\t\tif(node.dojoClick !== undefined){ return node; }\n\t\t}while(node = node.parentNode);\n\t}\n\n\tfunction doClicks(e, moveType, endType){\n\t\t// summary:\n\t\t//\t\tSetup touch listeners to generate synthetic clicks immediately (rather than waiting for the browser\n\t\t//\t\tto generate clicks after the double-tap delay) and consistently (regardless of whether event.preventDefault()\n\t\t//\t\twas called in an event listener. Synthetic clicks are generated only if a node or one of its ancestors has\n\t\t//\t\tits dojoClick property set to truthy. If a node receives synthetic clicks because one of its ancestors has its\n\t\t// dojoClick property set to truthy, you can disable synthetic clicks on this node by setting its own dojoClick property\n\t\t// to falsy.\n\n\t\tif(mouse.isRight(e)){\n\t\t\treturn;\t\t// avoid spurious dojoclick event on IE10+; right click is just for context menu\n\t\t}\n\n\t\tvar markedNode = marked(e.target);\n\t\tclickTracker = !e.target.disabled && markedNode && markedNode.dojoClick; // click threshold = true, number, x/y object, or \"useTarget\"\n\t\tif(clickTracker){\n\t\t\tuseTarget = (clickTracker == \"useTarget\");\n\t\t\tclickTarget = (useTarget?markedNode:e.target);\n\t\t\tif(useTarget){\n\t\t\t\t// We expect a click, so prevent any other\n\t\t\t\t// default action on \"touchpress\"\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\tclickX = e.changedTouches ? e.changedTouches[0].pageX - win.global.pageXOffset : e.clientX;\n\t\t\tclickY = e.changedTouches ? e.changedTouches[0].pageY - win.global.pageYOffset : e.clientY;\n\t\t\tclickDx = (typeof clickTracker == \"object\" ? clickTracker.x : (typeof clickTracker == \"number\" ? clickTracker : 0)) || 4;\n\t\t\tclickDy = (typeof clickTracker == \"object\" ? clickTracker.y : (typeof clickTracker == \"number\" ? clickTracker : 0)) || 4;\n\n\t\t\t// add move/end handlers only the first time a node with dojoClick is seen,\n\t\t\t// so we don't add too much overhead when dojoClick is never set.\n\t\t\tif(!clicksInited){\n\t\t\t\tclicksInited = true;\n\n\t\t\t\tfunction updateClickTracker(e){\n\t\t\t\t\tif(useTarget){\n\t\t\t\t\t\tclickTracker = dom.isDescendant(\n\t\t\t\t\t\t\twin.doc.elementFromPoint(\n\t\t\t\t\t\t\t\t(e.changedTouches ? e.changedTouches[0].pageX - win.global.pageXOffset : e.clientX),\n\t\t\t\t\t\t\t\t(e.changedTouches ? e.changedTouches[0].pageY - win.global.pageYOffset : e.clientY)),\n\t\t\t\t\t\t\tclickTarget);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tclickTracker = clickTracker &&\n\t\t\t\t\t\t\t(e.changedTouches ? e.changedTouches[0].target : e.target) == clickTarget &&\n\t\t\t\t\t\t\tMath.abs((e.changedTouches ? e.changedTouches[0].pageX - win.global.pageXOffset : e.clientX) - clickX) <= clickDx &&\n\t\t\t\t\t\t\tMath.abs((e.changedTouches ? e.changedTouches[0].pageY - win.global.pageYOffset : e.clientY) - clickY) <= clickDy;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twin.doc.addEventListener(moveType, function(e){\n\t\t\t\t\tif(mouse.isRight(e)){\n\t\t\t\t\t\treturn;\t\t// avoid spurious dojoclick event on IE10+; right click is just for context menu\n\t\t\t\t\t}\n\t\t\t\t\tupdateClickTracker(e);\n\t\t\t\t\tif(useTarget){\n\t\t\t\t\t\t// prevent native scroll event and ensure touchend is\n\t\t\t\t\t\t// fire after touch moves between press and release.\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}, true);\n\n\t\t\t\twin.doc.addEventListener(endType, function(e){\n\t\t\t\t\tif(mouse.isRight(e)){\n\t\t\t\t\t\treturn;\t\t// avoid spurious dojoclick event on IE10+; right click is just for context menu\n\t\t\t\t\t}\n\t\t\t\t\tupdateClickTracker(e);\n\t\t\t\t\tif(clickTracker){\n\t\t\t\t\t\tclickTime = (new Date()).getTime();\n\t\t\t\t\t\tvar target = (useTarget?clickTarget:e.target);\n\t\t\t\t\t\tif(target.tagName === \"LABEL\"){\n\t\t\t\t\t\t\t// when clicking on a label, forward click to its associated input if any\n\t\t\t\t\t\t\ttarget = dom.byId(target.getAttribute(\"for\")) || target;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t//some attributes can be on the Touch object, not on the Event:\n\t\t\t\t\t\t//http://www.w3.org/TR/touch-events/#touch-interface\n\t\t\t\t\t\tvar src = (e.changedTouches) ? e.changedTouches[0] : e;\n\t\t\t\t\t\tfunction createMouseEvent(type){\n\t\t\t\t\t\t\t//create the synthetic event.\n\t\t\t\t\t\t\t//http://www.w3.org/TR/DOM-Level-3-Events/#widl-MouseEvent-initMouseEvent\n\t\t\t\t\t\t\tvar evt = document.createEvent(\"MouseEvents\");\n\t\t\t\t\t\t\tevt._dojo_click = true;\n\t\t\t\t\t\t\tevt.initMouseEvent(type,\n\t\t\t\t\t\t\t\ttrue, //bubbles\n\t\t\t\t\t\t\t\ttrue, //cancelable\n\t\t\t\t\t\t\t\te.view,\n\t\t\t\t\t\t\t\te.detail,\n\t\t\t\t\t\t\t\tsrc.screenX,\n\t\t\t\t\t\t\t\tsrc.screenY,\n\t\t\t\t\t\t\t\tsrc.clientX,\n\t\t\t\t\t\t\t\tsrc.clientY,\n\t\t\t\t\t\t\t\te.ctrlKey,\n\t\t\t\t\t\t\t\te.altKey,\n\t\t\t\t\t\t\t\te.shiftKey,\n\t\t\t\t\t\t\t\te.metaKey,\n\t\t\t\t\t\t\t\t0, //button\n\t\t\t\t\t\t\t\tnull //related target\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn evt;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar mouseDownEvt = createMouseEvent(\"mousedown\");\n\t\t\t\t\t\tvar mouseUpEvt = createMouseEvent(\"mouseup\");\n\t\t\t\t\t\tvar clickEvt = createMouseEvent(\"click\");\n\n\t\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\t\ton.emit(target, \"mousedown\", mouseDownEvt);\n\t\t\t\t\t\t\ton.emit(target, \"mouseup\", mouseUpEvt);\n\t\t\t\t\t\t\ton.emit(target, \"click\", clickEvt);\n\n\t\t\t\t\t\t\t// refresh clickTime in case app-defined click handler took a long time to run\n\t\t\t\t\t\t\tclickTime = (new Date()).getTime();\n\t\t\t\t\t\t}, 0);\n\t\t\t\t\t}\n\t\t\t\t}, true);\n\n\t\t\t\tfunction stopNativeEvents(type){\n\t\t\t\t\twin.doc.addEventListener(type, function(e){\n\t\t\t\t\t\t// Stop native events when we emitted our own click event. Note that the native click may occur\n\t\t\t\t\t\t// on a different node than the synthetic click event was generated on. For example,\n\t\t\t\t\t\t// click on a menu item, causing the menu to disappear, and then (~300ms later) the browser\n\t\t\t\t\t\t// sends a click event to the node that was *underneath* the menu. So stop all native events\n\t\t\t\t\t\t// sent shortly after ours, similar to what is done in dualEvent.\n\t\t\t\t\t\t// The INPUT.dijitOffScreen test is for offscreen inputs used in dijit/form/Button, on which\n\t\t\t\t\t\t// we call click() explicitly, we don't want to stop this event.\n\t\t\t\t\t\tvar target = e.target;\n\t\t\t\t\t\tif(clickTracker && !e._dojo_click &&\n\t\t\t\t\t\t\t\t(new Date()).getTime() <= clickTime + 1000 &&\n\t\t\t\t\t\t\t\t!(target.tagName == \"INPUT\" && domClass.contains(target, \"dijitOffScreen\"))){\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\te.stopImmediatePropagation && e.stopImmediatePropagation();\n\t\t\t\t\t\t\tif(type == \"click\" &&\n\t\t\t\t\t\t\t\t(target.tagName != \"INPUT\" ||\n\t\t\t\t\t\t\t\t(target.type == \"radio\" &&\n\t\t\t\t\t\t\t\t\t// #18352 Do not preventDefault for radios that are not dijit or\n\t\t\t\t\t\t\t\t\t// dojox/mobile widgets.\n\t\t\t\t\t\t\t\t\t// (The CSS class dijitCheckBoxInput holds for both checkboxes and radio buttons.)\n\t\t\t\t\t\t\t\t\t(domClass.contains(target, \"dijitCheckBoxInput\") ||\n\t\t\t\t\t\t\t\t\t\tdomClass.contains(target, \"mblRadioButton\"))) ||\n\t\t\t\t\t\t\t\t(target.type == \"checkbox\" &&\n\t\t\t\t\t\t\t\t\t// #18352 Do not preventDefault for checkboxes that are not dijit or\n\t\t\t\t\t\t\t\t\t// dojox/mobile widgets.\n\t\t\t\t\t\t\t\t\t(domClass.contains(target, \"dijitCheckBoxInput\") ||\n\t\t\t\t\t\t\t\t\t\tdomClass.contains(target, \"mblCheckBox\")))) &&\n\t\t\t\t\t\t\t\ttarget.tagName != \"TEXTAREA\" && target.tagName != \"AUDIO\" && target.tagName != \"VIDEO\"){\n\t\t\t\t\t\t\t\t// preventDefault() breaks textual <input>s on android, keyboard doesn't popup,\n\t\t\t\t\t\t\t\t// but it is still needed for checkboxes and radio buttons, otherwise in some cases\n\t\t\t\t\t\t\t\t// the checked state becomes inconsistent with the widget's state\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, true);\n\t\t\t\t}\n\n\t\t\t\tstopNativeEvents(\"click\");\n\n\t\t\t\t// We also stop mousedown/up since these would be sent well after with our \"fast\" click (300ms),\n\t\t\t\t// which can confuse some dijit widgets.\n\t\t\t\tstopNativeEvents(\"mousedown\");\n\t\t\t\tstopNativeEvents(\"mouseup\");\n\t\t\t}\n\t\t}\n\t}\n\n\tvar hoveredNode;\n\n\tif(has(\"touch\")){\n\t\tif(hasPointer){\n\t\t\t// MSPointer (IE10+) already has support for over and out, so we just need to init click support\n\t\t\tdomReady(function(){\n\t\t\t\twin.doc.addEventListener(pointer.down, function(evt){\n\t\t\t\t\tdoClicks(evt, pointer.move, pointer.up);\n\t\t\t\t}, true);\n\t\t\t});\n\t\t}else{\n\t\t\tdomReady(function(){\n\t\t\t\t// Keep track of currently hovered node\n\t\t\t\thoveredNode = win.body();\t// currently hovered node\n\n\t\t\t\twin.doc.addEventListener(\"touchstart\", function(evt){\n\t\t\t\t\t\tlastTouch = (new Date()).getTime();\n\n\t\t\t\t\t// Precede touchstart event with touch.over event. DnD depends on this.\n\t\t\t\t\t// Use addEventListener(cb, true) to run cb before any touchstart handlers on node run,\n\t\t\t\t\t// and to ensure this code runs even if the listener on the node does event.stop().\n\t\t\t\t\tvar oldNode = hoveredNode;\n\t\t\t\t\thoveredNode = evt.target;\n\t\t\t\t\ton.emit(oldNode, \"dojotouchout\", {\n\t\t\t\t\t\trelatedTarget: hoveredNode,\n\t\t\t\t\t\tbubbles: true\n\t\t\t\t\t});\n\t\t\t\t\ton.emit(hoveredNode, \"dojotouchover\", {\n\t\t\t\t\t\trelatedTarget: oldNode,\n\t\t\t\t\t\tbubbles: true\n\t\t\t\t\t});\n\n\t\t\t\t\tdoClicks(evt, \"touchmove\", \"touchend\"); // init click generation\n\t\t\t\t}, true);\n\n\t\t\t\tfunction copyEventProps(evt){\n\t\t\t\t\t// Make copy of event object and also set bubbles:true. Used when calling on.emit().\n\t\t\t\t\tvar props = lang.delegate(evt, {\n\t\t\t\t\t\tbubbles: true\n\t\t\t\t\t});\n\n\t\t\t\t\tif(has(\"ios\") >= 6){\n\t\t\t\t\t\t// On iOS6 \"touches\" became a non-enumerable property, which\n\t\t\t\t\t\t// is not hit by for...in. Ditto for the other properties below.\n\t\t\t\t\t\tprops.touches = evt.touches;\n\t\t\t\t\t\tprops.altKey = evt.altKey;\n\t\t\t\t\t\tprops.changedTouches = evt.changedTouches;\n\t\t\t\t\t\tprops.ctrlKey = evt.ctrlKey;\n\t\t\t\t\t\tprops.metaKey = evt.metaKey;\n\t\t\t\t\t\tprops.shiftKey = evt.shiftKey;\n\t\t\t\t\t\tprops.targetTouches = evt.targetTouches;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn props;\n\t\t\t\t}\n\n\t\t\t\ton(win.doc, \"touchmove\", function(evt){\n\t\t\t\t\tlastTouch = (new Date()).getTime();\n\n\t\t\t\t\tvar newNode = win.doc.elementFromPoint(\n\t\t\t\t\t\tevt.pageX - (ios4 ? 0 : win.global.pageXOffset), // iOS 4 expects page coords\n\t\t\t\t\t\tevt.pageY - (ios4 ? 0 : win.global.pageYOffset)\n\t\t\t\t\t);\n\n\t\t\t\t\tif(newNode){\n\t\t\t\t\t\t// Fire synthetic touchover and touchout events on nodes since the browser won't do it natively.\n\t\t\t\t\t\tif(hoveredNode !== newNode){\n\t\t\t\t\t\t\t// touch out on the old node\n\t\t\t\t\t\t\ton.emit(hoveredNode, \"dojotouchout\", {\n\t\t\t\t\t\t\t\trelatedTarget: newNode,\n\t\t\t\t\t\t\t\tbubbles: true\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t// touchover on the new node\n\t\t\t\t\t\t\ton.emit(newNode, \"dojotouchover\", {\n\t\t\t\t\t\t\t\trelatedTarget: hoveredNode,\n\t\t\t\t\t\t\t\tbubbles: true\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\thoveredNode = newNode;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Unlike a listener on \"touchmove\", on(node, \"dojotouchmove\", listener) fires when the finger\n\t\t\t\t\t\t// drags over the specified node, regardless of which node the touch started on.\n\t\t\t\t\t\tif(!on.emit(newNode, \"dojotouchmove\", copyEventProps(evt))){\n\t\t\t\t\t\t\t// emit returns false when synthetic event \"dojotouchmove\" is cancelled, so we prevent the\n\t\t\t\t\t\t\t// default behavior of the underlying native event \"touchmove\".\n\t\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Fire a dojotouchend event on the node where the finger was before it was removed from the screen.\n\t\t\t\t// This is different than the native touchend, which fires on the node where the drag started.\n\t\t\t\ton(win.doc, \"touchend\", function(evt){\n\t\t\t\t\t\tlastTouch = (new Date()).getTime();\n\t\t\t\t\tvar node = win.doc.elementFromPoint(\n\t\t\t\t\t\tevt.pageX - (ios4 ? 0 : win.global.pageXOffset), // iOS 4 expects page coords\n\t\t\t\t\t\tevt.pageY - (ios4 ? 0 : win.global.pageYOffset)\n\t\t\t\t\t) || win.body(); // if out of the screen\n\n\t\t\t\t\ton.emit(node, \"dojotouchend\", copyEventProps(evt));\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\t//device neutral events - touch.press|move|release|cancel/over/out\n\tvar touch = {\n\t\tpress: dualEvent(\"mousedown\", \"touchstart\", pointer.down),\n\t\tmove: dualEvent(\"mousemove\", \"dojotouchmove\", pointer.move),\n\t\trelease: dualEvent(\"mouseup\", \"dojotouchend\", pointer.up),\n\t\tcancel: dualEvent(mouse.leave, \"touchcancel\", hasPointer ? pointer.cancel : null),\n\t\tover: dualEvent(\"mouseover\", \"dojotouchover\", pointer.over),\n\t\tout: dualEvent(\"mouseout\", \"dojotouchout\", pointer.out),\n\t\tenter: mouse._eventHandler(dualEvent(\"mouseover\",\"dojotouchover\", pointer.over)),\n\t\tleave: mouse._eventHandler(dualEvent(\"mouseout\", \"dojotouchout\", pointer.out))\n\t};\n\n\t/*=====\n\ttouch = {\n\t\t// summary:\n\t\t//\t\tThis module provides unified touch event handlers by exporting\n\t\t//\t\tpress, move, release and cancel which can also run well on desktop.\n\t\t//\t\tBased on http://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html\n\t\t// Also, if the dojoClick property is set to truthy on a DOM node, dojo/touch generates\n\t\t// click events immediately for this node and its descendants (except for descendants that\n\t\t// have a dojoClick property set to falsy), to avoid the delay before native browser click events,\n\t\t// and regardless of whether evt.preventDefault() was called in a touch.press event listener.\n\t\t//\n\t\t// example:\n\t\t//\t\tUsed with dojo/on\n\t\t//\t\t|\tdefine([\"dojo/on\", \"dojo/touch\"], function(on, touch){\n\t\t//\t\t|\t\ton(node, touch.press, function(e){});\n\t\t//\t\t|\t\ton(node, touch.move, function(e){});\n\t\t//\t\t|\t\ton(node, touch.release, function(e){});\n\t\t//\t\t|\t\ton(node, touch.cancel, function(e){});\n\t\t// example:\n\t\t//\t\tUsed with touch.* directly\n\t\t//\t\t|\ttouch.press(node, function(e){});\n\t\t//\t\t|\ttouch.move(node, function(e){});\n\t\t//\t\t|\ttouch.release(node, function(e){});\n\t\t//\t\t|\ttouch.cancel(node, function(e){});\n\t\t// example:\n\t\t//\t\tHave dojo/touch generate clicks without delay, with a default move threshold of 4 pixels\n\t\t//\t\t|\tnode.dojoClick = true;\n\t\t// example:\n\t\t//\t\tHave dojo/touch generate clicks without delay, with a move threshold of 10 pixels horizontally and vertically\n\t\t//\t\t|\tnode.dojoClick = 10;\n\t\t// example:\n\t\t//\t\tHave dojo/touch generate clicks without delay, with a move threshold of 50 pixels horizontally and 10 pixels vertically\n\t\t//\t\t|\tnode.dojoClick = {x:50, y:5};\n\t\t// example:\n\t\t//\t\tDisable clicks without delay generated by dojo/touch on a node that has an ancestor with property dojoClick set to truthy\n\t\t//\t\t| node.dojoClick = false;\n\n\t\tpress: function(node, listener){\n\t\t\t// summary:\n\t\t\t//\t\tRegister a listener to 'touchstart'|'mousedown' for the given node\n\t\t\t// node: Dom\n\t\t\t//\t\tTarget node to listen to\n\t\t\t// listener: Function\n\t\t\t//\t\tCallback function\n\t\t\t// returns:\n\t\t\t//\t\tA handle which will be used to remove the listener by handle.remove()\n\t\t},\n\t\tmove: function(node, listener){\n\t\t\t// summary:\n\t\t\t//\t\tRegister a listener that fires when the mouse cursor or a finger is dragged over the given node.\n\t\t\t// node: Dom\n\t\t\t//\t\tTarget node to listen to\n\t\t\t// listener: Function\n\t\t\t//\t\tCallback function\n\t\t\t// returns:\n\t\t\t//\t\tA handle which will be used to remove the listener by handle.remove()\n\t\t},\n\t\trelease: function(node, listener){\n\t\t\t// summary:\n\t\t\t//\t\tRegister a listener to releasing the mouse button while the cursor is over the given node\n\t\t\t//\t\t(i.e. \"mouseup\") or for removing the finger from the screen while touching the given node.\n\t\t\t// node: Dom\n\t\t\t//\t\tTarget node to listen to\n\t\t\t// listener: Function\n\t\t\t//\t\tCallback function\n\t\t\t// returns:\n\t\t\t//\t\tA handle which will be used to remove the listener by handle.remove()\n\t\t},\n\t\tcancel: function(node, listener){\n\t\t\t// summary:\n\t\t\t//\t\tRegister a listener to 'touchcancel'|'mouseleave' for the given node\n\t\t\t// node: Dom\n\t\t\t//\t\tTarget node to listen to\n\t\t\t// listener: Function\n\t\t\t//\t\tCallback function\n\t\t\t// returns:\n\t\t\t//\t\tA handle which will be used to remove the listener by handle.remove()\n\t\t},\n\t\tover: function(node, listener){\n\t\t\t// summary:\n\t\t\t//\t\tRegister a listener to 'mouseover' or touch equivalent for the given node\n\t\t\t// node: Dom\n\t\t\t//\t\tTarget node to listen to\n\t\t\t// listener: Function\n\t\t\t//\t\tCallback function\n\t\t\t// returns:\n\t\t\t//\t\tA handle which will be used to remove the listener by handle.remove()\n\t\t},\n\t\tout: function(node, listener){\n\t\t\t// summary:\n\t\t\t//\t\tRegister a listener to 'mouseout' or touch equivalent for the given node\n\t\t\t// node: Dom\n\t\t\t//\t\tTarget node to listen to\n\t\t\t// listener: Function\n\t\t\t//\t\tCallback function\n\t\t\t// returns:\n\t\t\t//\t\tA handle which will be used to remove the listener by handle.remove()\n\t\t},\n\t\tenter: function(node, listener){\n\t\t\t// summary:\n\t\t\t//\t\tRegister a listener to mouse.enter or touch equivalent for the given node\n\t\t\t// node: Dom\n\t\t\t//\t\tTarget node to listen to\n\t\t\t// listener: Function\n\t\t\t//\t\tCallback function\n\t\t\t// returns:\n\t\t\t//\t\tA handle which will be used to remove the listener by handle.remove()\n\t\t},\n\t\tleave: function(node, listener){\n\t\t\t// summary:\n\t\t\t//\t\tRegister a listener to mouse.leave or touch equivalent for the given node\n\t\t\t// node: Dom\n\t\t\t//\t\tTarget node to listen to\n\t\t\t// listener: Function\n\t\t\t//\t\tCallback function\n\t\t\t// returns:\n\t\t\t//\t\tA handle which will be used to remove the listener by handle.remove()\n\t\t}\n\t};\n\t=====*/\n\n\thas(\"extend-dojo\") && (dojo.touch = touch);\n\n\treturn touch;\n});\n","define([\"./dom-geometry\", \"./_base/lang\", \"./domReady\", \"./sniff\", \"./_base/window\"],\n\tfunction(geometry, lang, domReady, has, baseWindow){\n\n\t// module:\n\t//\t\tdojo/uacss\n\n\t/*=====\n\treturn {\n\t\t// summary:\n\t\t//\t\tApplies pre-set CSS classes to the top-level HTML node, based on:\n\t\t//\n\t\t//\t\t- browser (ex: dj_ie)\n\t\t//\t\t- browser version (ex: dj_ie6)\n\t\t//\t\t- box model (ex: dj_contentBox)\n\t\t//\t\t- text direction (ex: dijitRtl)\n\t\t//\n\t\t//\t\tIn addition, browser, browser version, and box model are\n\t\t//\t\tcombined with an RTL flag when browser text is RTL. ex: dj_ie-rtl.\n\t\t//\n\t\t//\t\tReturns the has() method.\n\t};\n\t=====*/\n\n\tvar\n\t\thtml = baseWindow.doc.documentElement,\n\t\tie = has(\"ie\"),\n\t\ttrident = has(\"trident\"),\n\t\topera = has(\"opera\"),\n\t\tmaj = Math.floor,\n\t\tff = has(\"ff\"),\n\t\tboxModel = geometry.boxModel.replace(/-/,''),\n\n\t\tclasses = {\n\t\t\t\"dj_quirks\": has(\"quirks\"),\n\n\t\t\t// NOTE: Opera not supported by dijit\n\t\t\t\"dj_opera\": opera,\n\n\t\t\t\"dj_khtml\": has(\"khtml\"),\n\n\t\t\t\"dj_webkit\": has(\"webkit\"),\n\t\t\t\"dj_safari\": has(\"safari\"),\n\t\t\t\"dj_chrome\": has(\"chrome\"),\n\t\t\t\"dj_edge\": has(\"edge\"),\n\n\t\t\t\"dj_gecko\": has(\"mozilla\"),\n\n\t\t\t\"dj_ios\": has(\"ios\"),\n\t\t\t\"dj_android\": has(\"android\")\n\t\t}; // no dojo unsupported browsers\n\n\tif(ie){\n\t\tclasses[\"dj_ie\"] = true;\n\t\tclasses[\"dj_ie\" + maj(ie)] = true;\n\t\tclasses[\"dj_iequirks\"] = has(\"quirks\");\n\t}\n\tif(trident){\n\t\tclasses[\"dj_trident\"] = true;\n\t\tclasses[\"dj_trident\" + maj(trident)] = true;\n\t}\n\tif(ff){\n\t\tclasses[\"dj_ff\" + maj(ff)] = true;\n\t}\n\n\tclasses[\"dj_\" + boxModel] = true;\n\n\t// apply browser, browser version, and box model class names\n\tvar classStr = \"\";\n\tfor(var clz in classes){\n\t\tif(classes[clz]){\n\t\t\tclassStr += clz + \" \";\n\t\t}\n\t}\n\thtml.className = lang.trim(html.className + \" \" + classStr);\n\n\t// If RTL mode, then add dj_rtl flag plus repeat existing classes with -rtl extension.\n\t// We can't run the code below until the <body> tag has loaded (so we can check for dir=rtl).\n\tdomReady(function(){\n\t\tif(!geometry.isBodyLtr()){\n\t\t\tvar rtlClassStr = \"dj_rtl dijitRtl \" + classStr.replace(/ /g, \"-rtl \");\n\t\t\thtml.className = lang.trim(html.className + \" \" + rtlClassStr + \"dj_rtl dijitRtl \" + classStr.replace(/ /g, \"-rtl \"));\n\t\t}\n\t});\n\treturn has;\n});\n","define([\"./_base/lang\", \"./sniff\", \"./_base/window\", \"./dom\", \"./dom-geometry\", \"./dom-style\", \"./dom-construct\"],\n\tfunction(lang, has, baseWindow, dom, geom, style, domConstruct){\n\n\t// feature detection\n\t/* not needed but included here for future reference\n\thas.add(\"rtl-innerVerticalScrollBar-on-left\", function(win, doc){\n\t\tvar\tbody = baseWindow.body(doc),\n\t\t\tscrollable = domConstruct.create('div', {\n\t\t\t\tstyle: {overflow:'scroll', overflowX:'hidden', direction:'rtl', visibility:'hidden', position:'absolute', left:'0', width:'64px', height:'64px'}\n\t\t\t}, body, \"last\"),\n\t\t\tcenter = domConstruct.create('center', {\n\t\t\t\tstyle: {overflow:'hidden', direction:'ltr'}\n\t\t\t}, scrollable, \"last\"),\n\t\t\tinner = domConstruct.create('div', {\n\t\t\t\tstyle: {overflow:'visible', display:'inline' }\n\t\t\t}, center, \"last\");\n\t\tinner.innerHTML=\" \";\n\t\tvar midPoint = Math.max(inner.offsetLeft, geom.position(inner).x);\n\t\tvar ret = midPoint >= 32;\n\t\tcenter.removeChild(inner);\n\t\tscrollable.removeChild(center);\n\t\tbody.removeChild(scrollable);\n\t\treturn ret;\n\t});\n\t*/\n\thas.add(\"rtl-adjust-position-for-verticalScrollBar\", function(win, doc){\n\t\tvar\tbody = baseWindow.body(doc),\n\t\t\tscrollable = domConstruct.create('div', {\n\t\t\t\tstyle: {overflow:'scroll', overflowX:'visible', direction:'rtl', visibility:'hidden', position:'absolute', left:'0', top:'0', width:'64px', height:'64px'}\n\t\t\t}, body, \"last\"),\n\t\t\tdiv = domConstruct.create('div', {\n\t\t\t\tstyle: {overflow:'hidden', direction:'ltr'}\n\t\t\t}, scrollable, \"last\"),\n\t\t\tret = geom.position(div).x != 0;\n\t\tscrollable.removeChild(div);\n\t\tbody.removeChild(scrollable);\n\t\treturn ret;\n\t});\n\n\thas.add(\"position-fixed-support\", function(win, doc){\n\t\t// IE6, IE7+quirks, and some older mobile browsers don't support position:fixed\n\t\tvar\tbody = baseWindow.body(doc),\n\t\t\touter = domConstruct.create('span', {\n\t\t\t\tstyle: {visibility:'hidden', position:'fixed', left:'1px', top:'1px'}\n\t\t\t}, body, \"last\"),\n\t\t\tinner = domConstruct.create('span', {\n\t\t\t\tstyle: {position:'fixed', left:'0', top:'0'}\n\t\t\t}, outer, \"last\"),\n\t\t\tret = geom.position(inner).x != geom.position(outer).x;\n\t\touter.removeChild(inner);\n\t\tbody.removeChild(outer);\n\t\treturn ret;\n\t});\n\n\t// module:\n\t//\t\tdojo/window\n\n\tvar window = {\n\t\t// summary:\n\t\t//\t\tTODOC\n\n\t\tgetBox: function(/*Document?*/ doc){\n\t\t\t// summary:\n\t\t\t//\t\tReturns the dimensions and scroll position of the viewable area of a browser window\n\n\t\t\tdoc = doc || baseWindow.doc;\n\n\t\t\tvar\n\t\t\t\tscrollRoot = (doc.compatMode == 'BackCompat') ? baseWindow.body(doc) : doc.documentElement,\n\t\t\t\t// get scroll position\n\t\t\t\tscroll = geom.docScroll(doc), // scrollRoot.scrollTop/Left should work\n\t\t\t\tw, h;\n\n\t\t\tif(has(\"touch\")){ // if(scrollbars not supported)\n\t\t\t\tvar uiWindow = window.get(doc); // use UI window, not dojo.global window\n\t\t\t\t// on mobile, scrollRoot.clientHeight <= uiWindow.innerHeight <= scrollRoot.offsetHeight, return uiWindow.innerHeight\n\t\t\t\tw = uiWindow.innerWidth || scrollRoot.clientWidth; // || scrollRoot.clientXXX probably never evaluated\n\t\t\t\th = uiWindow.innerHeight || scrollRoot.clientHeight;\n\t\t\t}else{\n\t\t\t\t// on desktops, scrollRoot.clientHeight <= scrollRoot.offsetHeight <= uiWindow.innerHeight, return scrollRoot.clientHeight\n\t\t\t\t// uiWindow.innerWidth/Height includes the scrollbar and cannot be used\n\t\t\t\tw = scrollRoot.clientWidth;\n\t\t\t\th = scrollRoot.clientHeight;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tl: scroll.x,\n\t\t\t\tt: scroll.y,\n\t\t\t\tw: w,\n\t\t\t\th: h\n\t\t\t};\n\t\t},\n\n\t\tget: function(/*Document*/ doc){\n\t\t\t// summary:\n\t\t\t//\t\tGet window object associated with document doc.\n\t\t\t// doc:\n\t\t\t//\t\tThe document to get the associated window for.\n\n\t\t\t// In some IE versions (at least 6.0), document.parentWindow does not return a\n\t\t\t// reference to the real window object (maybe a copy), so we must fix it as well\n\t\t\t// We use IE specific execScript to attach the real window reference to\n\t\t\t// document._parentWindow for later use\n\t\t\tif(has(\"ie\") && window !== document.parentWindow){\n\t\t\t\t/*\n\t\t\t\tIn IE 6, only the variable \"window\" can be used to connect events (others\n\t\t\t\tmay be only copies).\n\t\t\t\t*/\n\t\t\t\tdoc.parentWindow.execScript(\"document._parentWindow = window;\", \"Javascript\");\n\t\t\t\t//to prevent memory leak, unset it after use\n\t\t\t\t//another possibility is to add an onUnload handler which seems overkill to me (liucougar)\n\t\t\t\tvar win = doc._parentWindow;\n\t\t\t\tdoc._parentWindow = null;\n\t\t\t\treturn win;\t//\tWindow\n\t\t\t}\n\n\t\t\treturn doc.parentWindow || doc.defaultView;\t//\tWindow\n\t\t},\n\n\t\tscrollIntoView: function(/*DomNode*/ node, /*Object?*/ pos){\n\t\t\t// summary:\n\t\t\t//\t\tScroll the passed node into view using minimal movement, if it is not already.\n\n\t\t\t// Don't rely on node.scrollIntoView working just because the function is there since\n\t\t\t// it forces the node to the page's bottom or top (and left or right in IE) without consideration for the minimal movement.\n\t\t\t// WebKit's node.scrollIntoViewIfNeeded doesn't work either for inner scrollbars in right-to-left mode\n\t\t\t// and when there's a fixed position scrollable element\n\n\t\t\ttry{ // catch unexpected/unrecreatable errors (#7808) since we can recover using a semi-acceptable native method\n\t\t\t\tnode = dom.byId(node);\n\t\t\t\tvar\tdoc = node.ownerDocument || baseWindow.doc,\t// TODO: why baseWindow.doc? Isn't node.ownerDocument always defined?\n\t\t\t\t\tbody = baseWindow.body(doc),\n\t\t\t\t\thtml = doc.documentElement || body.parentNode,\n\t\t\t\t\tisIE = has(\"ie\") || has(\"trident\"),\n\t\t\t\t\tisWK = has(\"webkit\");\n\t\t\t\t// if an untested browser, then use the native method\n\t\t\t\tif(node == body || node == html){ return; }\n\t\t\t\tif(!(has(\"mozilla\") || isIE || isWK || has(\"opera\") || has(\"trident\") || has(\"edge\"))\n\t\t\t\t\t\t&& (\"scrollIntoView\" in node)){\n\t\t\t\t\tnode.scrollIntoView(false); // short-circuit to native if possible\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar\tbackCompat = doc.compatMode == 'BackCompat',\n\t\t\t\t\trootWidth = Math.min(body.clientWidth || html.clientWidth, html.clientWidth || body.clientWidth),\n\t\t\t\t\trootHeight = Math.min(body.clientHeight || html.clientHeight, html.clientHeight || body.clientHeight),\n\t\t\t\t\tscrollRoot = (isWK || backCompat) ? body : html,\n\t\t\t\t\tnodePos = pos || geom.position(node),\n\t\t\t\t\tel = node.parentNode,\n\t\t\t\t\tisFixed = function(el){\n\t\t\t\t\t\treturn (isIE <= 6 || (isIE == 7 && backCompat))\n\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t: (has(\"position-fixed-support\") && (style.get(el, 'position').toLowerCase() == \"fixed\"));\n\t\t\t\t\t},\n\t\t\t\t\tself = this,\n\t\t\t\t\tscrollElementBy = function(el, x, y){\n\t\t\t\t\t\tif(el.tagName == \"BODY\" || el.tagName == \"HTML\"){\n\t\t\t\t\t\t\tself.get(el.ownerDocument).scrollBy(x, y);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tx && (el.scrollLeft += x);\n\t\t\t\t\t\t\ty && (el.scrollTop += y);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\tif(isFixed(node)){ return; } // nothing to do\n\t\t\t\twhile(el){\n\t\t\t\t\tif(el == body){ el = scrollRoot; }\n\t\t\t\t\tvar\telPos = geom.position(el),\n\t\t\t\t\t\tfixedPos = isFixed(el),\n\t\t\t\t\t\trtl = style.getComputedStyle(el).direction.toLowerCase() == \"rtl\";\n\n\t\t\t\t\tif(el == scrollRoot){\n\t\t\t\t\t\telPos.w = rootWidth; elPos.h = rootHeight;\n\t\t\t\t\t\tif(scrollRoot == html && (isIE || has(\"trident\")) && rtl){\n\t\t\t\t\t\t\telPos.x += scrollRoot.offsetWidth-elPos.w;// IE workaround where scrollbar causes negative x\n\t\t\t\t\t\t}\n\t\t\t\t\t\telPos.x = 0;\n\t\t\t\t\t\telPos.y = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tvar pb = geom.getPadBorderExtents(el);\n\t\t\t\t\t\telPos.w -= pb.w; elPos.h -= pb.h; elPos.x += pb.l; elPos.y += pb.t;\n\t\t\t\t\t\tvar clientSize = el.clientWidth,\n\t\t\t\t\t\t\tscrollBarSize = elPos.w - clientSize;\n\t\t\t\t\t\tif(clientSize > 0 && scrollBarSize > 0){\n\t\t\t\t\t\t\tif(rtl && has(\"rtl-adjust-position-for-verticalScrollBar\")){\n\t\t\t\t\t\t\t\telPos.x += scrollBarSize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telPos.w = clientSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclientSize = el.clientHeight;\n\t\t\t\t\t\tscrollBarSize = elPos.h - clientSize;\n\t\t\t\t\t\tif(clientSize > 0 && scrollBarSize > 0){\n\t\t\t\t\t\t\telPos.h = clientSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(fixedPos){ // bounded by viewport, not parents\n\t\t\t\t\t\tif(elPos.y < 0){\n\t\t\t\t\t\t\telPos.h += elPos.y; elPos.y = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(elPos.x < 0){\n\t\t\t\t\t\t\telPos.w += elPos.x; elPos.x = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(elPos.y + elPos.h > rootHeight){\n\t\t\t\t\t\t\telPos.h = rootHeight - elPos.y;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(elPos.x + elPos.w > rootWidth){\n\t\t\t\t\t\t\telPos.w = rootWidth - elPos.x;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// calculate overflow in all 4 directions\n\t\t\t\t\tvar\tl = nodePos.x - elPos.x, // beyond left: < 0\n//\t\t\t\t\t\tt = nodePos.y - Math.max(elPos.y, 0), // beyond top: < 0\n\t\t\t\t\t\tt = nodePos.y - elPos.y, // beyond top: < 0\n\t\t\t\t\t\tr = l + nodePos.w - elPos.w, // beyond right: > 0\n\t\t\t\t\t\tbot = t + nodePos.h - elPos.h; // beyond bottom: > 0\n\t\t\t\t\tvar s, old;\n\t\t\t\t\tif(r * l > 0 && (!!el.scrollLeft || el == scrollRoot || el.scrollWidth > el.offsetHeight)){\n\t\t\t\t\t\ts = Math[l < 0? \"max\" : \"min\"](l, r);\n\t\t\t\t\t\tif(rtl && ((isIE == 8 && !backCompat) || has(\"trident\") >= 5)){ s = -s; }\n\t\t\t\t\t\told = el.scrollLeft;\n\t\t\t\t\t\tscrollElementBy(el, s, 0);\n\t\t\t\t\t\ts = el.scrollLeft - old;\n\t\t\t\t\t\tnodePos.x -= s;\n\t\t\t\t\t}\n\t\t\t\t\tif(bot * t > 0 && (!!el.scrollTop || el == scrollRoot || el.scrollHeight > el.offsetHeight)){\n\t\t\t\t\t\ts = Math.ceil(Math[t < 0? \"max\" : \"min\"](t, bot));\n\t\t\t\t\t\told = el.scrollTop;\n\t\t\t\t\t\tscrollElementBy(el, 0, s);\n\t\t\t\t\t\ts = el.scrollTop - old;\n\t\t\t\t\t\tnodePos.y -= s;\n\t\t\t\t\t}\n\t\t\t\t\tel = (el != scrollRoot) && !fixedPos && el.parentNode;\n\t\t\t\t}\n\t\t\t}catch(error){\n\t\t\t\tconsole.error('scrollIntoView: ' + error);\n\t\t\t\tnode.scrollIntoView(false);\n\t\t\t}\n\t\t}\n\t};\n\n\thas(\"extend-dojo\") && lang.setObject(\"dojo.window\", window);\n\n\treturn window;\n});\n"]}