require({cache:{ 'dojo/uacss':function(){ define(["./dom-geometry", "./_base/lang", "./ready", "./_base/sniff", "./_base/window"], function(geometry, lang, ready, has, baseWindow){ // module: // dojo/uacss // summary: // Applies pre-set CSS classes to the top-level HTML node, based on: // - browser (ex: dj_ie) // - browser version (ex: dj_ie6) // - box model (ex: dj_contentBox) // - text direction (ex: dijitRtl) // // In addition, browser, browser version, and box model are // combined with an RTL flag when browser text is RTL. ex: dj_ie-rtl. var html = baseWindow.doc.documentElement, ie = has("ie"), opera = has("opera"), maj = Math.floor, ff = has("ff"), boxModel = geometry.boxModel.replace(/-/,''), classes = { "dj_quirks": has("quirks"), // NOTE: Opera not supported by dijit "dj_opera": opera, "dj_khtml": has("khtml"), "dj_webkit": has("webkit"), "dj_safari": has("safari"), "dj_chrome": has("chrome"), "dj_gecko": has("mozilla") }; // no dojo unsupported browsers if(ie){ classes["dj_ie"] = true; classes["dj_ie" + maj(ie)] = true; classes["dj_iequirks"] = has("quirks"); } if(ff){ classes["dj_ff" + maj(ff)] = true; } classes["dj_" + boxModel] = true; // apply browser, browser version, and box model class names var classStr = ""; for(var clz in classes){ if(classes[clz]){ classStr += clz + " "; } } html.className = lang.trim(html.className + " " + classStr); // If RTL mode, then add dj_rtl flag plus repeat existing classes with -rtl extension. // We can't run the code below until the
tag has loaded (so we can check for dir=rtl). // priority is 90 to run ahead of parser priority of 100 ready(90, function(){ if(!geometry.isBodyLtr()){ var rtlClassStr = "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl "); html.className = lang.trim(html.className + " " + rtlClassStr + "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl ")); } }); return has; }); }, 'dijit/hccss':function(){ define("dijit/hccss", [ "require", // require.toUrl "dojo/_base/config", // config.blankGif "dojo/dom-class", // domClass.add domConstruct.create domStyle.getComputedStyle "dojo/dom-construct", // domClass.add domConstruct.create domStyle.getComputedStyle "dojo/dom-style", // domClass.add domConstruct.create domStyle.getComputedStyle "dojo/ready", // ready "dojo/_base/sniff", // has("ie") has("mozilla") "dojo/_base/window" // win.body ], function(require, config, domClass, domConstruct, domStyle, ready, has, win){ // module: // dijit/hccss // summary: // Test if computer is in high contrast mode, and sets dijit_a11y flag on if it is. if(has("ie") || has("mozilla")){ // NOTE: checking in Safari messes things up // priority is 90 to run ahead of parser priority of 100 ready(90, function(){ // summary: // Detects if we are in high-contrast mode or not // create div for testing if high contrast mode is on or images are turned off var div = domConstruct.create("div",{ id: "a11yTestNode", style:{ cssText:'border: 1px solid;' + 'border-color:red green;' + 'position: absolute;' + 'height: 5px;' + 'top: -999px;' + 'background-image: url("' + (config.blankGif || require.toUrl("dojo/resources/blank.gif")) + '");' } }, win.body()); // test it var cs = domStyle.getComputedStyle(div); if(cs){ var bkImg = cs.backgroundImage; var needsA11y = (cs.borderTopColor == cs.borderRightColor) || (bkImg != null && (bkImg == "none" || bkImg == "url(invalid-url:)" )); if(needsA11y){ domClass.add(win.body(), "dijit_a11y"); } if(has("ie")){ div.outerHTML = ""; // prevent mixed-content warning, see http://support.microsoft.com/kb/925014 }else{ win.body().removeChild(div); } } }); } }); }, 'dijit/_Contained':function(){ define("dijit/_Contained", [ "dojo/_base/declare", // declare "./registry" // registry.getEnclosingWidget(), registry.byNode() ], function(declare, registry){ // module: // dijit/_Contained // summary: // Mixin for widgets that are children of a container widget return declare("dijit._Contained", null, { // summary: // Mixin for widgets that are children of a container widget // // example: // | // make a basic custom widget that knows about it's parents // | declare("my.customClass",[dijit._Widget,dijit._Contained],{}); _getSibling: function(/*String*/ which){ // summary: // Returns next or previous sibling // which: // Either "next" or "previous" // tags: // private var node = this.domNode; do{ node = node[which+"Sibling"]; }while(node && node.nodeType != 1); return node && registry.byNode(node); // dijit._Widget }, getPreviousSibling: function(){ // summary: // Returns null if this is the first child of the parent, // otherwise returns the next element sibling to the "left". return this._getSibling("previous"); // dijit._Widget }, getNextSibling: function(){ // summary: // Returns null if this is the last child of the parent, // otherwise returns the next element sibling to the "right". return this._getSibling("next"); // dijit._Widget }, getIndexInParent: function(){ // summary: // Returns the index of this widget within its container parent. // It returns -1 if the parent does not exist, or if the parent // is not a dijit._Container var p = this.getParent(); if(!p || !p.getIndexOfChild){ return -1; // int } return p.getIndexOfChild(this); // int } }); }); }, 'dijit/Viewport':function(){ define("dijit/Viewport", [ "dojo/Evented", "dojo/on", "dojo/ready", "dojo/_base/sniff", "dojo/_base/window", // global "dojo/window" // getBox() ], function(Evented, on, ready, has, win, winUtils){ // module: // dijit/Viewport /*===== return { // summary: // Utility singleton to watch for viewport resizes, avoiding duplicate notifications // which can lead to infinite loops. // description: // Usage: Viewport.on("resize", myCallback). // // myCallback() is called without arguments in case it's _WidgetBase.resize(), // which would interpret the argument as the size to make the widget. }; =====*/ var Viewport = new Evented(); var focusedNode; ready(200, function(){ var oldBox = winUtils.getBox(); Viewport._rlh = on(win.global, "resize", function(){ var newBox = winUtils.getBox(); if(oldBox.h == newBox.h && oldBox.w == newBox.w){ return; } oldBox = newBox; Viewport.emit("resize"); }); // Also catch zoom changes on IE8, since they don't naturally generate resize events if(has("ie") == 8){ var deviceXDPI = screen.deviceXDPI; setInterval(function(){ if(screen.deviceXDPI != deviceXDPI){ deviceXDPI = screen.deviceXDPI; Viewport.emit("resize"); } }, 500); } // On iOS, keep track of the focused node so we can guess when the keyboard is/isn't being displayed. if(has("ios")){ on(document, "focusin", function(evt){ focusedNode = evt.target; }); on(document, "focusout", function(evt){ focusedNode = null; }); } }); Viewport.getEffectiveBox = function(/*Document*/ doc){ // summary: // Get the size of the viewport, or on mobile devices, the part of the viewport not obscured by the // virtual keyboard. var box = winUtils.getBox(doc); // Account for iOS virtual keyboard, if it's being shown. Unfortunately no direct way to check or measure. var tag = focusedNode && focusedNode.tagName && focusedNode.tagName.toLowerCase(); if(has("ios") && focusedNode && !focusedNode.readOnly && (tag == "textarea" || (tag == "input" && /^(color|email|number|password|search|tel|text|url)$/.test(focusedNode.type)))){ // Box represents the size of the viewport. Some of the viewport is likely covered by the keyboard. // Estimate height of visible viewport assuming viewport goes to bottom of screen, but is covered by keyboard. box.h *= (orientation == 0 || orientation == 180 ? 0.66 : 0.40); // Above measurement will be inaccurate if viewport was scrolled up so far that it ends before the bottom // of the screen. In this case, keyboard isn't covering as much of the viewport as we thought. // We know the visible size is at least the distance from the top of the viewport to the focused node. var rect = focusedNode.getBoundingClientRect(); box.h = Math.max(box.h, rect.top + rect.height); } return box; }; return Viewport; }); }, 'dojo/parser':function(){ define( ["./_base/kernel", "./_base/lang", "./_base/array", "./_base/config", "./_base/html", "./_base/window", "./_base/url", "./_base/json", "./aspect", "./date/stamp", "./has", "./query", "./on", "./ready"], function(dojo, dlang, darray, config, dhtml, dwindow, _Url, djson, aspect, dates, has, query, don, ready){ // module: // dojo/parser // summary: // The Dom/Widget parsing package new Date("X"); // workaround for #11279, new Date("") == NaN if (1) { var form = document.createElement("form"); // Test if DOMNode.attributes only lists the attributes the user specified, not attributes w/default values. has.add("dom-attributes-explicit", form.attributes.length == 0); // IE8 will erroneously list a few attributes that weren't specified, // but we know to skip them because they have a specified flag which is false has.add("dom-attributes-specified-flag", form.attributes.length < 40); // Otherwise, it's IE6-7 form.attributes will list hundreds of values, need to do outerHTML instead. } dojo.parser = new function(){ // summary: // The Dom/Widget parsing package var _nameMap = { // Map from widget name (ex: "dijit.form.Button") to structure mapping // lowercase version of attribute names to the version in the widget ex: // { // label: "label", // onclick: "onClick" // } }; function getNameMap(proto){ // summary: // Returns map from lowercase name to attribute name in class, ex: {onclick: "onClick"} var map = {}; for(var name in proto){ if(name.charAt(0)=="_"){ continue; } // skip internal properties map[name.toLowerCase()] = name; } return map; } // Widgets like BorderContainer add properties to _Widget via dojo.extend(). // If BorderContainer is loaded after _Widget's parameter list has been cached, // we need to refresh that parameter list (for _Widget and all widgets that extend _Widget). aspect.after(dlang, "extend", function(){ _nameMap = {}; }, true); // Map from widget name (ex: "dijit.form.Button") to a map of { "list-of-mixins": ctor } // if "list-of-mixins" is "__type" this is the raw type without mixins var _ctorMap = {}; function getCtor(type){ var map = _ctorMap[type] || (_ctorMap[type] = {}); return map["__type"] || (map["__type"] = (dlang.getObject(type) || require(type))); } this._functionFromScript = function(script, attrData){ // summary: // Convert a // into a function // script: DOMNode // The