http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/webapp/js/dojo/dojo.js.uncompressed.js
----------------------------------------------------------------------
diff --git 
a/components/camel-web/src/main/webapp/js/dojo/dojo.js.uncompressed.js 
b/components/camel-web/src/main/webapp/js/dojo/dojo.js.uncompressed.js
deleted file mode 100644
index f734b15..0000000
--- a/components/camel-web/src/main/webapp/js/dojo/dojo.js.uncompressed.js
+++ /dev/null
@@ -1,9293 +0,0 @@
-/*
-       Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
-       Available via Academic Free License >= 2.1 OR the modified BSD license.
-       see: http://dojotoolkit.org/license for details
-*/
-
-/*
-       This is a compiled version of Dojo, built for deployment and not for
-       development. To get an editable version, please visit:
-
-               http://dojotoolkit.org
-
-       for documentation and information on getting the source.
-*/
-
-;(function(){
-
-       /*
-       dojo, dijit, and dojox must always be the first three, and in that 
order.
-       djConfig.scopeMap = [
-               ["dojo", "fojo"],
-               ["dijit", "fijit"],
-               ["dojox", "fojox"]
-       
-       ]
-       */
-
-       /**Build will replace this comment with a scoped djConfig **/
-
-       //The null below can be relaced by a build-time value used instead of 
djConfig.scopeMap.
-       var sMap = null;
-
-       //See if new scopes need to be defined.
-       if((sMap || (typeof djConfig != "undefined" && djConfig.scopeMap)) && 
(typeof window != "undefined")){
-               var scopeDef = "", scopePrefix = "", scopeSuffix = "", scopeMap 
= {}, scopeMapRev = {};
-               sMap = sMap || djConfig.scopeMap;
-               for(var i = 0; i < sMap.length; i++){
-                       //Make local variables, then global variables that use 
the locals.
-                       var newScope = sMap[i];
-                       scopeDef += "var " + newScope[0] + " = {}; " + 
newScope[1] + " = " + newScope[0] + ";" + newScope[1] + "._scopeName = '" + 
newScope[1] + "';";
-                       scopePrefix += (i == 0 ? "" : ",") + newScope[0];
-                       scopeSuffix += (i == 0 ? "" : ",") + newScope[1];
-                       scopeMap[newScope[0]] = newScope[1];
-                       scopeMapRev[newScope[1]] = newScope[0];
-               }
-
-               eval(scopeDef + "dojo._scopeArgs = [" + scopeSuffix + "];");
-
-               dojo._scopePrefixArgs = scopePrefix;
-               dojo._scopePrefix = "(function(" + scopePrefix + "){";
-               dojo._scopeSuffix = "})(" + scopeSuffix + ")";
-               dojo._scopeMap = scopeMap;
-               dojo._scopeMapRev = scopeMapRev;
-       }
-
-/*=====
-// note:
-//             'djConfig' does not exist under 'dojo.*' so that it can be set 
before the
-//             'dojo' variable exists.
-// note:
-//             Setting any of these variables *after* the library has loaded 
does
-//             nothing at all.
-
-djConfig = {
-       // summary:
-       //              Application code can set the global 'djConfig' prior to 
loading
-       //              the library to override certain global settings for how 
dojo works.
-       //
-       // isDebug: Boolean
-       //              Defaults to `false`. If set to `true`, ensures that 
Dojo provides
-       //              extended debugging feedback via Firebug. If Firebug is 
not available
-       //              on your platform, setting `isDebug` to `true` will 
force Dojo to
-       //              pull in (and display) the version of Firebug Lite which 
is
-       //              integrated into the Dojo distribution, thereby always 
providing a
-       //              debugging/logging console when `isDebug` is enabled. 
Note that
-       //              Firebug's `console.*` methods are ALWAYS defined by 
Dojo. If
-       //              `isDebug` is false and you are on a platform without 
Firebug, these
-       //              methods will be defined as no-ops.
-       isDebug: false,
-       // debugAtAllCosts: Boolean
-       //              Defaults to `false`. If set to `true`, this triggers an 
alternate
-       //              mode of the package system in which dependencies are 
detected and
-       //              only then are resources evaluated in dependency order 
via
-       //              `<script>` tag inclusion. This may double-request 
resources and
-       //              cause problems with scripts which expect 
`dojo.require()` to
-       //              preform synchronously. `debugAtAllCosts` can be an 
invaluable
-       //              debugging aid, but when using it, ensure that all code 
which
-       //              depends on Dojo modules is wrapped in 
`dojo.addOnLoad()` handlers.
-       //              Due to the somewhat unpredictable side-effects of using
-       //              `debugAtAllCosts`, it is strongly recommended that you 
enable this
-       //              flag as a last resort. `debugAtAllCosts` has no effect 
when loading
-       //              resources across domains. For usage information, see the
-       //              [Dojo 
Book](http://dojotoolkit.org/book/book-dojo/part-4-meta-dojo-making-your-dojo-code-run-faster-and-better/debugging-facilities/deb)
-       debugAtAllCosts: false,
-       // locale: String
-       //              The locale to assume for loading localized resources in 
this page,
-       //              specified according to [RFC 
3066](http://www.ietf.org/rfc/rfc3066.txt).
-       //              Must be specified entirely in lowercase, e.g. `en-us` 
and `zh-cn`.
-       //              See the documentation for `dojo.i18n` and 
`dojo.requireLocalization`
-       //              for details on loading localized resources. If no 
locale is specified,
-       //              Dojo assumes the locale of the user agent, according to 
`navigator.userLanguage`
-       //              or `navigator.language` properties.
-       locale: undefined,
-       // extraLocale: Array
-       //              No default value. Specifies additional locales whose
-       //              resources should also be loaded alongside the default 
locale when
-       //              calls to `dojo.requireLocalization()` are processed.
-       extraLocale: undefined,
-       // baseUrl: String
-       //              The directory in which `dojo.js` is located. Under 
normal
-       //              conditions, Dojo auto-detects the correct location from 
which it
-       //              was loaded. You may need to manually configure 
`baseUrl` in cases
-       //              where you have renamed `dojo.js` or in which `<base>` 
tags confuse
-       //              some browsers (e.g. IE 6). The variable `dojo.baseUrl` 
is assigned
-       //              either the value of `djConfig.baseUrl` if one is 
provided or the
-       //              auto-detected root if not. Other modules are located 
relative to
-       //              this path. The path should end in a slash.
-       baseUrl: undefined,
-       // modulePaths: Object
-       //              A map of module names to paths relative to 
`dojo.baseUrl`. The
-       //              key/value pairs correspond directly to the arguments 
which
-       //              `dojo.registerModulePath` accepts. Specifiying
-       //              `djConfig.modulePaths = { "foo": "../../bar" }` is the 
equivalent
-       //              of calling `dojo.registerModulePath("foo", 
"../../bar");`. Multiple
-       //              modules may be configured via `djConfig.modulePaths`.
-       modulePaths: {},
-       // afterOnLoad: Boolean 
-       //              Indicates Dojo was added to the page after the page 
load. In this case
-       //              Dojo will not wait for the page DOMContentLoad/load 
events and fire
-       //              its dojo.addOnLoad callbacks after making sure all 
outstanding
-       //              dojo.required modules have loaded.
-       afterOnLoad: false,
-       // addOnLoad: Function or Array
-       //              Adds a callback via dojo.addOnLoad. Useful when Dojo is 
added after
-       //              the page loads and djConfig.afterOnLoad is true. 
Supports the same
-       //              arguments as dojo.addOnLoad. When using a function 
reference, use
-       //              `djConfig.addOnLoad = function(){};`. For object with 
function name use
-       //              `djConfig.addOnLoad = [myObject, "functionName"];` and 
for object with
-       //              function reference use
-       //              `djConfig.addOnLoad = [myObject, function(){}];`
-       addOnLoad: null,
-       // require: Array
-       //              An array of module names to be loaded immediately after 
dojo.js has been included
-       //              in a page. 
-       require: [],
-       // defaultDuration: Array
-       //              Default duration, in milliseconds, for wipe and fade 
animations within dijits.
-       //              Assigned to dijit.defaultDuration.
-       defaultDuration: 200,
-       // dojoBlankHtmlUrl: String
-       //              Used by some modules to configure an empty iframe. Used 
by dojo.io.iframe and
-       //              dojo.back, and dijit popup support in IE where an 
iframe is needed to make sure native
-       //              controls do not bleed through the popups. Normally this 
configuration variable 
-       //              does not need to be set, except when using 
cross-domain/CDN Dojo builds.
-       //              Save dojo/resources/blank.html to your domain and set 
`djConfig.dojoBlankHtmlUrl` 
-       //              to the path on your domain your copy of blank.html.
-       dojoBlankHtmlUrl: undefined
-}
-=====*/
-
-(function(){
-       // firebug stubs
-
-       if(typeof this["loadFirebugConsole"] == "function"){
-               // for Firebug 1.2
-               this["loadFirebugConsole"]();
-       }else{
-               this.console = this.console || {};
-
-               //      Be careful to leave 'log' always at the end
-               var cn = [
-                       "assert", "count", "debug", "dir", "dirxml", "error", 
"group",
-                       "groupEnd", "info", "profile", "profileEnd", "time", 
"timeEnd",
-                       "trace", "warn", "log" 
-               ];
-               var i=0, tn;
-               while((tn=cn[i++])){
-                       if(!console[tn]){
-                               (function(){
-                                       var tcn = tn+"";
-                                       console[tcn] = ('log' in console) ? 
function(){ 
-                                               var a = Array.apply({}, 
arguments);
-                                               a.unshift(tcn+":");
-                                               console["log"](a.join(" "));
-                                       } : function(){}
-                               })();
-                       }
-               }
-       }
-
-       //TODOC:  HOW TO DOC THIS?
-       // dojo is the root variable of (almost all) our public symbols -- make 
sure it is defined.
-       if(typeof dojo == "undefined"){
-               this.dojo = {
-                       _scopeName: "dojo",
-                       _scopePrefix: "",
-                       _scopePrefixArgs: "",
-                       _scopeSuffix: "",
-                       _scopeMap: {},
-                       _scopeMapRev: {}
-               };
-       }
-
-       var d = dojo;
-
-       //Need placeholders for dijit and dojox for scoping code.
-       if(typeof dijit == "undefined"){
-               this.dijit = {_scopeName: "dijit"};
-       }
-       if(typeof dojox == "undefined"){
-               this.dojox = {_scopeName: "dojox"};
-       }
-       
-       if(!d._scopeArgs){
-               d._scopeArgs = [dojo, dijit, dojox];
-       }
-
-/*=====
-dojo.global = {
-       //      summary:
-       //              Alias for the global scope
-       //              (e.g. the window object in a browser).
-       //      description:
-       //              Refer to 'dojo.global' rather than referring to window 
to ensure your
-       //              code runs correctly in contexts other than web browsers 
(e.g. Rhino on a server).
-}
-=====*/
-       d.global = this;
-
-       d.config =/*===== djConfig = =====*/{
-               isDebug: false,
-               debugAtAllCosts: false
-       };
-
-       if(typeof djConfig != "undefined"){
-               for(var opt in djConfig){
-                       d.config[opt] = djConfig[opt];
-               }
-       }
-
-/*=====
-       // Override locale setting, if specified
-       dojo.locale = {
-               // summary: the locale as defined by Dojo (read-only)
-       };
-=====*/
-       dojo.locale = d.config.locale;
-
-       var rev = "$Rev: 16827 $".match(/\d+/); 
-
-       dojo.version = {
-               // summary: 
-               //              version number of dojo
-               //      major: Integer
-               //              Major version. If total version is 
"1.2.0beta1", will be 1
-               //      minor: Integer
-               //              Minor version. If total version is 
"1.2.0beta1", will be 2
-               //      patch: Integer
-               //              Patch version. If total version is 
"1.2.0beta1", will be 0
-               //      flag: String
-               //              Descriptor flag. If total version is 
"1.2.0beta1", will be "beta1"
-               //      revision: Number
-               //              The SVN rev from which dojo was pulled
-               major: 1, minor: 3, patch: 0, flag: "b2",
-               revision: rev ? +rev[0] : NaN,
-               toString: function(){
-                       with(d.version){
-                               return major + "." + minor + "." + patch + flag 
+ " (" + revision + ")";        // String
-                       }
-               }
-       }
-
-               // Register with the OpenAjax hub
-       if(typeof OpenAjax != "undefined"){
-               OpenAjax.hub.registerLibrary(dojo._scopeName, 
"http://dojotoolkit.org";, d.version.toString());
-       }
-       
-       var tobj = {};
-       dojo._mixin = function(/*Object*/ obj, /*Object*/ props){
-               // summary:
-               //              Adds all properties and methods of props to 
obj. This addition
-               //              is "prototype extension safe", so that 
instances of objects
-               //              will not pass along prototype defaults.
-               for(var x in props){
-                       // the "tobj" condition avoid copying properties in 
"props"
-                       // inherited from Object.prototype.  For example, if 
obj has a custom
-                       // toString() method, don't overwrite it with the 
toString() method
-                       // that props inherited from Object.prototype
-                       if(tobj[x] === undefined || tobj[x] != props[x]){
-                               obj[x] = props[x];
-                       }
-               }
-                               // IE doesn't recognize custom toStrings in 
for..in
-               if(d.isIE && props){
-                       var p = props.toString;
-                       if(typeof p == "function" && p != obj.toString && p != 
tobj.toString &&
-                               p != "\nfunction toString() {\n    [native 
code]\n}\n"){
-                                       obj.toString = props.toString;
-                       }
-               }
-                               return obj; // Object
-       }
-
-       dojo.mixin = function(/*Object*/obj, /*Object...*/props){
-               // summary:     
-               //              Adds all properties and methods of props to obj 
and returns the
-               //              (now modified) obj.
-               //      description:
-               //              `dojo.mixin` can mix multiple source objects 
into a
-               //              destionation object which is then returned. 
Unlike regular
-               //              `for...in` iteration, `dojo.mixin` is also 
smart about avoiding
-               //              extensions which other toolkits may unwisely 
add to the root
-               //              object prototype
-               //      obj:
-               //              The object to mix properties into. Also the 
return value.
-               //      props:
-               //              One or more objects whose values are 
successively copied into
-               //              obj. If more than one of these objects contain 
the same value,
-               //              the one specified last in the function call 
will "win".
-               //      example:
-               //              make a shallow copy of an object
-               //      |       var copy = dojo.mixin({}, source);
-               //      example:
-               //              many class constructors often take an object 
which specifies
-               //              values to be configured on the object. In this 
case, it is
-               //              often simplest to call `dojo.mixin` on the 
`this` object:
-               //      |       dojo.declare("acme.Base", null, {
-               //      |               constructor: function(properties){
-               //      |                       // property configuration:
-               //      |                       dojo.mixin(this, properties);
-               //      |       
-               //      |                       
-               //      |                       //  ...
-               //      |               },
-               //      |               quip: "I wasn't born yesterday, you 
know - I've seen movies.",
-               //      |               // ...
-               //      |       });
-               //      |
-               //      |       // create an instance of the class and 
configure it
-               //      |       var b = new acme.Base({quip: "That's what it 
does!" });
-               //      example:
-               //              copy in properties from multiple objects
-               //      |       var flattened = dojo.mixin(
-               //      |               {
-               //      |                       name: "Frylock",
-               //      |                       braces: true
-               //      |               },
-               //      |               {
-               //      |                       name: "Carl Brutanananadilewski"
-               //      |               }
-               //      |       );
-               //      |       
-               //      |       // will print "Carl Brutanananadilewski"
-               //      |       
-               //      |       // will print "true"
-               //      |       
-               if(!obj){ obj = {}; }
-               for(var i=1, l=arguments.length; i<l; i++){
-                       d._mixin(obj, arguments[i]);
-               }
-               return obj; // Object
-       }
-
-       dojo._getProp = function(/*Array*/parts, /*Boolean*/create, 
/*Object*/context){
-               var obj=context || d.global;
-               for(var i=0, p; obj && (p=parts[i]); i++){
-                       if(i == 0 && this._scopeMap[p]){
-                               p = this._scopeMap[p];
-                       }
-                       obj = (p in obj ? obj[p] : (create ? obj[p]={} : 
undefined));
-               }
-               return obj; // mixed
-       }
-
-       dojo.setObject = function(/*String*/name, /*Object*/value, 
/*Object?*/context){
-               // summary: 
-               //              Set a property from a dot-separated string, 
such as "A.B.C"
-               //      description: 
-               //              Useful for longer api chains where you have to 
test each object in
-               //              the chain, or when you have an object reference 
in string format.
-               //              Objects are created as needed along `path`. 
Returns the passed
-               //              value if setting is successful or `undefined` 
if not.
-               //      name:   
-               //              Path to a property, in the form "A.B.C".
-               //      context:
-               //              Optional. Object to use as root of path. 
Defaults to
-               //              `dojo.global`.
-               //      example:
-               //              set the value of `foo.bar.baz`, regardless of 
whether
-               //              intermediate objects already exist:
-               //      |       dojo.setObject("foo.bar.baz", value);
-               //      example:
-               //              without `dojo.setObject`, we often see code 
like this:
-               //      |       // ensure that intermediate objects are 
available
-               //      |       if(!obj["parent"]){ obj.parent = {}; }
-               //      |       if(!obj.parent["child"]){ obj.parent.child= {}; 
}
-               //      |       // now we can safely set the property
-               //      |       obj.parent.child.prop = "some value";
-               //              wheras with `dojo.setObject`, we can shorten 
that to:
-               //      |       dojo.setObject("parent.child.prop", "some 
value", obj);
-               var parts=name.split("."), p=parts.pop(), obj=d._getProp(parts, 
true, context);
-               return obj && p ? (obj[p]=value) : undefined; // Object
-       }
-
-       dojo.getObject = function(/*String*/name, /*Boolean?*/create, 
/*Object?*/context){
-               // summary: 
-               //              Get a property from a dot-separated string, 
such as "A.B.C"
-               //      description: 
-               //              Useful for longer api chains where you have to 
test each object in
-               //              the chain, or when you have an object reference 
in string format.
-               //      name:   
-               //              Path to an property, in the form "A.B.C".
-               //      create: 
-               //              Optional. Defaults to `false`. If `true`, 
Objects will be
-               //              created at any point along the 'path' that is 
undefined.
-               //      context:
-               //              Optional. Object to use as root of path. 
Defaults to
-               //              'dojo.global'. Null may be passed.
-               return d._getProp(name.split("."), create, context); // Object
-       }
-
-       dojo.exists = function(/*String*/name, /*Object?*/obj){
-               //      summary: 
-               //              determine if an object supports a given method
-               //      description: 
-               //              useful for longer api chains where you have to 
test each object in
-               //              the chain
-               //      name:   
-               //              Path to an object, in the form "A.B.C".
-               //      obj:
-               //              Object to use as root of path. Defaults to
-               //              'dojo.global'. Null may be passed.
-               //      example:
-               //      |       // define an object
-               //      |       var foo = {
-               //      |               bar: { }
-               //      |       };
-               //      |
-               //      |       // search the global scope
-               //      |       dojo.exists("foo.bar"); // true
-               //      |       dojo.exists("foo.bar.baz"); // false
-               //      |
-               //      |       // search from a particular scope
-               //      |       dojo.exists("bar", foo); // true
-               //      |       dojo.exists("bar.baz", foo); // false
-               return !!d.getObject(name, false, obj); // Boolean
-       }
-
-
-       dojo["eval"] = function(/*String*/ scriptFragment){
-               //      summary: 
-               //              Perform an evaluation in the global scope. Use 
this rather than
-               //              calling 'eval()' directly.
-               //      description: 
-               //              Placed in a separate function to minimize size 
of trapped
-               //              exceptions. Calling eval() directly from some 
other scope may
-               //              complicate tracebacks on some platforms.
-               //      returns:
-               //              The result of the evaluation. Often `undefined`
-
-
-               // note:
-               //       - JSC eval() takes an optional second argument which 
can be 'unsafe'.
-               //       - Mozilla/SpiderMonkey eval() takes an optional second 
argument which is the
-               //       scope object for new symbols.
-
-               // FIXME: investigate Joseph Smarr's technique for IE:
-               //              
http://josephsmarr.com/2007/01/31/fixing-eval-to-use-global-scope-in-ie/
-               //      see also:
-               //              http://trac.dojotoolkit.org/ticket/744
-               return d.global.eval ? d.global.eval(scriptFragment) : 
eval(scriptFragment);    // Object
-       }
-
-       /*=====
-               dojo.deprecated = function(behaviour, extra, removal){
-                       //      summary: 
-                       //              Log a debug message to indicate that a 
behavior has been
-                       //              deprecated.
-                       //      behaviour: String
-                       //              The API or behavior being deprecated. 
Usually in the form
-                       //              of "myApp.someFunction()".
-                       //      extra: String?
-                       //              Text to append to the message. Often 
provides advice on a
-                       //              new function or facility to achieve the 
same goal during
-                       //              the deprecation period.
-                       //      removal: String?
-                       //              Text to indicate when in the future the 
behavior will be
-                       //              removed. Usually a version number.
-                       //      example:
-                       //      |       dojo.deprecated("myApp.getTemp()", "use 
myApp.getLocaleTemp() instead", "1.0");
-               }
-
-               dojo.experimental = function(moduleName, extra){
-                       //      summary: Marks code as experimental.
-                       //      description: 
-                       //              This can be used to mark a function, 
file, or module as
-                       //              experimental.  Experimental code is not 
ready to be used, and the
-                       //              APIs are subject to change without 
notice.  Experimental code may be
-                       //              completed deleted without going through 
the normal deprecation
-                       //              process.
-                       //      moduleName: String
-                       //              The name of a module, or the name of a 
module file or a specific
-                       //              function
-                       //      extra: String?
-                       //              some additional message for the user
-                       //      example:
-                       //      |       dojo.experimental("dojo.data.Result");
-                       //      example:
-                       //      |       
dojo.experimental("dojo.weather.toKelvin()", "PENDING approval from NOAA");
-               }
-       =====*/
-
-       //Real functions declared in dojo._firebug.firebug.
-       d.deprecated = d.experimental = function(){};
-
-})();
-// vim:ai:ts=4:noet
-
-/*
- * loader.js - A bootstrap module.  Runs before the hostenv_*.js file. Contains
- * all of the package loading methods.
- */
-
-(function(){
-       var d = dojo;
-
-       d.mixin(d, {
-               _loadedModules: {},
-               _inFlightCount: 0,
-               _hasResource: {},
-
-               _modulePrefixes: {
-                       dojo:   {       name: "dojo", value: "." },
-                       // dojox:       {       name: "dojox", value: 
"../dojox" },
-                       // dijit:       {       name: "dijit", value: 
"../dijit" },
-                       doh:    {       name: "doh", value: "../util/doh" },
-                       tests:  {       name: "tests", value: "tests" }
-               },
-
-               _moduleHasPrefix: function(/*String*/module){
-                       // summary: checks to see if module has been established
-                       var mp = this._modulePrefixes;
-                       return !!(mp[module] && mp[module].value); // Boolean
-               },
-
-               _getModulePrefix: function(/*String*/module){
-                       // summary: gets the prefix associated with module
-                       var mp = this._modulePrefixes;
-                       if(this._moduleHasPrefix(module)){
-                               return mp[module].value; // String
-                       }
-                       return module; // String
-               },
-
-               _loadedUrls: [],
-
-               //WARNING: 
-               //              This variable is referenced by packages outside 
of bootstrap:
-               //              FloatingPane.js and undo/browser.js
-               _postLoad: false,
-               
-               //Egad! Lots of test files push on this directly instead of 
using dojo.addOnLoad.
-               _loaders: [],
-               _unloaders: [],
-               _loadNotifying: false
-       });
-
-
-               dojo._loadPath = function(/*String*/relpath, /*String?*/module, 
/*Function?*/cb){
-               //      summary:
-               //              Load a Javascript module given a relative path
-               //
-               //      description:
-               //              Loads and interprets the script located at 
relpath, which is
-               //              relative to the script root directory.  If the 
script is found but
-               //              its interpretation causes a runtime exception, 
that exception is
-               //              not caught by us, so the caller will see it.  
We return a true
-               //              value if and only if the script is found.
-               //
-               // relpath: 
-               //              A relative path to a script (no leading '/', 
and typically ending
-               //              in '.js').
-               // module: 
-               //              A module whose existance to check for after 
loading a path.  Can be
-               //              used to determine success or failure of the 
load.
-               // cb: 
-               //              a callback function to pass the result of 
evaluating the script
-
-               var uri = ((relpath.charAt(0) == '/' || relpath.match(/^\w+:/)) 
? "" : this.baseUrl) + relpath;
-               try{
-                       return !module ? this._loadUri(uri, cb) : 
this._loadUriAndCheck(uri, module, cb); // Boolean
-               }catch(e){
-                       console.error(e);
-                       return false; // Boolean
-               }
-       }
-
-       dojo._loadUri = function(/*String*/uri, /*Function?*/cb){
-               //      summary:
-               //              Loads JavaScript from a URI
-               //      description:
-               //              Reads the contents of the URI, and evaluates 
the contents.  This is
-               //              used to load modules as well as resource 
bundles. Returns true if
-               //              it succeeded. Returns false if the URI reading 
failed.  Throws if
-               //              the evaluation throws.
-               //      uri: a uri which points at the script to be loaded
-               //      cb: 
-               //              a callback function to process the result of 
evaluating the script
-               //              as an expression, typically used by the 
resource bundle loader to
-               //              load JSON-style resources
-
-               if(this._loadedUrls[uri]){
-                       return true; // Boolean
-               }
-               var contents = this._getText(uri, true);
-               if(!contents){ return false; } // Boolean
-               this._loadedUrls[uri] = true;
-               this._loadedUrls.push(uri);
-               if(cb){
-                       contents = '('+contents+')';
-               }else{
-                       //Only do the scoping if no callback. If a callback is 
specified,
-                       //it is most likely the i18n bundle stuff.
-                       contents = this._scopePrefix + contents + 
this._scopeSuffix;
-               }
-               if(d.isMoz){ contents += "\r\n//@ sourceURL=" + uri; } // 
debugging assist for Firebug
-               var value = d["eval"](contents);
-               if(cb){ cb(value); }
-               return true; // Boolean
-       }
-       
-       // FIXME: probably need to add logging to this method
-       dojo._loadUriAndCheck = function(/*String*/uri, /*String*/moduleName, 
/*Function?*/cb){
-               // summary: calls loadUri then findModule and returns true if 
both succeed
-               var ok = false;
-               try{
-                       ok = this._loadUri(uri, cb);
-               }catch(e){
-                       console.error("failed loading " + uri + " with error: " 
+ e);
-               }
-               return !!(ok && this._loadedModules[moduleName]); // Boolean
-       }
-
-       dojo.loaded = function(){
-               // summary:
-               //              signal fired when initial environment and 
package loading is
-               //              complete. You should use dojo.addOnLoad() 
instead of doing a 
-               //              direct dojo.connect() to this method in order 
to handle
-               //              initialization tasks that require the 
environment to be
-               //              initialized. In a browser host, declarative 
widgets will 
-               //              be constructed when this function       
finishes runing.
-               this._loadNotifying = true;
-               this._postLoad = true;
-               var mll = d._loaders;
-
-               //Clear listeners so new ones can be added
-               //For other xdomain package loads after the initial load.
-               this._loaders = [];
-
-               for(var x = 0; x < mll.length; x++){
-                       mll[x]();
-               }
-
-               this._loadNotifying = false;
-               
-               //Make sure nothing else got added to the onload queue
-               //after this first run. If something did, and we are not 
waiting for any
-               //more inflight resources, run again.
-               if(d._postLoad && d._inFlightCount == 0 && mll.length){
-                       d._callLoaded();
-               }
-       }
-
-       dojo.unloaded = function(){
-               // summary:
-               //              signal fired by impending environment 
destruction. You should use
-               //              dojo.addOnUnload() instead of doing a direct 
dojo.connect() to this 
-               //              method to perform page/application cleanup 
methods. See 
-               //              dojo.addOnUnload for more info.
-               var mll = d._unloaders;
-               while(mll.length){
-                       (mll.pop())();
-               }
-       }
-
-       d._onto = function(arr, obj, fn){
-               if(!fn){
-                       arr.push(obj);
-               }else if(fn){
-                       var func = (typeof fn == "string") ? obj[fn] : fn;
-                       arr.push(function(){ func.call(obj); });
-               }
-       }
-
-       dojo.addOnLoad = function(/*Object?*/obj, 
/*String|Function*/functionName){
-               // summary:
-               //              Registers a function to be triggered after the 
DOM has finished
-               //              loading and widgets declared in markup have 
been instantiated.
-               //              Images and CSS files may or may not have 
finished downloading when
-               //              the specified function is called.  (Note that 
widgets' CSS and HTML
-               //              code is guaranteed to be downloaded before said 
widgets are
-               //              instantiated.)
-               // example:
-               //      |       dojo.addOnLoad(functionPointer);
-               //      |       dojo.addOnLoad(object, "functionName");
-               //      |       dojo.addOnLoad(object, function(){ /* ... */});
-
-               d._onto(d._loaders, obj, functionName);
-
-               //Added for xdomain loading. dojo.addOnLoad is used to
-               //indicate callbacks after doing some dojo.require() statements.
-               //In the xdomain case, if all the requires are loaded (after 
initial
-               //page load), then immediately call any listeners.
-               if(d._postLoad && d._inFlightCount == 0 && !d._loadNotifying){
-                       d._callLoaded();
-               }
-       }
-
-       //Support calling dojo.addOnLoad via djConfig.addOnLoad. Support all the
-       //call permutations of dojo.addOnLoad. Mainly useful when dojo is added
-       //to the page after the page has loaded.
-       var dca = d.config.addOnLoad;
-       if(dca){
-               d.addOnLoad[(dca instanceof Array ? "apply" : "call")](d, dca);
-       }
-
-       dojo._modulesLoaded = function(){
-               if(d._postLoad){ return; }
-               if(d._inFlightCount > 0){ 
-                       console.warn("files still in flight!");
-                       return;
-               }
-               d._callLoaded();
-       }
-
-       dojo._callLoaded = function(){
-
-               // The "object" check is for IE, and the other opera check 
fixes an
-               // issue in Opera where it could not find the body element in 
some
-               // widget test cases.  For 0.9, maybe route all browsers 
through the
-               // setTimeout (need protection still for non-browser 
environments
-               // though). This might also help the issue with FF 2.0 and 
freezing
-               // issues where we try to do sync xhr while background css 
images are
-               // being loaded (trac #2572)? Consider for 0.9.
-               if(typeof setTimeout == "object" || (dojo.config.useXDomain && 
d.isOpera)){
-                       if(dojo.isAIR){
-                               setTimeout(function(){dojo.loaded();}, 0);
-                       }else{
-                               setTimeout(dojo._scopeName + ".loaded();", 0);
-                       }
-               }else{
-                       d.loaded();
-               }
-       }
-
-       dojo._getModuleSymbols = function(/*String*/modulename){
-               // summary:
-               //              Converts a module name in dotted JS notation to 
an array
-               //              representing the path in the source tree
-               var syms = modulename.split(".");
-               for(var i = syms.length; i>0; i--){
-                       var parentModule = syms.slice(0, i).join(".");
-                       if((i==1) && !this._moduleHasPrefix(parentModule)){     
        
-                               // Support default module directory (sibling of 
dojo) for top-level modules 
-                               syms[0] = "../" + syms[0];
-                       }else{
-                               var parentModulePath = 
this._getModulePrefix(parentModule);
-                               if(parentModulePath != parentModule){
-                                       syms.splice(0, i, parentModulePath);
-                                       break;
-                               }
-                       }
-               }
-               return syms; // Array
-       }
-
-       dojo._global_omit_module_check = false;
-
-       dojo.loadInit = function(/*Function*/init){
-               //      summary:
-               //              Executes a function that needs to be executed 
for the loader's dojo.requireIf
-               //              resolutions to work. This is needed mostly for 
the xdomain loader case where
-               //              a function needs to be executed to set up the 
possible values for a dojo.requireIf
-               //              call.
-               //      init:
-               //              a function reference. Executed immediately.
-               //      description: This function is mainly a marker for the 
xdomain loader to know parts of
-               //              code that needs be executed outside the 
function wrappper that is placed around modules.
-               //              The init function could be executed more than 
once, and it should make no assumptions
-               //              on what is loaded, or what modules are 
available. Only the functionality in Dojo Base
-               //              is allowed to be used. Avoid using this method. 
For a valid use case,
-               //              see the source for dojox.gfx.
-               init();
-       }
-
-       dojo._loadModule = dojo.require = function(/*String*/moduleName, 
/*Boolean?*/omitModuleCheck){
-               //      summary:
-               //              loads a Javascript module from the appropriate 
URI
-               //      moduleName:
-               //              module name to load, using periods for 
separators,
-               //               e.g. "dojo.date.locale".  Module paths are 
de-referenced by dojo's
-               //              internal mapping of locations to names and are 
disambiguated by
-               //              longest prefix. See `dojo.registerModulePath()` 
for details on
-               //              registering new modules.
-               //      omitModuleCheck:
-               //              if `true`, omitModuleCheck skips the step of 
ensuring that the
-               //              loaded file actually defines the symbol it is 
referenced by.
-               //              For example if it called as 
`dojo.require("a.b.c")` and the
-               //              file located at `a/b/c.js` does not define an 
object `a.b.c`,
-               //              and exception will be throws whereas no 
exception is raised
-               //              when called as `dojo.require("a.b.c", true)`
-               //      description:
-               //              `dojo.require("A.B")` first checks to see if 
symbol A.B is
-               //              defined. If it is, it is simply returned 
(nothing to do).
-               //      
-               //              If it is not defined, it will look for `A/B.js` 
in the script root
-               //              directory.
-               //      
-               //              `dojo.require` throws an excpetion if it cannot 
find a file
-               //              to load, or if the symbol `A.B` is not defined 
after loading.
-               //      
-               //              It returns the object `A.B`.
-               //      
-               //              `dojo.require()` does nothing about importing 
symbols into
-               //              the current namespace.  It is presumed that the 
caller will
-               //              take care of that. For example, to import all 
symbols into a
-               //              local block, you might write:
-               //      
-               //              |       with (dojo.require("A.B")) {
-               //              |               ...
-               //              |       }
-               //      
-               //              And to import just the leaf symbol to a local 
variable:
-               //      
-               //              |       var B = dojo.require("A.B");
-               //              |       ...
-               //      returns: the required namespace object
-               omitModuleCheck = this._global_omit_module_check || 
omitModuleCheck;
-
-               //Check if it is already loaded.
-               var module = this._loadedModules[moduleName];
-               if(module){
-                       return module;
-               }
-
-               // convert periods to slashes
-               var relpath = this._getModuleSymbols(moduleName).join("/") + 
'.js';
-
-               var modArg = (!omitModuleCheck) ? moduleName : null;
-               var ok = this._loadPath(relpath, modArg);
-
-               if(!ok && !omitModuleCheck){
-                       throw new Error("Could not load '" + moduleName + "'; 
last tried '" + relpath + "'");
-               }
-
-               // check that the symbol was defined
-               // Don't bother if we're doing xdomain (asynchronous) loading.
-               if(!omitModuleCheck && !this._isXDomain){
-                       // pass in false so we can give better error
-                       module = this._loadedModules[moduleName];
-                       if(!module){
-                               throw new Error("symbol '" + moduleName + "' is 
not defined after loading '" + relpath + "'"); 
-                       }
-               }
-
-               return module;
-       }
-
-       dojo.provide = function(/*String*/ resourceName){
-               //      summary:
-               //              Each javascript source file must have at least 
one
-               //              `dojo.provide()` call at the top of the file, 
corresponding to
-               //              the file name.  For example, `js/dojo/foo.js` 
must have
-               //              `dojo.provide("dojo.foo");` before any calls to
-               //              `dojo.require()` are made.
-               //      description:
-               //              Each javascript source file is called a 
resource.  When a
-               //              resource is loaded by the browser, 
`dojo.provide()` registers
-               //              that it has been loaded.
-               //      
-               //              For backwards compatibility reasons, in 
addition to registering
-               //              the resource, `dojo.provide()` also ensures 
that the javascript
-               //              object for the module exists.  For example,
-               //              `dojo.provide("dojox.data.FlickrStore")`, in 
addition to
-               //              registering that `FlickrStore.js` is a resource 
for the
-               //              `dojox.data` module, will ensure that the 
`dojox.data`
-               //              javascript object exists, so that calls like 
-               //              `dojo.data.foo = function(){ ... }` don't fail.
-               //
-               //              In the case of a build where multiple 
javascript source files
-               //              are combined into one bigger file (similar to a 
.lib or .jar
-               //              file), that file may contain multiple 
dojo.provide() calls, to
-               //              note that it includes multiple resources.
-
-               //Make sure we have a string.
-               resourceName = resourceName + "";
-               return (d._loadedModules[resourceName] = 
d.getObject(resourceName, true)); // Object
-       }
-
-       //Start of old bootstrap2:
-
-       dojo.platformRequire = function(/*Object*/modMap){
-               //      summary:
-               //              require one or more modules based on which host 
environment
-               //              Dojo is currently operating in
-               //      description:
-               //              This method takes a "map" of arrays which one 
can use to
-               //              optionally load dojo modules. The map is 
indexed by the
-               //              possible dojo.name_ values, with two additional 
values:
-               //              "default" and "common". The items in the 
"default" array will
-               //              be loaded if none of the other items have been 
choosen based on
-               //              dojo.name_, set by your host environment. The 
items in the
-               //              "common" array will *always* be loaded, 
regardless of which
-               //              list is chosen.
-               //      example:
-               //              |       dojo.platformRequire({
-               //              |               browser: [
-               //              |                       "foo.sample", // simple 
module
-               //              |                       "foo.test",
-               //              |                       ["foo.bar.baz", true] 
// skip object check in _loadModule (dojo.require)
-               //              |               ],
-               //              |               default: [ "foo.sample._base" ],
-               //              |               common: [ 
"important.module.common" ]
-               //              |       });
-
-               var common = modMap.common || [];
-               var result = common.concat(modMap[d._name] || modMap["default"] 
|| []);
-
-               for(var x=0; x<result.length; x++){
-                       var curr = result[x];
-                       if(curr.constructor == Array){
-                               d._loadModule.apply(d, curr);
-                       }else{
-                               d._loadModule(curr);
-                       }
-               }
-       }
-
-       dojo.requireIf = function(/*Boolean*/ condition, /*String*/ 
resourceName){
-               // summary:
-               //              If the condition is true then call 
dojo.require() for the specified
-               //              resource
-               if(condition === true){
-                       // FIXME: why do we support chained require()'s here? 
does the build system?
-                       var args = [];
-                       for(var i = 1; i < arguments.length; i++){ 
-                               args.push(arguments[i]);
-                       }
-                       d.require.apply(d, args);
-               }
-       }
-
-       dojo.requireAfterIf = d.requireIf;
-
-       dojo.registerModulePath = function(/*String*/module, /*String*/prefix){
-               //      summary: 
-               //              maps a module name to a path
-               //      description: 
-               //              An unregistered module is given the default 
path of ../[module],
-               //              relative to Dojo root. For example, module acme 
is mapped to
-               //              ../acme.  If you want to use a different module 
name, use
-               //              dojo.registerModulePath. 
-               //      example:
-               //              If your dojo.js is located at this location in 
the web root:
-               //      |       /myapp/js/dojo/dojo/dojo.js
-               //              and your modules are located at:
-               //      |       /myapp/js/foo/bar.js
-               //      |       /myapp/js/foo/baz.js
-               //      |       /myapp/js/foo/thud/xyzzy.js
-               //              Your application can tell Dojo to locate the 
"foo" namespace by calling:
-               //      |       dojo.registerModulePath("foo", "../../foo");
-               //              At which point you can then use dojo.require() 
to load the
-               //              modules (assuming they provide() the same 
things which are
-               //              required). The full code might be:
-               //      |       <script type="text/javascript" 
-               //      |               
src="/myapp/js/dojo/dojo/dojo.js"></script>
-               //      |       <script type="text/javascript">
-               //      |               dojo.registerModulePath("foo", 
"../../foo");
-               //      |               dojo.require("foo.bar");
-               //      |               dojo.require("foo.baz");
-               //      |               dojo.require("foo.thud.xyzzy");
-               //      |       </script>
-               d._modulePrefixes[module] = { name: module, value: prefix };
-       }
-
-       dojo.requireLocalization = function(/*String*/moduleName, 
/*String*/bundleName, /*String?*/locale, /*String?*/availableFlatLocales){
-               // summary:
-               //              Declares translated resources and loads them if 
necessary, in the
-               //              same style as dojo.require.  Contents of the 
resource bundle are
-               //              typically strings, but may be any name/value 
pair, represented in
-               //              JSON format.  See also 
`dojo.i18n.getLocalization`.
-               //
-               // description:
-               //              Load translated resource bundles provided 
underneath the "nls"
-               //              directory within a package.  Translated 
resources may be located in
-               //              different packages throughout the source tree.  
-               //
-               //              Each directory is named for a locale as 
specified by RFC 3066,
-               //              (http://www.ietf.org/rfc/rfc3066.txt), 
normalized in lowercase.
-               //              Note that the two bundles in the example do not 
define all the
-               //              same variants.  For a given locale, bundles 
will be loaded for
-               //              that locale and all more general locales above 
it, including a
-               //              fallback at the root directory.  For example, a 
declaration for
-               //              the "de-at" locale will first load 
`nls/de-at/bundleone.js`,
-               //              then `nls/de/bundleone.js` and finally 
`nls/bundleone.js`.  The
-               //              data will be flattened into a single Object so 
that lookups
-               //              will follow this cascading pattern.  An 
optional build step can
-               //              preload the bundles to avoid data redundancy 
and the multiple
-               //              network hits normally required to load these 
resources.
-               //
-               // moduleName: 
-               //              name of the package containing the "nls" 
directory in which the
-               //              bundle is found
-               //
-               // bundleName: 
-               //              bundle name, i.e. the filename without the 
'.js' suffix
-               //
-               // locale: 
-               //              the locale to load (optional)  By default, the 
browser's user
-               //              locale as defined by dojo.locale
-               //
-               // availableFlatLocales: 
-               //              A comma-separated list of the available, 
flattened locales for this
-               //              bundle. This argument should only be set by the 
build process.
-               //
-               //      example:
-               //              A particular widget may define one or more 
resource bundles,
-               //              structured in a program as follows, where 
moduleName is
-               //              mycode.mywidget and bundleNames available 
include bundleone and
-               //              bundletwo:
-               //      |               ...
-               //      |       mycode/
-               //      |               mywidget/
-               //      |                       nls/
-               //      |                               bundleone.js (the 
fallback translation, English in this example)
-               //      |                               bundletwo.js (also a 
fallback translation)
-               //      |                               de/
-               //      |                                       bundleone.js
-               //      |                                       bundletwo.js
-               //      |                               de-at/
-               //      |                                       bundleone.js
-               //      |                               en/
-               //      |                                       (empty; use the 
fallback translation)
-               //      |                               en-us/
-               //      |                                       bundleone.js
-               //      |                               en-gb/
-               //      |                                       bundleone.js
-               //      |                               es/
-               //      |                                       bundleone.js
-               //      |                                       bundletwo.js
-               //      |                                 ...etc
-               //      |                               ...
-               //
-
-               d.require("dojo.i18n");
-               d.i18n._requireLocalization.apply(d.hostenv, arguments);
-       };
-
-
-       var ore = new 
RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$");
-       var ire = new 
RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$");
-
-       dojo._Url = function(/*dojo._Url||String...*/){
-               // summary: 
-               //              Constructor to create an object representing a 
URL.
-               //              It is marked as private, since we might 
consider removing
-               //              or simplifying it.
-               // description: 
-               //              Each argument is evaluated in order relative to 
the next until
-               //              a canonical uri is produced. To get an absolute 
Uri relative to
-               //              the current document use:
-               //              new dojo._Url(document.baseURI, url)
-
-               var n = null;
-
-               var _a = arguments;
-               var uri = [_a[0]];
-               // resolve uri components relative to each other
-               for(var i = 1; i<_a.length; i++){
-                       if(!_a[i]){ continue; }
-
-                       // Safari doesn't support this.constructor so we have 
to be explicit
-                       // FIXME: Tracked (and fixed) in Webkit bug 3537.
-                       //              
http://bugs.webkit.org/show_bug.cgi?id=3537
-                       var relobj = new d._Url(_a[i]+"");
-                       var uriobj = new d._Url(uri[0]+"");
-
-                       if(
-                               relobj.path == "" &&
-                               !relobj.scheme &&
-                               !relobj.authority &&
-                               !relobj.query
-                       ){
-                               if(relobj.fragment != n){
-                                       uriobj.fragment = relobj.fragment;
-                               }
-                               relobj = uriobj;
-                       }else if(!relobj.scheme){
-                               relobj.scheme = uriobj.scheme;
-
-                               if(!relobj.authority){
-                                       relobj.authority = uriobj.authority;
-
-                                       if(relobj.path.charAt(0) != "/"){
-                                               var path = 
uriobj.path.substring(0,
-                                                       
uriobj.path.lastIndexOf("/") + 1) + relobj.path;
-
-                                               var segs = path.split("/");
-                                               for(var j = 0; j < segs.length; 
j++){
-                                                       if(segs[j] == "."){
-                                                               // flatten "./" 
references
-                                                               if(j == 
segs.length - 1){
-                                                                       segs[j] 
= "";
-                                                               }else{
-                                                                       
segs.splice(j, 1);
-                                                                       j--;
-                                                               }
-                                                       }else if(j > 0 && !(j 
== 1 && segs[0] == "") &&
-                                                               segs[j] == ".." 
&& segs[j-1] != ".."){
-                                                               // flatten 
"../" references
-                                                               if(j == 
(segs.length - 1)){
-                                                                       
segs.splice(j, 1);
-                                                                       segs[j 
- 1] = "";
-                                                               }else{
-                                                                       
segs.splice(j - 1, 2);
-                                                                       j -= 2;
-                                                               }
-                                                       }
-                                               }
-                                               relobj.path = segs.join("/");
-                                       }
-                               }
-                       }
-
-                       uri = [];
-                       if(relobj.scheme){ 
-                               uri.push(relobj.scheme, ":");
-                       }
-                       if(relobj.authority){
-                               uri.push("//", relobj.authority);
-                       }
-                       uri.push(relobj.path);
-                       if(relobj.query){
-                               uri.push("?", relobj.query);
-                       }
-                       if(relobj.fragment){
-                               uri.push("#", relobj.fragment);
-                       }
-               }
-
-               this.uri = uri.join("");
-
-               // break the uri into its main components
-               var r = this.uri.match(ore);
-
-               this.scheme = r[2] || (r[1] ? "" : n);
-               this.authority = r[4] || (r[3] ? "" : n);
-               this.path = r[5]; // can never be undefined
-               this.query = r[7] || (r[6] ? "" : n);
-               this.fragment  = r[9] || (r[8] ? "" : n);
-
-               if(this.authority != n){
-                       // server based naming authority
-                       r = this.authority.match(ire);
-
-                       this.user = r[3] || n;
-                       this.password = r[4] || n;
-                       this.host = r[6] || r[7]; // ipv6 || ipv4
-                       this.port = r[9] || n;
-               }
-       }
-
-       dojo._Url.prototype.toString = function(){ return this.uri; };
-
-       dojo.moduleUrl = function(/*String*/module, /*dojo._Url||String*/url){
-               //      summary: 
-               //              Returns a `dojo._Url` object relative to a 
module.
-               //      example:
-               //      |       var pngPath = 
dojo.moduleUrl("acme","images/small.png");
-               //      |        // list the object properties
-               //      |       // create an image and set it's source to 
pngPath's value:
-               //      |       var img = document.createElement("img");
-               //      |       // NOTE: we assign the string representation of 
the url object
-               //      |       img.src = pngPath.toString(); 
-               //      |       // add our image to the document
-               //      |       dojo.body().appendChild(img);
-               //      example: 
-               //              you may de-reference as far as you like down 
the package
-               //              hierarchy.  This is sometimes handy to avoid 
lenghty relative
-               //              urls or for building portable sub-packages. In 
this example,
-               //              the `acme.widget` and `acme.util` directories 
may be located
-               //              under different roots (see 
`dojo.registerModulePath`) but the
-               //              the modules which reference them can be unaware 
of their
-               //              relative locations on the filesystem:
-               //      |       // somewhere in a configuration block
-               //      |       dojo.registerModulePath("acme.widget", 
"../../acme/widget");
-               //      |       dojo.registerModulePath("acme.util", 
"../../util");
-               //      |       
-               //      |       // ...
-               //      |       
-               //      |       // code in a module using acme resources
-               //      |       var tmpltPath = 
dojo.moduleUrl("acme.widget","templates/template.html");
-               //      |       var dataPath = 
dojo.moduleUrl("acme.util","resources/data.json");
-
-               var loc = d._getModuleSymbols(module).join('/');
-               if(!loc){ return null; }
-               if(loc.lastIndexOf("/") != loc.length-1){
-                       loc += "/";
-               }
-               
-               //If the path is an absolute path (starts with a / or is on 
another
-               //domain/xdomain) then don't add the baseUrl.
-               var colonIndex = loc.indexOf(":");
-               if(loc.charAt(0) != "/" && (colonIndex == -1 || colonIndex > 
loc.indexOf("/"))){
-                       loc = d.baseUrl + loc;
-               }
-
-               return new d._Url(loc, url); // String
-       }
-})();
-
-/*=====
-dojo.isBrowser = {
-       //      example:
-       //      |       if(dojo.isBrowser){ ... }
-};
-
-dojo.isFF = {
-       //      example:
-       //      |       if(dojo.isFF > 1){ ... }
-};
-
-dojo.isIE = {
-       // example:
-       //      |       if(dojo.isIE > 6){
-       //      |               // we are IE7
-       //      |       }
-};
-
-dojo.isSafari = {
-       //      example:
-       //      |       if(dojo.isSafari){ ... }
-       //      example: 
-       //              Detect iPhone:
-       //      |       if(dojo.isSafari && 
navigator.userAgent.indexOf("iPhone") != -1){ 
-       //      |               // we are iPhone. Note, iPod touch reports 
"iPod" above and fails this test.
-       //      |       }
-};
-
-dojo = {
-       // isBrowser: Boolean
-       //              True if the client is a web-browser
-       isBrowser: true,
-       //      isFF: Number | undefined
-       //              Version as a Number if client is FireFox. undefined 
otherwise. Corresponds to
-       //              major detected FireFox version (1.5, 2, 3, etc.)
-       isFF: 2,
-       //      isIE: Number | undefined
-       //              Version as a Number if client is MSIE(PC). undefined 
otherwise. Corresponds to
-       //              major detected IE version (6, 7, 8, etc.)
-       isIE: 6,
-       //      isKhtml: Number | undefined
-       //              Version as a Number if client is a KHTML browser. 
undefined otherwise. Corresponds to major
-       //              detected version.
-       isKhtml: 0,
-       //      isWebKit: Number | undefined
-       //              Version as a Number if client is a WebKit-derived 
browser (Konqueror,
-       //              Safari, Chrome, etc.). undefined otherwise.
-       isWebKit: 0,
-       //      isMozilla: Number | undefined
-       //              Version as a Number if client is a Mozilla-based 
browser (Firefox,
-       //              SeaMonkey). undefined otherwise. Corresponds to major 
detected version.
-       isMozilla: 0,
-       //      isOpera: Number | undefined
-       //              Version as a Number if client is Opera. undefined 
otherwise. Corresponds to
-       //              major detected version.
-       isOpera: 0,
-       //      isSafari: Number | undefined
-       //              Version as a Number if client is Safari or iPhone. 
undefined otherwise.
-       isSafari: 0
-       //      isChrome: Number | undefined
-       //              Version as a Number if client is Chrome browser. 
undefined otherwise.
-       isChrome: 0
-}
-=====*/
-
-if(typeof window != 'undefined'){
-       dojo.isBrowser = true;
-       dojo._name = "browser";
-
-
-       // attempt to figure out the path to dojo if it isn't set in the config
-       (function(){
-               var d = dojo;
-
-               // this is a scope protection closure. We set browser versions 
and grab
-               // the URL we were loaded from here.
-
-               // grab the node we were loaded from
-               if(document && document.getElementsByTagName){
-                       var scripts = document.getElementsByTagName("script");
-                       var rePkg = /dojo(\.xd)?\.js(\W|$)/i;
-                       for(var i = 0; i < scripts.length; i++){
-                               var src = scripts[i].getAttribute("src");
-                               if(!src){ continue; }
-                               var m = src.match(rePkg);
-                               if(m){
-                                       // find out where we came from
-                                       if(!d.config.baseUrl){
-                                               d.config.baseUrl = 
src.substring(0, m.index);
-                                       }
-                                       // and find out if we need to modify 
our behavior
-                                       var cfg = 
scripts[i].getAttribute("djConfig");
-                                       if(cfg){
-                                               var cfgo = eval("({ "+cfg+" 
})");
-                                               for(var x in cfgo){
-                                                       dojo.config[x] = 
cfgo[x];
-                                               }
-                                       }
-                                       break; // "first Dojo wins"
-                               }
-                       }
-               }
-               d.baseUrl = d.config.baseUrl;
-
-               // fill in the rendering support information in dojo.render.*
-               var n = navigator;
-               var dua = n.userAgent,
-                       dav = n.appVersion,
-                       tv = parseFloat(dav);
-
-               if(dua.indexOf("Opera") >= 0){ d.isOpera = tv; }
-               if(dua.indexOf("AdobeAIR") >= 0){ d.isAIR = 1; }
-               d.isKhtml = (dav.indexOf("Konqueror") >= 0) ? tv : 0;
-               d.isWebKit = parseFloat(dua.split("WebKit/")[1]) || undefined;
-               d.isChrome = parseFloat(dua.split("Chrome/")[1]) || undefined;
-
-               // safari detection derived from:
-               //              
http://developer.apple.com/internet/safari/faq.html#anchor2
-               //              
http://developer.apple.com/internet/safari/uamatrix.html
-               var index = Math.max(dav.indexOf("WebKit"), 
dav.indexOf("Safari"), 0);
-               if(index && !dojo.isChrome){
-                       // try to grab the explicit Safari version first. If we 
don't get
-                       // one, look for less than 419.3 as the indication that 
we're on something
-                       // "Safari 2-ish".
-                       d.isSafari = parseFloat(dav.split("Version/")[1]);
-                       if(!d.isSafari || parseFloat(dav.substr(index + 7)) <= 
419.3){
-                               d.isSafari = 2;
-                       }
-               }
-
-                               if(dua.indexOf("Gecko") >= 0 && !d.isKhtml && 
!d.isWebKit){ d.isMozilla = d.isMoz = tv; }
-               if(d.isMoz){
-                       d.isFF = parseFloat(dua.split("Firefox/")[1]) || 
undefined;
-               }
-               if(document.all && !d.isOpera){
-                       d.isIE = parseFloat(dav.split("MSIE ")[1]) || undefined;
-                       //In cases where the page has an HTTP header or META 
tag with
-                       //X-UA-Compatible, then it is in emulation mode, for a 
previous
-                       //version. Make sure isIE reflects the desired version.
-                       //document.documentMode of 5 means quirks mode.
-                       if(d.isIE >= 8 && document.documentMode != 5){
-                               d.isIE = document.documentMode;
-                       }
-               }
-
-               //Workaround to get local file loads of dojo to work on IE 7
-               //by forcing to not use native xhr.
-               if(dojo.isIE && window.location.protocol === "file:"){
-                       dojo.config.ieForceActiveXXhr=true;
-               }
-               
-               var cm = document.compatMode;
-               d.isQuirks = cm == "BackCompat" || cm == "QuirksMode" || d.isIE 
< 6;
-
-               // TODO: is the HTML LANG attribute relevant?
-               d.locale = dojo.config.locale || (d.isIE ? n.userLanguage : 
n.language).toLowerCase();
-
-               // These are in order of decreasing likelihood; this will 
change in time.
-                               d._XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 
'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];
-               
-               d._xhrObj = function(){
-                       // summary: 
-                       //              does the work of portably generating a 
new XMLHTTPRequest object.
-                       var http, last_e;
-                                               if(!dojo.isIE || 
!dojo.config.ieForceActiveXXhr){
-                                                       try{ http = new 
XMLHttpRequest(); }catch(e){}
-                                               }
-                       if(!http){
-                               for(var i=0; i<3; ++i){
-                                       var progid = d._XMLHTTP_PROGIDS[i];
-                                       try{
-                                               http = new 
ActiveXObject(progid);
-                                       }catch(e){
-                                               last_e = e;
-                                       }
-
-                                       if(http){
-                                               d._XMLHTTP_PROGIDS = [progid];  
// so faster next time
-                                               break;
-                                       }
-                               }
-                       }
-                       
-                       if(!http){
-                               throw new Error("XMLHTTP not available: 
"+last_e);
-                       }
-
-                       return http; // XMLHTTPRequest instance
-               }
-
-               d._isDocumentOk = function(http){
-                       var stat = http.status || 0;
-                       return (stat >= 200 && stat < 300) ||   // Boolean
-                               stat == 304 ||                                  
        // allow any 2XX response code
-                               stat == 1223 ||                                 
                // get it out of the cache
-                               (!stat && (location.protocol=="file:" || 
location.protocol=="chrome:") ); // Internet Explorer mangled the status code
-               }
-
-               //See if base tag is in use.
-               //This is to fix http://trac.dojotoolkit.org/ticket/3973,
-               //but really, we need to find out how to get rid of the 
dojo._Url reference
-               //below and still have DOH work with the dojo.i18n test 
following some other
-               //test that uses the test frame to load a document (trac #2757).
-               //Opera still has problems, but perhaps a larger issue of base 
tag support
-               //with XHR requests (hasBase is true, but the request is still 
made to document
-               //path, not base path).
-               var owloc = window.location+"";
-               var base = document.getElementsByTagName("base");
-               var hasBase = (base && base.length > 0);
-
-               d._getText = function(/*URI*/ uri, /*Boolean*/ fail_ok){
-                       // summary: Read the contents of the specified uri and 
return those contents.
-                       // uri:
-                       //              A relative or absolute uri. If 
absolute, it still must be in
-                       //              the same "domain" as we are.
-                       // fail_ok:
-                       //              Default false. If fail_ok and loading 
fails, return null
-                       //              instead of throwing.
-                       // returns: The response text. null is returned when 
there is a
-                       //              failure and failure is okay (an 
exception otherwise)
-
-                       // NOTE: must be declared before scope switches ie. 
this._xhrObj()
-                       var http = this._xhrObj();
-
-                       if(!hasBase && dojo._Url){
-                               uri = (new dojo._Url(owloc, uri)).toString();
-                       }
-
-                       if(d.config.cacheBust){
-                               //Make sure we have a string before string 
methods are used on uri
-                               uri += "";
-                               uri += (uri.indexOf("?") == -1 ? "?" : "&") + 
String(d.config.cacheBust).replace(/\W+/g,"");
-                       }
-
-                       http.open('GET', uri, false);
-                       try{
-                               http.send(null);
-                               if(!d._isDocumentOk(http)){
-                                       var err = Error("Unable to load "+uri+" 
status:"+ http.status);
-                                       err.status = http.status;
-                                       err.responseText = http.responseText;
-                                       throw err;
-                               }
-                       }catch(e){
-                               if(fail_ok){ return null; } // null
-                               // rethrow the exception
-                               throw e;
-                       }
-                       return http.responseText; // String
-               }
-               
-
-               var _w = window;
-               var _handleNodeEvent = function(/*String*/evtName, 
/*Function*/fp){
-                       // summary:
-                       //              non-destructively adds the specified 
function to the node's
-                       //              evtName handler.
-                       // evtName: should be in the form "onclick" for 
"onclick" handlers.
-                       // Make sure you pass in the "on" part.
-                       var oldHandler = _w[evtName] || function(){};
-                       _w[evtName] = function(){
-                               fp.apply(_w, arguments);
-                               oldHandler.apply(_w, arguments);
-                       };
-               };
-
-
-               d._windowUnloaders = [];
-               
-               d.windowUnloaded = function(){
-                       // summary:
-                       //              signal fired by impending window 
destruction. You may use
-                       //              dojo.addOnWindowUnload() to register a 
listener for this
-                       //              event. NOTE: if you wish to 
dojo.connect() to this method
-                       //              to perform page/application cleanup, be 
aware that this
-                       //              event WILL NOT fire if no handler has 
been registered with
-                       //              dojo.addOnWindowUnload. This behavior 
started in Dojo 1.3.
-                       //              Previous versions always triggered 
dojo.windowUnloaded. See
-                       //              dojo.addOnWindowUnload for more info.
-                       var mll = d._windowUnloaders;
-                       while(mll.length){
-                               (mll.pop())();
-                       }
-               };
-
-               var _onWindowUnloadAttached = 0;
-               d.addOnWindowUnload = function(/*Object?|Function?*/obj, 
/*String|Function?*/functionName){
-                       // summary:
-                       //              registers a function to be triggered 
when window.onunload
-                       //              fires. 
-                       //      description:
-                       //              The first time that addOnWindowUnload 
is called Dojo
-                       //              will register a page listener to 
trigger your unload
-                       //              handler with. Note that registering 
these handlers may
-                       //              destory "fastback" page caching in 
browsers that support
-                       //              it. Be careful trying to modify the DOM 
or access
-                       //              JavaScript properties during this phase 
of page unloading:
-                       //              they may not always be available. 
Consider
-                       //              dojo.addOnUnload() if you need to 
modify the DOM or do
-                       //              heavy JavaScript work since it fires at 
the eqivalent of
-                       //              the page's "onbeforeunload" event.
-                       // example:
-                       //      |       dojo.addOnWindowUnload(functionPointer)
-                       //      |       dojo.addOnWindowUnload(object, 
"functionName");
-                       //      |       dojo.addOnWindowUnload(object, 
function(){ /* ... */});
-
-                       d._onto(d._windowUnloaders, obj, functionName);
-                       if(!_onWindowUnloadAttached){
-                               _onWindowUnloadAttached = 1;
-                               _handleNodeEvent("onunload", d.windowUnloaded);
-                       }
-               };
-
-               var _onUnloadAttached = 0;
-               d.addOnUnload = function(/*Object?|Function?*/obj, 
/*String|Function?*/functionName){
-                       // summary:
-                       //              registers a function to be triggered 
when the page unloads.
-                       //      description:
-                       //              The first time that addOnUnload is 
called Dojo will
-                       //              register a page listener to trigger 
your unload handler
-                       //              with. 
-                       //
-                       //              In a browser enviroment, the functions 
will be triggered
-                       //              during the window.onbeforeunload event. 
Be careful of doing
-                       //              too much work in an unload handler. 
onbeforeunload can be
-                       //              triggered if a link to download a file 
is clicked, or if
-                       //              the link is a javascript: link. In 
these cases, the
-                       //              onbeforeunload event fires, but the 
document is not
-                       //              actually destroyed. So be careful about 
doing destructive
-                       //              operations in a dojo.addOnUnload 
callback.
-                       //
-                       //              Further note that calling 
dojo.addOnUnload will prevent
-                       //              browsers from using a "fast back" cache 
to make page
-                       //              loading via back button instantaneous. 
-                       // example:
-                       //      |       dojo.addOnUnload(functionPointer)
-                       //      |       dojo.addOnUnload(object, "functionName")
-                       //      |       dojo.addOnUnload(object, function(){ /* 
... */});
-
-                       d._onto(d._unloaders, obj, functionName);
-                       if(!_onUnloadAttached){
-                               _onUnloadAttached = 1;
-                               _handleNodeEvent("onbeforeunload", 
dojo.unloaded);
-                       }
-               };
-
-       })();
-
-       dojo._initFired = false;
-       //      BEGIN DOMContentLoaded, from Dean Edwards 
(http://dean.edwards.name/weblog/2006/06/again/)
-       dojo._loadInit = function(e){
-               dojo._initFired = true;
-               // allow multiple calls, only first one will take effect
-               // A bug in khtml calls events callbacks for document for event 
which isnt supported
-               // for example a created contextmenu event calls 
DOMContentLoaded, workaround
-               var type = (e && e.type) ? e.type.toLowerCase() : "load";
-               if(arguments.callee.initialized || (type != "domcontentloaded" 
&& type != "load")){ return; }
-               arguments.callee.initialized = true;
-               if("_khtmlTimer" in dojo){
-                       clearInterval(dojo._khtmlTimer);
-                       delete dojo._khtmlTimer;
-               }
-
-               if(dojo._inFlightCount == 0){
-                       dojo._modulesLoaded();
-               }
-       }
-
-       dojo._fakeLoadInit = function(){
-               dojo._loadInit({type: "load"});
-       }
-
-       if(!dojo.config.afterOnLoad){
-               //      START DOMContentLoaded
-               // Mozilla and Opera 9 expose the event we could use
-                               if(document.addEventListener){
-                       // NOTE: 
-                       //              due to a threading issue in Firefox 
2.0, we can't enable
-                       //              DOMContentLoaded on that platform. For 
more information, see:
-                       //              http://trac.dojotoolkit.org/ticket/1704
-                       if(dojo.isWebKit > 525 || dojo.isOpera || dojo.isFF >= 
3 || (dojo.isMoz && dojo.config.enableMozDomContentLoaded === true)){
-                                               
document.addEventListener("DOMContentLoaded", dojo._loadInit, null);
-                                       }
-       
-                       //      mainly for Opera 8.5, won't be fired if 
DOMContentLoaded fired already.
-                       //  also used for Mozilla because of trac #1640
-                       window.addEventListener("load", dojo._loadInit, null);
-               }
-                       
-                               if(dojo.isAIR){
-                       window.addEventListener("load", dojo._loadInit, null);
-               }else if((dojo.isWebKit < 525) || dojo.isKhtml){
-                       dojo._khtmlTimer = setInterval(function(){
-                               if(/loaded|complete/.test(document.readyState)){
-                                       dojo._loadInit(); // call the onload 
handler
-                               }
-                       }, 10);
-               }
-                               //      END DOMContentLoaded
-       }
-
-               if(dojo.isIE){
-               //      for Internet Explorer. readyState will not be achieved 
on init
-               //      call, but dojo doesn't need it however, we'll include it
-               //      because we don't know if there are other functions 
added that
-               //      might.  Note that this has changed because the build 
process
-               //      strips all comments -- including conditional ones.
-               if(!dojo.config.afterOnLoad){
-                       document.write('<scr'+'ipt defer src="//:" '
-                               + 
'onreadystatechange="if(this.readyState==\'complete\'){' + dojo._scopeName + 
'._loadInit();}">'
-                               + '</scr'+'ipt>'
-                       );
-               }
-
-               try{
-                       
document.namespaces.add("v","urn:schemas-microsoft-com:vml");
-                       document.createStyleSheet().addRule("v\\:*", 
"behavior:url(#default#VML);  display:inline-block");
-               }catch(e){}
-       }
-       
-
-       /*
-       OpenAjax.subscribe("OpenAjax", "onload", function(){
-               if(dojo._inFlightCount == 0){
-                       dojo._modulesLoaded();
-               }
-       });
-
-       OpenAjax.subscribe("OpenAjax", "onunload", function(){
-               dojo.unloaded();
-       });
-       */
-} //if (typeof window != 'undefined')
-
-//Register any module paths set up in djConfig. Need to do this
-//in the hostenvs since hostenv_browser can read djConfig from a
-//script tag's attribute.
-(function(){
-       var mp = dojo.config["modulePaths"];
-       if(mp){
-               for(var param in mp){
-                       dojo.registerModulePath(param, mp[param]);
-               }
-       }
-})();
-
-//Load debug code if necessary.
-if(dojo.config.isDebug){
-       dojo.require("dojo._firebug.firebug");
-}
-
-if(dojo.config.debugAtAllCosts){
-       dojo.config.useXDomain = true;
-       dojo.require("dojo._base._loader.loader_xd");
-       dojo.require("dojo._base._loader.loader_debug");
-       dojo.require("dojo.i18n");
-}
-
-if(!dojo._hasResource["dojo._base.lang"]){ //_hasResource checks added by 
build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.lang"] = true;
-dojo.provide("dojo._base.lang");
-
-// Crockford (ish) functions
-
-dojo.isString = function(/*anything*/ it){
-       //      summary:
-       //              Return true if it is a String
-       return !!arguments.length && it != null && (typeof it == "string" || it 
instanceof String); // Boolean
-}
-
-dojo.isArray = function(/*anything*/ it){
-       //      summary:
-       //              Return true if it is an Array
-       return it && (it instanceof Array || typeof it == "array"); // Boolean
-}
-
-/*=====
-dojo.isFunction = function(it){
-       // summary: Return true if it is a Function
-       // it: anything
-       return; // Boolean
-}
-=====*/
-
-dojo.isFunction = (function(){
-       var _isFunction = function(/*anything*/ it){
-               return it && (typeof it == "function" || it instanceof 
Function); // Boolean
-       };
-
-       return dojo.isSafari ?
-               // only slow this down w/ gratuitious casting in Safari (not 
WebKit)
-               function(/*anything*/ it){
-                       if(typeof it == "function" && it == "[object 
NodeList]"){ return false; }
-                       return _isFunction(it); // Boolean
-               } : _isFunction;
-})();
-
-dojo.isObject = function(/*anything*/ it){
-       // summary: 
-       //              Returns true if it is a JavaScript object (or an Array, 
a Function
-       //              or null)
-       return it !== undefined &&
-               (it === null || typeof it == "object" || dojo.isArray(it) || 
dojo.isFunction(it)); // Boolean
-}
-
-dojo.isArrayLike = function(/*anything*/ it){
-       //      summary:
-       //              similar to dojo.isArray() but more permissive
-       //      description:
-       //              Doesn't strongly test for "arrayness".  Instead, 
settles for "isn't
-       //              a string or number and has a length property". 
Arguments objects
-       //              and DOM collections will return true when passed to
-       //              dojo.isArrayLike(), but will return false when passed to
-       //              dojo.isArray().
-       //      returns:
-       //              If it walks like a duck and quacks like a duck, return 
`true`
-       var d = dojo;
-       return it && it !== undefined && // Boolean
-               // keep out built-in constructors (Number, String, ...) which 
have length
-               // properties
-               !d.isString(it) && !d.isFunction(it) &&
-               !(it.tagName && it.tagName.toLowerCase() == 'form') &&
-               (d.isArray(it) || isFinite(it.length));
-}
-
-dojo.isAlien = function(/*anything*/ it){
-       // summary: 
-       //              Returns true if it is a built-in function or some other 
kind of
-       //              oddball that *should* report as a function but doesn't
-       return it && !dojo.isFunction(it) && /\{\s*\[native 
code\]\s*\}/.test(String(it)); // Boolean
-}
-
-dojo.extend = function(/*Object*/ constructor, /*Object...*/ props){
-       // summary:
-       //              Adds all properties and methods of props to 
constructor's
-       //              prototype, making them available to all instances 
created with
-       //              constructor.
-       for(var i=1, l=arguments.length; i<l; i++){
-               dojo._mixin(constructor.prototype, arguments[i]);
-       }
-       return constructor; // Object
-}
-
-dojo._hitchArgs = function(scope, method /*,...*/){
-       var pre = dojo._toArray(arguments, 2);
-       var named = dojo.isString(method);
-       return function(){
-               // arrayify arguments
-               var args = dojo._toArray(arguments);
-               // locate our method
-               var f = named ? (scope||dojo.global)[method] : method;
-               // invoke with collected args
-               return f && f.apply(scope || this, pre.concat(args)); // mixed
-       } // Function
-}
-
-dojo.hitch = function(/*Object*/scope, /*Function|String*/method /*,...*/){
-       //      summary: 
-       //              Returns a function that will only ever execute in the a 
given scope. 
-       //              This allows for easy use of object member functions
-       //              in callbacks and other places in which the "this" 
keyword may
-       //              otherwise not reference the expected scope. 
-       //              Any number of default positional arguments may be 
passed as parameters 
-       //              beyond "method".
-       //              Each of these values will be used to "placehold" 
(similar to curry)
-       //              for the hitched function. 
-       //      scope: 
-       //              The scope to use when method executes. If method is a 
string, 
-       //              scope is also the object containing method.
-       //      method:
-       //              A function to be hitched to scope, or the name of the 
method in
-       //              scope to be hitched.
-       //      example:
-       //      |       dojo.hitch(foo, "bar")(); 
-       //              runs foo.bar() in the scope of foo
-       //      example:
-       //      |       dojo.hitch(foo, myFunction);
-       //              returns a function that runs myFunction in the scope of 
foo
-       if(arguments.length > 2){
-               return dojo._hitchArgs.apply(dojo, arguments); // Function
-       }
-       if(!method){
-               method = scope;
-               scope = null;
-       }
-       if(dojo.isString(method)){
-               scope = scope || dojo.global;
-               if(!scope[method]){ throw(['dojo.hitch: scope["', method, '"] 
is null (scope="', scope, '")'].join('')); }
-               return function(){ return scope[method].apply(scope, arguments 
|| []); }; // Function
-       }
-       return !scope ? method : function(){ return method.apply(scope, 
arguments || []); }; // Function
-}
-
-/*=====
-dojo.delegate = function(obj, props){
-       //      summary:
-       //              Returns a new object which "looks" to obj for 
properties which it
-       //              does not have a value for. Optionally takes a bag of 
properties to
-       //              seed the returned object with initially. 
-       //      description:
-       //              This is a small implementaton of the Boodman/Crockford 
delegation
-       //              pattern in JavaScript. An intermediate object 
constructor mediates
-       //              the prototype chain for the returned object, using it 
to delegate
-       //              down to obj for property lookup when object-local 
lookup fails.
-       //              This can be thought of similarly to ES4's "wrap", save 
that it does
-       //              not act on types but rather on pure objects.
-       //      obj:
-       //              The object to delegate to for properties not found 
directly on the
-       //              return object or in props.
-       //      props:
-       //              an object containing properties to assign to the 
returned object
-       //      returns:
-       //              an Object of anonymous type
-       //      example:
-       //      |       var foo = { bar: "baz" };
-       //      |       var thinger = dojo.delegate(foo, { thud: "xyzzy"});
-       //      |       thinger.bar == "baz"; // delegated to foo
-       //      |       foo.thud == undefined; // by definition
-       //      |       thinger.thud == "xyzzy"; // mixed in from props
-       //      |       foo.bar = "thonk";
-       //      |       thinger.bar == "thonk"; // still delegated to foo's bar
-}
-=====*/
-
-dojo.delegate = dojo._delegate = (function(){
-       // boodman/crockford delegation w/ cornford optimization
-       function TMP(){}
-       return function(obj, props){
-               TMP.prototype = obj;
-               var tmp = new TMP();
-               if(props){
-                       dojo._mixin(tmp, props);
-               }
-               return tmp; // Object
-       }
-})();
-
-/*=====
-dojo._toArray = function(obj, offset, startWith){
-       //      summary:
-       //              Converts an array-like object (i.e. arguments, 
DOMCollection) to an
-       //              array. Returns a new Array with the elements of obj.
-       //      obj: Object
-       //              the object to "arrayify". We expect the object to have, 
at a
-       //              minimum, a length property which corresponds to 
integer-indexed
-       //              properties.
-       //      offset: Number?
-       //              the location in obj to start iterating from. Defaults 
to 0.
-       //              Optional.
-       //      startWith: Array?
-       //              An array to pack with the properties of obj. If 
provided,
-       //              properties in obj are appended at the end of startWith 
and
-       //              startWith is the returned array.
-}
-=====*/
-
-(function(){
-       var efficient = function(obj, offset, startWith){
-               return (startWith||[]).concat(Array.prototype.slice.call(obj, 
offset||0));
-       };
-
-               var slow = function(obj, offset, startWith){
-               var arr = startWith||[]; 
-               for(var x = offset || 0; x < obj.length; x++){ 
-                       arr.push(obj[x]); 
-               } 
-               return arr;
-       };
-       
-       dojo._toArray = 
-                               dojo.isIE ?  function(obj){
-                       return ((obj.item) ? slow : efficient).apply(this, 
arguments);
-               } : 
-                               efficient;
-
-})();
-
-dojo.partial = function(/*Function|String*/method /*, ...*/){
-       //      summary:
-       //              similar to hitch() except that the scope object is left 
to be
-       //              whatever the execution context eventually becomes.
-       //      description:
-       //              Calling dojo.partial is the functional equivalent of 
calling:
-       //              |       dojo.hitch(null, funcName, ...);
-       var arr = [ null ];
-       return dojo.hitch.apply(dojo, arr.concat(dojo._toArray(arguments))); // 
Function
-}
-
-dojo.clone = function(/*anything*/ o){
-       // summary:
-       //              Clones objects (including DOM nodes) and all children.
-       //              Warning: do not clone cyclic structures.
-       if(!o){ return o; }
-       if(dojo.isArray(o)){
-               var r = [];
-               for(var i = 0; i < o.length; ++i){
-                       r.push(dojo.clone(o[i]));
-               }
-               return r; // Array
-       }
-       if(!dojo.isObject(o)){
-               return o;       /*anything*/
-       }
-       if(o.nodeType && o.cloneNode){ // isNode
-               return o.cloneNode(true); // Node
-       }
-       if(o instanceof Date){
-               return new Date(o.getTime());   // Date
-       }
-       // Generic objects
-       r = new o.constructor(); // specific to dojo.declare()'d classes!
-       for(i in o){
-               if(!(i in r) || r[i] != o[i]){
-                       r[i] = dojo.clone(o[i]);
-               }
-       }
-       return r; // Object
-}
-
-/*=====
-dojo.trim = function(str){
-       //      summary:
-       //              Trims whitespace from both sides of the string
-       //      str: String
-       //              String to be trimmed
-       //      returns: String
-       //              Returns the trimmed string
-       //      description:
-       //              This version of trim() was selected for inclusion into 
the base due
-       //              to its compact size and relatively good performance
-       //              (see [Steven Levithan's 
blog](http://blog.stevenlevithan.com/archives/faster-trim-javascript)
-       //              Uses String.prototype.trim instead, if available.
-       //              The fastest but longest version of this function is 
located at
-       //              dojo.string.trim()
-       return "";      // String
-}
-=====*/
-
-dojo.trim = String.prototype.trim ?
-       function(str){ return str.trim(); } :
-       function(str){ return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 
};
-
-}
-
-if(!dojo._hasResource["dojo._base.declare"]){ //_hasResource checks added by 
build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.declare"] = true;
-dojo.provide("dojo._base.declare");
-
-
-// this file courtesy of the TurboAjax Group, licensed under a Dojo CLA
-
-dojo.declare = function(/*String*/ className, /*Function|Function[]*/ 
superclass, /*Object*/ props){
-       //      summary: 
-       //              Create a feature-rich constructor from compact notation
-       //      className:
-       //              The name of the constructor (loosely, a "class")
-       //              stored in the "declaredClass" property in the created 
prototype
-       //      superclass:
-       //              May be null, a Function, or an Array of Functions. If 
an array, 
-       //              the first element is used as the prototypical ancestor 
and
-       //              any following Functions become mixin ancestors.
-       //      props:
-       //              An object whose properties are copied to the
-       //              created prototype.
-       //              Add an instance-initialization function by making it a 
property 
-       //              named "constructor".
-       //      description:
-       //              Create a constructor using a compact notation for 
inheritance and
-       //              prototype extension. 
-       //
-       //              All superclasses (including mixins) must be Functions 
(not simple Objects).
-       //
-       //              Mixin ancestors provide a type of multiple inheritance. 
Prototypes of mixin 
-       //              ancestors are copied to the new class: changes to mixin 
prototypes will
-       //              not affect classes to which they have been mixed in.
-       //
-       //              "className" is cached in "declaredClass" property of 
the new class.
-       //
-       //      example:
-       //      |       dojo.declare("my.classes.bar", my.classes.foo, {
-       //      |               // properties to be added to the class prototype
-       //      |               someValue: 2,
-       //      |               // initialization function
-       //      |               constructor: function(){
-       //      |                       this.myComplicatedObject = new 
ReallyComplicatedObject(); 
-       //      |               },
-       //      |               // other functions
-       //      |               someMethod: function(){ 
-       //      |                       doStuff(); 
-       //      |               }
-       //      |       );
-
-       // process superclass argument
-       var dd = arguments.callee, mixins;
-       if(dojo.isArray(superclass)){
-               mixins = superclass;
-               superclass = mixins.shift();
-       }
-       // construct intermediate classes for mixins
-       if(mixins){
-               dojo.forEach(mixins, function(m, i){
-                       if(!m){ throw(className + ": mixin #" + i + " is 
null"); } // It's likely a required module is not loaded
-                       superclass = dd._delegate(superclass, m);
-               });
-       }
-       // create constructor
-       var ctor = dd._delegate(superclass);
-       // extend with "props"
-       props = props || {};
-       ctor.extend(props);
-       // more prototype decoration
-       dojo.extend(ctor, {declaredClass: className, _constructor: 
props.constructor/*, preamble: null*/});
-       // special help for IE
-       ctor.prototype.constructor = ctor;
-       // create named reference
-       return dojo.setObject(className, ctor); // Function
-};
-
-dojo.mixin(dojo.declare, {
-       _delegate: function(base, mixin){
-               var bp = (base||0).prototype, mp = (mixin||0).prototype, 
dd=dojo.declare;
-               // fresh constructor, fresh prototype
-               var ctor = dd._makeCtor();
-               // cache ancestry
-               dojo.mixin(ctor, {superclass: bp, mixin: mp, extend: 
dd._extend});
-               // chain prototypes
-               if(base){ctor.prototype = dojo._delegate(bp);}
-               // add mixin and core
-               dojo.extend(ctor, dd._core, mp||0, {_constructor: null, 
preamble: null});
-               // special help for IE
-               ctor.prototype.constructor = ctor;
-               // name this class for debugging
-               ctor.prototype.declaredClass = (bp||0).declaredClass + '_' + 
(mp||0).declaredClass;
-               return ctor;
-       },
-       _extend: function(props){
-               var i, fn;
-               for(i in props){ if(dojo.isFunction(fn=props[i]) && 
!0[i]){fn.nom=i;fn.ctor=this;} }
-               dojo.extend(this, props);
-       },
-       _makeCtor: function(){
-               // we have to make a function, but don't want to close over 
anything
-               return function(){ this._construct(arguments); };
-       },
-       _core: { 
-               _construct: function(args){
-                       var c=args.callee, s=c.superclass, ct=s&&s.constructor, 
m=c.mixin, mct=m&&m.constructor, a=args, ii, fn;
-                       // side-effect of = used on purpose here, lint may 
complain, don't try this at home
-                       if(a[0]){ 
-                               // FIXME: preambles for each mixin should be 
allowed
-                               // FIXME: 
-                               //              should we allow the preamble 
here NOT to modify the
-                               //              default args, but instead to 
act on each mixin
-                               //              independently of the class 
instance being constructed
-                               //              (for impedence matching)?
-
-                               // allow any first argument w/ a "preamble" 
property to act as a
-                               // class preamble (not exclusive of the 
prototype preamble)
-                               if(/*dojo.isFunction*/((fn = a[0].preamble))){ 
-                                       a = fn.apply(this, a) || a; 
-                               }
-                       } 
-                       // prototype preamble
-                       if((fn = c.prototype.preamble)){a = fn.apply(this, a) 
|| a;}
-                       // FIXME: 
-                       //              need to provide an optional 
prototype-settable
-                       //              "_explicitSuper" property which 
disables this
-                       // initialize superclass
-                       if(ct&&ct.apply){ct.apply(this, a);}
-                       // initialize mixin
-                       if(mct&&mct.apply){mct.apply(this, a);}
-                       // initialize self
-                       if((ii=c.prototype._constructor)){ii.apply(this, args);}
-                       // post construction
-                       if(this.constructor.prototype==c.prototype && 
(ct=this.postscript)){ ct.apply(this, args); }
-               },
-               _findMixin: function(mixin){
-                       var c = this.constructor, p, m;
-                       while(c){
-                               p = c.superclass;
-                               m = c.mixin;
-                               if(m==mixin || (m instanceof 
mixin.constructor)){return p;}
-                               if(m && m._findMixin && 
(m=m._findMixin(mixin))){return m;}
-                               c = p && p.constructor;
-                       }
-               },
-               _findMethod: function(name, method, ptype, has){
-                       // consciously trading readability for bytes and speed 
in this low-level method
-                       var p=ptype, c, m, f;
-                       do{
-                               c = p.constructor;
-                               m = c.mixin;
-                               // find method by name in our mixin ancestor
-                               if(m && (m=this._findMethod(name, method, m, 
has))){return m;}
-                               // if we found a named method that either 
exactly-is or exactly-is-not 'method'
-                               if((f=p[name])&&(has==(f==method))){return p;}
-                               // ascend chain
-                               p = c.superclass;
-                       }while(p);
-                       // if we couldn't find an ancestor in our primary 
chain, try a mixin chain
-                       return !has && (p=this._findMixin(ptype)) && 
this._findMethod(name, method, p, has);
-               },
-               inherited: function(name, args, newArgs){
-                       // optionalize name argument
-                       var a = arguments;
-                       if(!dojo.isString(a[0])){newArgs=args; args=name; 
name=args.callee.nom;}
-                       a = newArgs||args;
-                       var c = args.callee, p = this.constructor.prototype, 
fn, mp;
-                       // if not an instance override
-                       if(this[name] != c || p[name] == c){
-                               // start from memoized prototype, or
-                               // find a prototype that has property 'name' == 
'c'
-                               mp = (c.ctor||0).superclass || 
this._findMethod(name, c, p, true);
-                               if(!mp){throw(this.declaredClass + ': inherited 
method "' + name + '" mismatch');}
-                               // find a prototype that has property 'name' != 
'c'
-                               p = this._findMethod(name, c, mp, false);
-                       }
-                       // we expect 'name' to be in prototype 'p'
-                       fn = p && p[name];
-                       if(!fn){throw(mp.declaredClass + ': inherited method "' 
+ name + '" not found');}
-                       // if the function exists, invoke it in our scope
-                       return fn.apply(this, a);
-               }
-       }
-});
-
-}
-
-if(!dojo._hasResource["dojo._base.connect"]){ //_hasResource checks added by 
build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.connect"] = true;
-dojo.provide("dojo._base.connect");
-
-
-// this file courtesy of the TurboAjax Group, licensed under a Dojo CLA
-
-// low-level delegation machinery
-dojo._listener = {
-       // create a dispatcher function
-       getDispatcher: function(){
-               // following comments pulled out-of-line to prevent cloning 
them 
-               // in the returned function.
-               // - indices (i) that are really in the array of listeners (ls) 
will 
-               //   not be in Array.prototype. This is the 'sparse array' trick
-               //   that keeps us safe from libs that take liberties with 
built-in 
-               //   objects
-               // - listener is invoked with current scope (this)
-               return function(){
-                       var ap=Array.prototype, c=arguments.callee, 
ls=c._listeners, t=c.target;
-                       // return value comes from original target function
-                       var r = t && t.apply(this, arguments);
-                       // make local copy of listener array so it is immutable 
during processing
-                       var lls;
-                                                                               
        lls = [].concat(ls);
-                                                       
-                       // invoke listeners after target function
-                       for(var i in lls){
-                               if(!(i in ap)){
-                                       lls[i].apply(this, arguments);
-                               }
-                       }
-                       // return value comes from original target function
-                       return r;
-               }
-       },
-       // add a listener to an object
-       add: function(/*Object*/ source, /*String*/ method, /*Function*/ 
listener){
-               // Whenever 'method' is invoked, 'listener' will have the same 
scope.
-               // Trying to supporting a context object for the listener led 
to 
-               // complexity. 
-               // Non trivial to provide 'once' functionality here
-               // because listener could be the result of a dojo.hitch call,
-               // in which case two references to the same hitch target would 
not
-               // be equivalent. 
-               source = source || dojo.global;
-               // The source method is either null, a dispatcher, or some 
other function
-               var f = source[method];
-               // Ensure a dispatcher
-               if(!f||!f._listeners){
-                       var d = dojo._listener.getDispatcher();
-                       // original target function is special
-                       d.target = f;
-                       // dispatcher holds a list of listeners
-                       d._listeners = []; 
-                       // redirect source to dispatcher
-                       f = source[method] = d;
-               }
-               // The contract is that a handle is returned that can 
-               // identify this listener for disconnect. 
-               //
-               // The type of the handle is private. Here is it implemented as 
Integer. 
-               // DOM event code has this same contract but handle is Function 
-               // in non-IE browsers.
-               //
-               // We could have separate lists of before and after listeners.
-               return f._listeners.push(listener) ; /*Handle*/
-       },
-       // remove a listener from an object
-       remove: function(/*Object*/ source, /*String*/ method, /*Handle*/ 
handle){
-               var f = (source||dojo.global)[method];
-               // remember that handle is the index+1 (0 is not a valid handle)
-               if(f && f._listeners && handle--){
-                       delete f._listeners[handle];
-               }
-       }
-};
-
-// Multiple delegation for arbitrary methods.
-
-// This unit knows nothing about DOM, 
-// but we include DOM aware 
-// documentation and dontFix
-// argument here to help the autodocs.
-// Actual DOM aware code is in event.js.
-
-dojo.connect = function(/*Object|null*/ obj, 
-                                               /*String*/ event, 
-                                               /*Object|null*/ context, 
-                                               /*String|Function*/ method,
-                                               /*Boolean*/ dontFix){
-       // summary:
-       //              Create a link that calls one function when another 
executes. 
-       //
-       // description:
-       //              Connects method to event, so that after event fires, 
method
-       //              does too. All connected functions are passed the same 
arguments as
-       //              the event function was initially called with. You may 
connect as
-       //              many methods to event as needed.
-       //
-       //              event must be a string. If obj is null, dojo.global is 
used.
-       //
-       //              null arguments may simply be omitted.
-       //
-       //              obj[event] can resolve to a function or undefined 
(null). 
-       //              If obj[event] is null, it is assigned a function.
-       //
-       //              The return value is a handle that is needed to 
-       //              remove this connection with dojo.disconnect.
-       //
-       // obj: 
-       //              The source object for the event function. 
-       //              Defaults to dojo.global if null.
-       //              If obj is a DOM node, the connection is delegated 
-       //              to the DOM event manager (unless dontFix is true).
-       //
-       // event:
-       //              String name of the event function in obj. 
-       //              I.e. identifies a property obj[event].
-       //
-       // context: 
-       //              The object that method will receive as "this".
-       //
-       //              If context is null and method is a function, then method
-       //              inherits the context of event.
-       //      
-       //              If method is a string then context must be the source 
-       //              object object for method (context[method]). If context 
is null,
-       //              dojo.global is used.
-       //
-       // method:
-       //              A function reference, or name of a function in context. 
-       //              The function identified by method fires after event 
does. 
-       //              method receives the same arguments as the event.
-       //              See context argument comments for information on 
method's scope.
-       //
-       // dontFix:
-       //              If obj is a DOM node, set dontFix to true to prevent 
delegation 
-       //              of this connection to the DOM event manager. 
-       //
-       // example:
-       //              When obj.onchange(), do ui.update():
-       //      |       dojo.connect(obj, "onchange", ui, "update");
-       //      |       dojo.connect(obj, "onchange", ui, ui.update); // same
-       //
-       // example:
-       //              Using return value for disconnect:
-       //      |       var link = dojo.connect(obj, "onchange", ui, "update");
-       //      |       ...
-       //      |       dojo.disconnect(link);
-       //
-       // example:
-       //              When onglobalevent executes, watcher.handler is invoked:
-       //      |       dojo.connect(null, "onglobalevent", watcher, "handler");
-       //
-       // example:
-       //              When ob.onCustomEvent executes, customEventHandler is 
invoked:
-       //      |       dojo.connect(ob, "onCustomEvent", null, 
"customEventHandler");
-       //      |       dojo.connect(ob, "onCustomEvent", 
"customEventHandler"); // same
-       //
-       // example:
-       //              When ob.onCustomEvent executes, customEventHandler is 
invoked
-       //              with the same scope (this):
-       //      |       dojo.connect(ob, "onCustomEvent", null, 
customEventHandler);
-       //      |       dojo.connect(ob, "onCustomEvent", customEventHandler); 
// same
-       //
-       // example:
-       //              When globalEvent executes, globalHandler is invoked
-       //              with the same scope (this):
-       //      |       dojo.connect(null, "globalEvent", null, globalHandler);
-       //      |       dojo.connect("globalEvent", globalHandler); // same
-
-       // normalize arguments
-       var a=arguments, args=[], i=0;
-       // if a[0] is a String, obj was ommited
-       args.push(dojo.isString(a[0]) ? null : a[i++], a[i++]);
-       // if the arg-after-next is a String or Function, context was NOT 
omitted
-       var a1 = a[i+1];
-       args.push(dojo.isString(a1)||dojo.isFunction(a1) ? a[i++] : null, 
a[i++]);
-       // absorb any additional arguments
-       for(var l=a.length; i<l; i++){  args.push(a[i]); }
-       // do the actual work
-       return dojo._connect.apply(this, args); /*Handle*/
-}
-
-// used by non-browser hostenvs. always overriden by event.js
-dojo._connect = function(obj, event, context, method){
-       var l=dojo._listener, h=l.add(obj, event, dojo.hitch(context, method)); 
-       return [obj, event, h, l]; // Handle
-}
-
-dojo.disconnect = function(/*Handle*/ handle){
-       // summary:
-       //              Remove a link created by dojo.connect.
-       // description:
-       //              Removes the connection between event and the method 
referenced by handle.
-       // handle:
-       //              the return value of the dojo.connect call that created 
the connection.
-       if(handle && handle[0] !== undefined){
-               dojo._disconnect.apply(this, handle);
-               // let's not keep this reference
-               delete handle[0];
-       }
-}
-
-dojo._disconnect = function(obj, event, handle, listener){
-       listener.remove(obj, event, handle);
-}
-
-// topic publish/subscribe
-
-dojo._topics = {};
-
-dojo.subscribe = function(/*String*/ topic, /*Object|null*/ context, 
/*String|Function*/ method){
-       //      summary:
-       //              Attach a listener to a named topic. The listener 
function is invoked whenever the
-       //              named topic is published (see: dojo.publish).
-       //              Returns a handle which is needed to unsubscribe this 
listener.
-       //      context:
-       //              Scope in which method will be invoked, or null for 
default scope.
-       //      method:
-       //              The name of a function in context, or a function 
reference. This is the function that
-       //              is invoked when topic is published.
-       //      example:
-       //      |       dojo.subscribe("alerts", null, function(caption, 
message){ alert(caption + "\n" + message); });
-       //      |       dojo.publish("alerts", [ "read this", "hello world" ]); 
                                                                                
                                                
-
-       // support for 2 argument invocation (omitting context) depends on hitch
-       return [topic, dojo._listener.add(dojo._topics, topic, 
dojo.hitch(context, method))]; /*Handle*/
-}
-
-dojo.unsubscribe = function(/*Handle*/ handle){
-       //      summary:
-       //              Remove a topic listener. 
-       //      handle:
-       //              The handle returned from a call to subscribe.
-       //      example:
-       //      |       var alerter = dojo.subscribe("alerts", null, 
function(caption, message){ alert(caption + "\n" + message); };
-       //      |       ...
-       //      |       dojo.unsubscribe(alerter);
-       if(handle){
-               dojo._listener.remove(dojo._topics, handle[0], handle[1]);
-       }
-}
-
-dojo.publish = function(/*String*/ topic, /*Array*/ args){
-       //      summary:
-       //              Invoke all listener method subscribed to topic.
-       //      topic:
-       //              The name of the topic to publish.
-       //      args:
-       //              An array of arguments. The arguments will be applied 
-       //              to each topic subscriber (as first class parameters, 
via apply).
-       //      example:
-       //      |       dojo.subscribe("alerts", null, function(caption, 
message){ alert(caption + "\n" + message); };
-       //      |       dojo.publish("alerts", [ "read this", "hello world" ]); 
-
-       // Note that args is an array, which is more efficient vs variable 
length
-       // argument list.  Ideally, var args would be implemented via Array
-       // throughout the APIs.
-       var f = dojo._topics[topic];
-       if(f){
-               f.apply(this, args||[]);
-       }
-}
-
-dojo.connectPublisher = function(      /*String*/ topic, 
-                                                                       
/*Object|null*/ obj, 
-                                                                       
/*String*/ event){
-       //      summary:
-       //              Ensure that everytime obj.event() is called, a message 
is published
-       //              on the topic. Returns a handle which can be passed to
-       //              dojo.disconnect() to disable subsequent automatic 
publication on
-       //              the topic.
-       //      topic:
-       //              The name of the topic to publish.
-       //      obj: 
-       //              The source object for the event function. Defaults to 
dojo.global
-       //              if null.
-       //      event:
-       //              The name of the event function in obj. 
-       //              I.e. identifies a property obj[event].
-       //      example:
-       //      |       dojo.connectPublisher("/ajax/start", dojo, "xhrGet");
-       var pf = function(){ dojo.publish(topic, arguments); }
-       return (event) ? dojo.connect(obj, event, pf) : dojo.connect(obj, pf); 
//Handle
-};
-
-}
-
-if(!dojo._hasResource["dojo._base.Deferred"]){ //_hasResource checks added by 
build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.Deferred"] = true;
-dojo.provide("dojo._base.Deferred");
-
-
-dojo.Deferred = function(/*Function?*/ canceller){
-       // summary:
-       //              Encapsulates a sequence of callbacks in response to a 
value that
-       //              may not yet be available.  This is modeled after the 
Deferred class
-       //              from Twisted <http://twistedmatrix.com>.
-       // description:
-       //              JavaScript has no threads, and even if it did, threads 
are hard.
-       //              Deferreds are a way of abstracting non-blocking events, 
such as the
-       //              final response to an XMLHttpRequest. Deferreds create a 
promise to
-       //              return a response a some point in the future and an 
easy way to
-       //              register your interest in receiving that response.
-       //
-       //              The most important methods for Deffered users are:
-       //
-       //                      * addCallback(handler)
-       //                      * addErrback(handler)
-       //                      * callback(result)
-       //                      * errback(result)
-       //
-       //              In general, when a function returns a Deferred, users 
then "fill
-       //              in" the second half of the contract by registering 
callbacks and
-       //              error handlers. You may register as many callback and 
errback
-       //              handlers as you like and they will be executed in the 
order
-       //              r

<TRUNCATED>

Reply via email to