Bug 387238 - Remove org.eclipse.orion.dojo
diff --git a/bundles/org.eclipse.orion.dojo/.project b/bundles/org.eclipse.orion.dojo/.project
deleted file mode 100644
index 9b55b62..0000000
--- a/bundles/org.eclipse.orion.dojo/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.orion.dojo</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.orion.dojo/META-INF/MANIFEST.MF b/bundles/org.eclipse.orion.dojo/META-INF/MANIFEST.MF
deleted file mode 100644
index 5092f9e..0000000
--- a/bundles/org.eclipse.orion.dojo/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Orion Dojo Layer
-Bundle-SymbolicName: org.eclipse.orion.dojo
-Bundle-Version: 1.6.1.qualifier
diff --git a/bundles/org.eclipse.orion.dojo/build.properties b/bundles/org.eclipse.orion.dojo/build.properties
deleted file mode 100644
index fbd23bc..0000000
--- a/bundles/org.eclipse.orion.dojo/build.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-bin.includes = META-INF/,\
-               static/
diff --git a/bundles/org.eclipse.orion.dojo/layer/layer.js b/bundles/org.eclipse.orion.dojo/layer/layer.js
deleted file mode 100644
index 2d7100e..0000000
--- a/bundles/org.eclipse.orion.dojo/layer/layer.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors: IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-dojo.provide("orion.dojo");
-
-dojo.require("dojo._base.json");  
-dojo.require("dojo.io.iframe");  
-dojo.require("dojo.hash");  
-dojo.require("dojo.data.ItemFileReadStore");  
-
-dojo.require("dijit.Dialog");  
-dojo.require("dijit.form.ComboBox");  
-dojo.require("dijit.form.CheckBox");  
-dojo.require("dijit.form.TextBox");  
-dojo.require("dijit.layout.BorderContainer");  
-dojo.require("dijit.layout.ContentPane");  
-dojo.require("dijit.form.Button");  
-dojo.require("dijit.form.DropDownButton");  
-dojo.require("dijit.form.FilteringSelect"); 
-dojo.require("dijit.Menu"); 
-dojo.require("dijit.MenuItem"); 
-dojo.require("dijit.ProgressBar");  
-dojo.require("dijit.Tree");  
-dojo.require("dijit.tree.ForestStoreModel");  
-dojo.require("dijit.tree.TreeStoreModel");  
-dojo.require("dijit._Widget");  
-dojo.require("dijit._Templated");  
-
-dojo.require("dojox.form.FileUploader");  
-
-//These requires are our own widgets, they perhaps deserve their own layer
-//which would need to be regenerated each build.
-//dojo.require("widgets.ImportDialog");  
-//dojo.require("widgets.NewItemDialog");  
-//dojo.require("widgets.OpenResourceDialog");  
-//dojo.require("widgets.RegistryTree");  
-//dojo.require("widgets.ExplorerTree"); 
-
diff --git a/bundles/org.eclipse.orion.dojo/layer/orion.profile.js b/bundles/org.eclipse.orion.dojo/layer/orion.profile.js
deleted file mode 100644
index 626f3c5..0000000
--- a/bundles/org.eclipse.orion.dojo/layer/orion.profile.js
+++ /dev/null
@@ -1,18 +0,0 @@
-dependencies = {
-	layers: [
-		{
-            name: "../orion/orion.js",
-            resourceName: "orion.dojo",
-            dependencies: [ "orion.layer" ],
-			layerDependencies: [ "dojo._base" ]
-        }
-    ],
-
-    prefixes: [
-        [ "dojo", "@DOJO_BUNDLE@/dojo" ],
-        [ "dijit", "@DOJO_BUNDLE@/dijit" ],
-        [ "dojox", "@DOJO_BUNDLE@/dojox" ],
-        [ "orion", "@ORION_DOJO@/layer" ]
-    ]
-}
-
diff --git a/bundles/org.eclipse.orion.dojo/runDojoBuild.xml b/bundles/org.eclipse.orion.dojo/runDojoBuild.xml
deleted file mode 100644
index 9e3f2e4..0000000
--- a/bundles/org.eclipse.orion.dojo/runDojoBuild.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="org.eclipse.orion.dojo" default="build" basedir=".">
-	
-	<property name="dojoBundle" value="${basedir}/../org.dojotoolkit" />
-	<property name="dojoBuilder" value="${basedir}/../org.dojotoolkit/util/buildscripts" />
-
-	<target name="build" >
-		<mkdir dir="${basedir}/temp/layer" />
-		<copy todir="${basedir}/temp/layer" >
-			<fileset dir="${basedir}/layer" />
-		</copy>
-		<replace file="${basedir}/temp/layer/orion.profile.js" >
-			<replacefilter token="@DOJO_BUNDLE@" value="${dojoBundle}" />
-			<replacefilter token="@ORION_DOJO@" value="${basedir}/temp" />
-		</replace>
-		
-		<java dir="${dojoBuilder}" fork="true" classname="org.mozilla.javascript.tools.shell.Main" >
-			<classpath>
-				<pathelement location="${dojoBuilder}/../shrinksafe/js.jar" />
-				<pathelement location="${dojoBuilder}/../shrinksafe/shrinksafe.jar" />
-			</classpath>
-			<arg value="${dojoBuilder}/build.js" />
-			<arg value="profileFile=${basedir}/temp/layer/orion.profile.js" />
-			<arg value="action=clean,release" />
-			<arg value="version=${dojoVersion}" />
-			<arg value="releaseName=" />
-			<arg value="releaseDir=${basedir}/temp/release" />
-		</java>
-		
-		<delete>
-			<fileset dir="${basedir}/static" includes="**" />
-		</delete>
-		<move todir="${basedir}/static" >
-			<fileset dir="${basedir}/temp/release/orion" includes="**" />
-		</move>
-		<delete dir="${basedir}/temp" />
-		<delete file="${basedir}/static/orion.profile.js" />
-	</target>
-</project>
\ No newline at end of file
diff --git a/bundles/org.eclipse.orion.dojo/static/layer.js b/bundles/org.eclipse.orion.dojo/static/layer.js
deleted file mode 100644
index 3d1b954..0000000
--- a/bundles/org.eclipse.orion.dojo/static/layer.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-	Copyright (c) 2004-2011, 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
-*/
-
-
-if(!dojo._hasResource["orion.dojo"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["orion.dojo"] = true;
-/*******************************************************************************
- * Copyright (c) 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors: IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-dojo.provide("orion.dojo");
-
-dojo.require("dojo._base.json");  
-dojo.require("dojo.io.iframe");  
-dojo.require("dojo.hash");  
-dojo.require("dojo.data.ItemFileReadStore");  
-
-dojo.require("dijit.Dialog");  
-dojo.require("dijit.form.ComboBox");  
-dojo.require("dijit.form.CheckBox");  
-dojo.require("dijit.form.TextBox");  
-dojo.require("dijit.layout.BorderContainer");  
-dojo.require("dijit.layout.ContentPane");  
-dojo.require("dijit.form.Button");  
-dojo.require("dijit.form.DropDownButton");  
-dojo.require("dijit.form.FilteringSelect"); 
-dojo.require("dijit.Menu"); 
-dojo.require("dijit.MenuItem"); 
-dojo.require("dijit.ProgressBar");  
-dojo.require("dijit.Tree");  
-dojo.require("dijit.tree.ForestStoreModel");  
-dojo.require("dijit.tree.TreeStoreModel");  
-dojo.require("dijit._Widget");  
-dojo.require("dijit._Templated");  
-
-dojo.require("dojox.form.FileUploader");  
-
-//These requires are our own widgets, they perhaps deserve their own layer
-//which would need to be regenerated each build.
-//dojo.require("widgets.ImportDialog");  
-//dojo.require("widgets.NewItemDialog");  
-//dojo.require("widgets.OpenResourceDialog");  
-//dojo.require("widgets.RegistryTree");  
-//dojo.require("widgets.ExplorerTree"); 
-
-
-}
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_ROOT.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_ROOT.js
deleted file mode 100644
index f8a88dc..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_ROOT.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_ROOT");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.ROOT");dijit.nls.loading.ROOT={"loadingState":"Loading...","errorState":"Sorry, an error occurred"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.ROOT");dijit.nls.common.ROOT={"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.ROOT");dijit.form.nls.validate.ROOT={"rangeMessage":"This value is out of range.","invalidMessage":"The value entered is not valid.","missingMessage":"This value is required."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.ROOT");dijit.form.nls.ComboBox.ROOT={"previousMessage":"Previous choices","nextMessage":"More choices"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.ROOT");dojo.cldr.nls.number.ROOT={"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤ #,##0.00","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat":"#,##0.###","decimal":".","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_ar.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_ar.js
deleted file mode 100644
index 5a21127..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_ar.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_ar");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.ar");dijit.nls.loading.ar={"loadingState":"جاري التحميل...","errorState":"عفوا، حدث خطأ"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.ar");dijit.nls.common.ar={"buttonOk":"حسنا","buttonCancel":"الغاء","buttonSave":"حفظ","itemClose":"اغلاق"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.ar");dijit.form.nls.validate.ar={"rangeMessage":"هذه القيمة ليس بالمدى الصحيح.","invalidMessage":"القيمة التي تم ادخالها غير صحيحة.","missingMessage":"يجب ادخال هذه القيمة."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.ar");dijit.form.nls.ComboBox.ar={"previousMessage":"الاختيارات السابقة","nextMessage":"مزيد من الاختيارات"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.ar");dojo.cldr.nls.number.ar={"group":"٬","percentSign":"٪","exponential":"اس","list":"؛","infinity":"∞","minusSign":"-","decimal":"٫","nan":"ليس رقم","perMille":"؉","decimalFormat":"#,##0.###;#,##0.###-","currencyFormat":"¤ #,##0.00;¤ #,##0.00-","plusSign":"+","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nativeZeroDigit":"0","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","percentFormat":"#,##0%","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_ca.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_ca.js
deleted file mode 100644
index 90c1227..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_ca.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_ca");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.ca");dijit.nls.loading.ca={"loadingState":"S'està carregant...","errorState":"Ens sap greu. S'ha produït un error."};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.ca");dijit.nls.common.ca={"buttonOk":"D'acord","buttonCancel":"Cancel·la","buttonSave":"Desa","itemClose":"Tanca"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.ca");dijit.form.nls.validate.ca={"rangeMessage":"Aquest valor és fora de l'interval","invalidMessage":"El valor introduït no és vàlid","missingMessage":"Aquest valor és necessari"};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.ca");dijit.form.nls.ComboBox.ca={"previousMessage":"Opcions anteriors","nextMessage":"Més opcions"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.ca");dojo.cldr.nls.number.ca={"group":".","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_cs.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_cs.js
deleted file mode 100644
index e59e3d2..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_cs.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_cs");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.cs");dijit.nls.loading.cs={"loadingState":"Probíhá načítání...","errorState":"Omlouváme se, došlo k chybě"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.cs");dijit.nls.common.cs={"buttonOk":"OK","buttonCancel":"Storno","buttonSave":"Uložit","itemClose":"Zavřít"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.cs");dijit.form.nls.validate.cs={"rangeMessage":"Tato hodnota je mimo rozsah.","invalidMessage":"Zadaná hodnota není platná.","missingMessage":"Tato hodnota je vyžadována."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.cs");dijit.form.nls.ComboBox.cs={"previousMessage":"Předchozí volby","nextMessage":"Další volby"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.cs");dojo.cldr.nls.number.cs={"group":" ","percentSign":"%","exponential":"E","percentFormat":"#,##0 %","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_da.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_da.js
deleted file mode 100644
index 7576dcd..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_da.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_da");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.da");dijit.nls.loading.da={"loadingState":"Indlæser...","errorState":"Der er opstået en fejl"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.da");dijit.nls.common.da={"buttonOk":"OK","buttonCancel":"Annullér","buttonSave":"Gem","itemClose":"Luk"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.da");dijit.form.nls.validate.da={"rangeMessage":"Værdien er uden for intervallet.","invalidMessage":"Den angivne værdi er ikke gyldig.","missingMessage":"Værdien er påkrævet."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.da");dijit.form.nls.ComboBox.da={"previousMessage":"Forrige valg","nextMessage":"Flere valg"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.da");dojo.cldr.nls.number.da={"group":".","percentSign":"%","exponential":"E","percentFormat":"#,##0 %","scientificFormat":"#E0","list":",","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_de-de.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_de-de.js
deleted file mode 100644
index 3dbb3d3..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_de-de.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_de-de");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.de_de");dijit.nls.loading.de_de={"loadingState":"Wird geladen...","errorState":"Es ist ein Fehler aufgetreten."};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.de_de");dijit.nls.common.de_de={"buttonOk":"OK","buttonCancel":"Abbrechen","buttonSave":"Speichern","itemClose":"Schließen"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.de_de");dijit.form.nls.validate.de_de={"rangeMessage":"Dieser Wert liegt außerhalb des gültigen Bereichs. ","invalidMessage":"Der eingegebene Wert ist ungültig. ","missingMessage":"Dieser Wert ist erforderlich."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.de_de");dijit.form.nls.ComboBox.de_de={"previousMessage":"Vorherige Auswahl","nextMessage":"Weitere Auswahlmöglichkeiten"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.de_de");dojo.cldr.nls.number.de_de={"group":".","percentSign":"%","exponential":"E","percentFormat":"#,##0 %","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_de.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_de.js
deleted file mode 100644
index 14e9206..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_de.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_de");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.de");dijit.nls.loading.de={"loadingState":"Wird geladen...","errorState":"Es ist ein Fehler aufgetreten."};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.de");dijit.nls.common.de={"buttonOk":"OK","buttonCancel":"Abbrechen","buttonSave":"Speichern","itemClose":"Schließen"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.de");dijit.form.nls.validate.de={"rangeMessage":"Dieser Wert liegt außerhalb des gültigen Bereichs. ","invalidMessage":"Der eingegebene Wert ist ungültig. ","missingMessage":"Dieser Wert ist erforderlich."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.de");dijit.form.nls.ComboBox.de={"previousMessage":"Vorherige Auswahl","nextMessage":"Weitere Auswahlmöglichkeiten"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.de");dojo.cldr.nls.number.de={"group":".","percentSign":"%","exponential":"E","percentFormat":"#,##0 %","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_el.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_el.js
deleted file mode 100644
index 898566e..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_el.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_el");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.el");dijit.nls.loading.el={"loadingState":"Φόρτωση...","errorState":"Σας ζητούμε συγνώμη, παρουσιάστηκε σφάλμα"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.el");dijit.nls.common.el={"buttonOk":"ΟΚ","buttonCancel":"Ακύρωση","buttonSave":"Αποθήκευση","itemClose":"Κλείσιμο"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.el");dijit.form.nls.validate.el={"rangeMessage":"Η τιμή αυτή δεν ανήκει στο εύρος έγκυρων τιμών.","invalidMessage":"Η τιμή που καταχωρήσατε δεν είναι έγκυρη.","missingMessage":"Η τιμή αυτή πρέπει απαραίτητα να καθοριστεί."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.el");dijit.form.nls.ComboBox.el={"previousMessage":"Προηγούμενες επιλογές","nextMessage":"Περισσότερες επιλογές"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.el");dojo.cldr.nls.number.el={"group":".","percentSign":"%","exponential":"e","percentFormat":"#,##0%","list":",","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","currencyFormat":"#,##0.00 ¤","plusSign":"+","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","decimalFormat":"#,##0.###","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_en-gb.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_en-gb.js
deleted file mode 100644
index 933fb27..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_en-gb.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_en-gb");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.en_gb");dijit.nls.loading.en_gb={"loadingState":"Loading...","errorState":"Sorry, an error occurred"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.en_gb");dijit.nls.common.en_gb={"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.en_gb");dijit.form.nls.validate.en_gb={"rangeMessage":"This value is out of range.","invalidMessage":"The value entered is not valid.","missingMessage":"This value is required."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.en_gb");dijit.form.nls.ComboBox.en_gb={"previousMessage":"Previous choices","nextMessage":"More choices"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.en_gb");dojo.cldr.nls.number.en_gb={"currencyFormat":"¤#,##0.00","group":",","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":".","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","plusSign":"+","decimalFormat-short":"000T","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_en-us.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_en-us.js
deleted file mode 100644
index 761fc74..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_en-us.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_en-us");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.en_us");dijit.nls.loading.en_us={"loadingState":"Loading...","errorState":"Sorry, an error occurred"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.en_us");dijit.nls.common.en_us={"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.en_us");dijit.form.nls.validate.en_us={"rangeMessage":"This value is out of range.","invalidMessage":"The value entered is not valid.","missingMessage":"This value is required."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.en_us");dijit.form.nls.ComboBox.en_us={"previousMessage":"Previous choices","nextMessage":"More choices"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.en_us");dojo.cldr.nls.number.en_us={"group":",","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":".","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-short":"000T","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_en.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_en.js
deleted file mode 100644
index 77aac32..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_en.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_en");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.en");dijit.nls.loading.en={"loadingState":"Loading...","errorState":"Sorry, an error occurred"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.en");dijit.nls.common.en={"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.en");dijit.form.nls.validate.en={"rangeMessage":"This value is out of range.","invalidMessage":"The value entered is not valid.","missingMessage":"This value is required."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.en");dijit.form.nls.ComboBox.en={"previousMessage":"Previous choices","nextMessage":"More choices"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.en");dojo.cldr.nls.number.en={"group":",","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":".","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-short":"000T","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_es-es.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_es-es.js
deleted file mode 100644
index 99dc459..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_es-es.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_es-es");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.es_es");dijit.nls.loading.es_es={"loadingState":"Cargando...","errorState":"Lo siento, se ha producido un error"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.es_es");dijit.nls.common.es_es={"buttonOk":"Aceptar","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Cerrar"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.es_es");dijit.form.nls.validate.es_es={"rangeMessage":"Este valor está fuera del intervalo.","invalidMessage":"El valor especificado no es válido.","missingMessage":"Este valor es necesario."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.es_es");dijit.form.nls.ComboBox.es_es={"previousMessage":"Opciones anteriores","nextMessage":"Más opciones"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.es_es");dojo.cldr.nls.number.es_es={"group":".","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤ #,##0.00","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_es.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_es.js
deleted file mode 100644
index 41dd111..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_es.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_es");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.es");dijit.nls.loading.es={"loadingState":"Cargando...","errorState":"Lo siento, se ha producido un error"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.es");dijit.nls.common.es={"buttonOk":"Aceptar","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Cerrar"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.es");dijit.form.nls.validate.es={"rangeMessage":"Este valor está fuera del intervalo.","invalidMessage":"El valor especificado no es válido.","missingMessage":"Este valor es necesario."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.es");dijit.form.nls.ComboBox.es={"previousMessage":"Opciones anteriores","nextMessage":"Más opciones"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.es");dojo.cldr.nls.number.es={"group":".","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤ #,##0.00","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_fi-fi.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_fi-fi.js
deleted file mode 100644
index bbba0a4..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_fi-fi.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_fi-fi");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.fi_fi");dijit.nls.loading.fi_fi={"loadingState":"Lataus on meneillään...","errorState":"On ilmennyt virhe."};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.fi_fi");dijit.nls.common.fi_fi={"buttonOk":"OK","buttonCancel":"Peruuta","buttonSave":"Tallenna","itemClose":"Sulje"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.fi_fi");dijit.form.nls.validate.fi_fi={"rangeMessage":"Tämä arvo on sallitun alueen ulkopuolella.","invalidMessage":"Annettu arvo ei kelpaa.","missingMessage":"Tämä arvo on pakollinen."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.fi_fi");dijit.form.nls.ComboBox.fi_fi={"previousMessage":"Edelliset valinnat","nextMessage":"Lisää valintoja"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.fi_fi");dojo.cldr.nls.number.fi_fi={"group":" ","percentSign":"%","exponential":"E","percentFormat":"#,##0 %","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"epäluku","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_fi.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_fi.js
deleted file mode 100644
index f926f24..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_fi.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_fi");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.fi");dijit.nls.loading.fi={"loadingState":"Lataus on meneillään...","errorState":"On ilmennyt virhe."};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.fi");dijit.nls.common.fi={"buttonOk":"OK","buttonCancel":"Peruuta","buttonSave":"Tallenna","itemClose":"Sulje"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.fi");dijit.form.nls.validate.fi={"rangeMessage":"Tämä arvo on sallitun alueen ulkopuolella.","invalidMessage":"Annettu arvo ei kelpaa.","missingMessage":"Tämä arvo on pakollinen."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.fi");dijit.form.nls.ComboBox.fi={"previousMessage":"Edelliset valinnat","nextMessage":"Lisää valintoja"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.fi");dojo.cldr.nls.number.fi={"group":" ","percentSign":"%","exponential":"E","percentFormat":"#,##0 %","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"epäluku","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_fr-fr.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_fr-fr.js
deleted file mode 100644
index 1212c74..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_fr-fr.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_fr-fr");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.fr_fr");dijit.nls.loading.fr_fr={"loadingState":"Chargement...","errorState":"Une erreur est survenue"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.fr_fr");dijit.nls.common.fr_fr={"buttonOk":"OK","buttonCancel":"Annuler","buttonSave":"Sauvegarder","itemClose":"Fermer"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.fr_fr");dijit.form.nls.validate.fr_fr={"rangeMessage":"Cette valeur n'est pas comprise dans la plage autorisée.","invalidMessage":"La valeur indiquée n'est pas correcte.","missingMessage":"Cette valeur est requise."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.fr_fr");dijit.form.nls.ComboBox.fr_fr={"previousMessage":"Choix précédents","nextMessage":"Plus de choix"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.fr_fr");dojo.cldr.nls.number.fr_fr={"group":" ","percentSign":"%","exponential":"E","percentFormat":"#,##0 %","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_fr.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_fr.js
deleted file mode 100644
index 306f459..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_fr.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_fr");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.fr");dijit.nls.loading.fr={"loadingState":"Chargement...","errorState":"Une erreur est survenue"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.fr");dijit.nls.common.fr={"buttonOk":"OK","buttonCancel":"Annuler","buttonSave":"Sauvegarder","itemClose":"Fermer"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.fr");dijit.form.nls.validate.fr={"rangeMessage":"Cette valeur n'est pas comprise dans la plage autorisée.","invalidMessage":"La valeur indiquée n'est pas correcte.","missingMessage":"Cette valeur est requise."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.fr");dijit.form.nls.ComboBox.fr={"previousMessage":"Choix précédents","nextMessage":"Plus de choix"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.fr");dojo.cldr.nls.number.fr={"group":" ","percentSign":"%","exponential":"E","percentFormat":"#,##0 %","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_he-il.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_he-il.js
deleted file mode 100644
index 19f7a7c..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_he-il.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_he-il");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.he_il");dijit.nls.loading.he_il={"loadingState":"טעינה...‏","errorState":"אירעה שגיאה"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.he_il");dijit.nls.common.he_il={"buttonOk":"אישור","buttonCancel":"ביטול","buttonSave":"שמירה","itemClose":"סגירה"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.he_il");dijit.form.nls.validate.he_il={"rangeMessage":"הערך מחוץ לטווח.","invalidMessage":"הערך שצוין אינו חוקי.","missingMessage":"זהו ערך דרוש."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.he_il");dijit.form.nls.ComboBox.he_il={"previousMessage":"האפשרויות הקודמות","nextMessage":"אפשרויות נוספות"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.he_il");dojo.cldr.nls.number.he_il={"group":",","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":".","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_he.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_he.js
deleted file mode 100644
index 1167f08..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_he.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_he");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.he");dijit.nls.loading.he={"loadingState":"טעינה...‏","errorState":"אירעה שגיאה"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.he");dijit.nls.common.he={"buttonOk":"אישור","buttonCancel":"ביטול","buttonSave":"שמירה","itemClose":"סגירה"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.he");dijit.form.nls.validate.he={"rangeMessage":"הערך מחוץ לטווח.","invalidMessage":"הערך שצוין אינו חוקי.","missingMessage":"זהו ערך דרוש."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.he");dijit.form.nls.ComboBox.he={"previousMessage":"האפשרויות הקודמות","nextMessage":"אפשרויות נוספות"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.he");dojo.cldr.nls.number.he={"group":",","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":".","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_hu.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_hu.js
deleted file mode 100644
index 86375d5..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_hu.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_hu");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.hu");dijit.nls.loading.hu={"loadingState":"Betöltés...","errorState":"Sajnálom, hiba történt"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.hu");dijit.nls.common.hu={"buttonOk":"OK","buttonCancel":"Mégse","buttonSave":"Mentés","itemClose":"Bezárás"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.hu");dijit.form.nls.validate.hu={"rangeMessage":"Az érték kívül van a megengedett tartományon.","invalidMessage":"A megadott érték érvénytelen.","missingMessage":"Meg kell adni egy értéket."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.hu");dijit.form.nls.ComboBox.hu={"previousMessage":"Előző menüpontok","nextMessage":"További menüpontok"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.hu");dojo.cldr.nls.number.hu={"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","percentFormat":"#,##0%","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_it-it.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_it-it.js
deleted file mode 100644
index 4d8b951..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_it-it.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_it-it");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.it_it");dijit.nls.loading.it_it={"loadingState":"Caricamento in corso...","errorState":"Si è verificato un errore"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.it_it");dijit.nls.common.it_it={"buttonOk":"OK","buttonCancel":"Annulla","buttonSave":"Salva","itemClose":"Chiudi"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.it_it");dijit.form.nls.validate.it_it={"rangeMessage":"Questo valore non è compreso nell'intervallo.","invalidMessage":"Il valore immesso non è valido.","missingMessage":"Questo valore è obbligatorio."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.it_it");dijit.form.nls.ComboBox.it_it={"previousMessage":"Scelte precedenti","nextMessage":"Altre scelte"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.it_it");dojo.cldr.nls.number.it_it={"decimalFormat":"#,##0.###","group":".","scientificFormat":"#E0","percentFormat":"#,##0%","currencyFormat":"¤ #,##0.00","decimal":",","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_it.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_it.js
deleted file mode 100644
index 8bc641e..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_it.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_it");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.it");dijit.nls.loading.it={"loadingState":"Caricamento in corso...","errorState":"Si è verificato un errore"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.it");dijit.nls.common.it={"buttonOk":"OK","buttonCancel":"Annulla","buttonSave":"Salva","itemClose":"Chiudi"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.it");dijit.form.nls.validate.it={"rangeMessage":"Questo valore non è compreso nell'intervallo.","invalidMessage":"Il valore immesso non è valido.","missingMessage":"Questo valore è obbligatorio."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.it");dijit.form.nls.ComboBox.it={"previousMessage":"Scelte precedenti","nextMessage":"Altre scelte"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.it");dojo.cldr.nls.number.it={"decimalFormat":"#,##0.###","group":".","scientificFormat":"#E0","percentFormat":"#,##0%","currencyFormat":"¤ #,##0.00","decimal":",","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_ja-jp.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_ja-jp.js
deleted file mode 100644
index 5b13e1b..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_ja-jp.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_ja-jp");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.ja_jp");dijit.nls.loading.ja_jp={"loadingState":"ロード中...","errorState":"エラーが発生しました。"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.ja_jp");dijit.nls.common.ja_jp={"buttonOk":"OK","buttonCancel":"キャンセル","buttonSave":"保存","itemClose":"閉じる"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.ja_jp");dijit.form.nls.validate.ja_jp={"rangeMessage":"この値は範囲外です。","invalidMessage":"入力した値は無効です。","missingMessage":"この値は必須です。"};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.ja_jp");dijit.form.nls.ComboBox.ja_jp={"previousMessage":"以前の選択項目","nextMessage":"追加の選択項目"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.ja_jp");dojo.cldr.nls.number.ja_jp={"decimalFormat":"#,##0.###","group":",","scientificFormat":"#E0","percentFormat":"#,##0%","currencyFormat":"¤#,##0.00","decimal":".","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_ja.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_ja.js
deleted file mode 100644
index 00a68ee..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_ja.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_ja");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.ja");dijit.nls.loading.ja={"loadingState":"ロード中...","errorState":"エラーが発生しました。"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.ja");dijit.nls.common.ja={"buttonOk":"OK","buttonCancel":"キャンセル","buttonSave":"保存","itemClose":"閉じる"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.ja");dijit.form.nls.validate.ja={"rangeMessage":"この値は範囲外です。","invalidMessage":"入力した値は無効です。","missingMessage":"この値は必須です。"};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.ja");dijit.form.nls.ComboBox.ja={"previousMessage":"以前の選択項目","nextMessage":"追加の選択項目"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.ja");dojo.cldr.nls.number.ja={"decimalFormat":"#,##0.###","group":",","scientificFormat":"#E0","percentFormat":"#,##0%","currencyFormat":"¤#,##0.00","decimal":".","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_ko-kr.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_ko-kr.js
deleted file mode 100644
index 904c1c7..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_ko-kr.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_ko-kr");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.ko_kr");dijit.nls.loading.ko_kr={"loadingState":"로드 중...","errorState":"죄송합니다. 오류가 발생했습니다."};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.ko_kr");dijit.nls.common.ko_kr={"buttonOk":"확인","buttonCancel":"취소","buttonSave":"저장","itemClose":"닫기"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.ko_kr");dijit.form.nls.validate.ko_kr={"rangeMessage":"이 값은 범위를 벗어납니다.","invalidMessage":"입력된 값이 올바르지 않습니다.","missingMessage":"이 값은 필수입니다."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.ko_kr");dijit.form.nls.ComboBox.ko_kr={"previousMessage":"이전 선택사항","nextMessage":"기타 선택사항"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.ko_kr");dojo.cldr.nls.number.ko_kr={"group":",","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":".","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_ko.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_ko.js
deleted file mode 100644
index f42be22..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_ko.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_ko");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.ko");dijit.nls.loading.ko={"loadingState":"로드 중...","errorState":"죄송합니다. 오류가 발생했습니다."};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.ko");dijit.nls.common.ko={"buttonOk":"확인","buttonCancel":"취소","buttonSave":"저장","itemClose":"닫기"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.ko");dijit.form.nls.validate.ko={"rangeMessage":"이 값은 범위를 벗어납니다.","invalidMessage":"입력된 값이 올바르지 않습니다.","missingMessage":"이 값은 필수입니다."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.ko");dijit.form.nls.ComboBox.ko={"previousMessage":"이전 선택사항","nextMessage":"기타 선택사항"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.ko");dojo.cldr.nls.number.ko={"group":",","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":".","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_nb.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_nb.js
deleted file mode 100644
index 680911d..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_nb.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_nb");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.nb");dijit.nls.loading.nb={"loadingState":"Laster inn...","errorState":"Det oppsto en feil"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.nb");dijit.nls.common.nb={"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Lagre","itemClose":"Lukk"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.nb");dijit.form.nls.validate.nb={"rangeMessage":"Denne verdien er utenfor gyldig område.","invalidMessage":"Den angitte verdien er ikke gyldig.","missingMessage":"Denne verdien er obligatorisk."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.nb");dijit.form.nls.ComboBox.nb={"previousMessage":"Tidligere valg","nextMessage":"Flere valg"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.nb");dojo.cldr.nls.number.nb={"group":" ","percentSign":"%","exponential":"E","percentFormat":"#,##0 %","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤ #,##0.00","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_nl-nl.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_nl-nl.js
deleted file mode 100644
index df0a3ba..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_nl-nl.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_nl-nl");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.nl_nl");dijit.nls.loading.nl_nl={"loadingState":"Bezig met laden...","errorState":"Er is een fout opgetreden"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.nl_nl");dijit.nls.common.nl_nl={"buttonOk":"OK","buttonCancel":"Annuleren","buttonSave":"Opslaan","itemClose":"Sluiten"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.nl_nl");dijit.form.nls.validate.nl_nl={"rangeMessage":"Deze waarde is niet toegestaan.","invalidMessage":"De opgegeven waarde is ongeldig.","missingMessage":"Deze waarde is verplicht."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.nl_nl");dijit.form.nls.ComboBox.nl_nl={"previousMessage":"Eerdere opties","nextMessage":"Meer opties"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.nl_nl");dojo.cldr.nls.number.nl_nl={"group":".","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤ #,##0.00;¤ #,##0.00-","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_nl.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_nl.js
deleted file mode 100644
index 185dc5b..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_nl.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_nl");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.nl");dijit.nls.loading.nl={"loadingState":"Bezig met laden...","errorState":"Er is een fout opgetreden"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.nl");dijit.nls.common.nl={"buttonOk":"OK","buttonCancel":"Annuleren","buttonSave":"Opslaan","itemClose":"Sluiten"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.nl");dijit.form.nls.validate.nl={"rangeMessage":"Deze waarde is niet toegestaan.","invalidMessage":"De opgegeven waarde is ongeldig.","missingMessage":"Deze waarde is verplicht."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.nl");dijit.form.nls.ComboBox.nl={"previousMessage":"Eerdere opties","nextMessage":"Meer opties"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.nl");dojo.cldr.nls.number.nl={"group":".","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤ #,##0.00;¤ #,##0.00-","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_pl.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_pl.js
deleted file mode 100644
index 5a310ec..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_pl.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_pl");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.pl");dijit.nls.loading.pl={"loadingState":"Ładowanie...","errorState":"Niestety, wystąpił błąd"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.pl");dijit.nls.common.pl={"buttonOk":"OK","buttonCancel":"Anuluj","buttonSave":"Zapisz","itemClose":"Zamknij"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.pl");dijit.form.nls.validate.pl={"rangeMessage":"Ta wartość jest spoza zakresu.","invalidMessage":"Wprowadzona wartość jest niepoprawna.","missingMessage":"Ta wartość jest wymagana."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.pl");dijit.form.nls.ComboBox.pl={"previousMessage":"Poprzednie wybory","nextMessage":"Więcej wyborów"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.pl");dojo.cldr.nls.number.pl={"group":" ","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_pt-br.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_pt-br.js
deleted file mode 100644
index 056c872..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_pt-br.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_pt-br");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.pt_br");dijit.nls.loading.pt_br={"loadingState":"Carregando...","errorState":"Desculpe, ocorreu um erro"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.pt_br");dijit.nls.common.pt_br={"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Salvar","itemClose":"Fechar"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.pt_br");dijit.form.nls.validate.pt_br={"rangeMessage":"Este valor está fora do intervalo. ","invalidMessage":"O valor inserido não é válido.","missingMessage":"Este valor é necessário."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.pt_br");dijit.form.nls.ComboBox.pt_br={"previousMessage":"Opções anteriores","nextMessage":"Mais opções"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.pt_br");dojo.cldr.nls.number.pt_br={"group":".","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_pt-pt.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_pt-pt.js
deleted file mode 100644
index 18e5667..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_pt-pt.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_pt-pt");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.pt_pt");dijit.nls.loading.pt_pt={"loadingState":"A carregar...","errorState":"Lamentamos, mas ocorreu um erro"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.pt_pt");dijit.nls.common.pt_pt={"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Fechar"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.pt_pt");dijit.form.nls.validate.pt_pt={"rangeMessage":"Este valor encontra-se fora do intervalo.","invalidMessage":"O valor introduzido não é válido.","missingMessage":"Este valor é requerido."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.pt_pt");dijit.form.nls.ComboBox.pt_pt={"previousMessage":"Opções anteriores","nextMessage":"Mais opções"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.pt_pt");dojo.cldr.nls.number.pt_pt={"currencyFormat":"#,##0.00 ¤","group":" ","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_pt.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_pt.js
deleted file mode 100644
index 6ce938d..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_pt.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_pt");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.pt");dijit.nls.loading.pt={"loadingState":"Carregando...","errorState":"Desculpe, ocorreu um erro"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.pt");dijit.nls.common.pt={"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Salvar","itemClose":"Fechar"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.pt");dijit.form.nls.validate.pt={"rangeMessage":"Este valor está fora do intervalo. ","invalidMessage":"O valor inserido não é válido.","missingMessage":"Este valor é necessário."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.pt");dijit.form.nls.ComboBox.pt={"previousMessage":"Opções anteriores","nextMessage":"Mais opções"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.pt");dojo.cldr.nls.number.pt={"group":".","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_ru.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_ru.js
deleted file mode 100644
index c6c1777..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_ru.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_ru");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.ru");dijit.nls.loading.ru={"loadingState":"Загрузка...","errorState":"Извините, возникла ошибка"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.ru");dijit.nls.common.ru={"buttonOk":"ОК","buttonCancel":"Отмена","buttonSave":"Сохранить","itemClose":"Закрыть"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.ru");dijit.form.nls.validate.ru={"rangeMessage":"Это значение вне диапазона.","invalidMessage":"Указано недопустимое значение.","missingMessage":"Это обязательное значение."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.ru");dijit.form.nls.ComboBox.ru={"previousMessage":"Предыдущие варианты","nextMessage":"Следующие варианты"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.ru");dojo.cldr.nls.number.ru={"group":" ","percentSign":"%","exponential":"E","percentFormat":"#,##0 %","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_sk.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_sk.js
deleted file mode 100644
index 573afe8..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_sk.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_sk");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.sk");dijit.nls.loading.sk={"loadingState":"Zavádzanie...","errorState":"Nastala chyba"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.sk");dijit.nls.common.sk={"buttonOk":"OK","buttonCancel":"Zrušiť","buttonSave":"Uložiť","itemClose":"Zatvoriť"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.sk");dijit.form.nls.validate.sk={"rangeMessage":"Táto hodnota je mimo rozsah.","invalidMessage":"Zadaná hodnota nie je platná.","missingMessage":"Táto hodnota je vyžadovaná."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.sk");dijit.form.nls.ComboBox.sk={"previousMessage":"Predchádzajúce voľby","nextMessage":"Ďalšie voľby"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.sk");dojo.cldr.nls.number.sk={"currencyFormat":"#,##0.00 ¤","group":" ","decimal":",","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","percentFormat":"#,##0%","decimalFormat":"#,##0.###","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_sl.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_sl.js
deleted file mode 100644
index 27273d8..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_sl.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_sl");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.sl");dijit.nls.loading.sl={"loadingState":"Nalaganje ...","errorState":"Oprostite, prišlo je do napake."};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.sl");dijit.nls.common.sl={"buttonOk":"V redu","buttonCancel":"Prekliči","buttonSave":"Shrani","itemClose":"Zapri"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.sl");dijit.form.nls.validate.sl={"rangeMessage":"Ta vrednost je izven območja.","invalidMessage":"Vnesena vrednost ni veljavna.","missingMessage":"Ta vrednost je zahtevana."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.sl");dijit.form.nls.ComboBox.sl={"previousMessage":"Prejšnje izbire","nextMessage":"Dodatne izbire"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.sl");dojo.cldr.nls.number.sl={"group":".","percentSign":"%","exponential":"e","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_sv.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_sv.js
deleted file mode 100644
index 7cd3b1c..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_sv.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_sv");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.sv");dijit.nls.loading.sv={"loadingState":"Läser in...","errorState":"Det uppstod ett fel."};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.sv");dijit.nls.common.sv={"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Spara","itemClose":"Stäng"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.sv");dijit.form.nls.validate.sv={"rangeMessage":"Värdet är utanför intervallet.","invalidMessage":"Det angivna värdet är ogiltigt.","missingMessage":"Värdet är obligatoriskt."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.sv");dijit.form.nls.ComboBox.sv={"previousMessage":"Föregående alternativ","nextMessage":"Fler alternativ"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.sv");dojo.cldr.nls.number.sv={"group":" ","percentSign":"%","exponential":"×10^","percentFormat":"#,##0 %","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"−","decimal":",","nan":"¤¤¤","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_th.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_th.js
deleted file mode 100644
index 8621ebd..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_th.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_th");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.th");dijit.nls.loading.th={"loadingState":"กำลังโหลด...","errorState":"ขออภัย เกิดข้อผิดพลาด"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.th");dijit.nls.common.th={"buttonOk":"ตกลง","buttonCancel":"ยกเลิก","buttonSave":"บันทึก","itemClose":"ปิด"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.th");dijit.form.nls.validate.th={"rangeMessage":"ค่านี้เกินช่วง","invalidMessage":"ค่าที่ป้อนไม่ถูกต้อง","missingMessage":"จำเป็นต้องมีค่านี้"};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.th");dijit.form.nls.ComboBox.th={"previousMessage":"การเลือกก่อนหน้า","nextMessage":"การเลือกเพิ่มเติม"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.th");dojo.cldr.nls.number.th={"group":",","percentSign":"%","exponential":"E","percentFormat":"#,##0%","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":".","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;¤-#,##0.00","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_tr.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_tr.js
deleted file mode 100644
index 9003533..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_tr.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_tr");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.tr");dijit.nls.loading.tr={"loadingState":"Yükleniyor...","errorState":"Üzgünüz, bir hata oluştu"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.tr");dijit.nls.common.tr={"buttonOk":"Tamam","buttonCancel":"İptal","buttonSave":"Kaydet","itemClose":"Kapat"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.tr");dijit.form.nls.validate.tr={"rangeMessage":"Bu değer aralık dışında.","invalidMessage":"Girilen değer geçersiz.","missingMessage":"Bu değer gerekli."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.tr");dijit.form.nls.ComboBox.tr={"previousMessage":"Önceki seçenekler","nextMessage":"Diğer seçenekler"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.tr");dojo.cldr.nls.number.tr={"group":".","percentSign":"%","exponential":"E","percentFormat":"% #,##0","scientificFormat":"#E0","list":";","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":",","nan":"NaN","nativeZeroDigit":"0","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_xx.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_xx.js
deleted file mode 100644
index ec783db..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_xx.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_xx");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.xx");dijit.nls.loading.xx={"loadingState":"Loading...","errorState":"Sorry, an error occurred"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.xx");dijit.nls.common.xx={"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.xx");dijit.form.nls.validate.xx={"rangeMessage":"This value is out of range.","invalidMessage":"The value entered is not valid.","missingMessage":"This value is required."};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.xx");dijit.form.nls.ComboBox.xx={"previousMessage":"Previous choices","nextMessage":"More choices"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.xx");dojo.cldr.nls.number.xx={"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤ #,##0.00","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat":"#,##0.###","decimal":".","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_zh-cn.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_zh-cn.js
deleted file mode 100644
index d8aec14..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_zh-cn.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_zh-cn");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.zh_cn");dijit.nls.loading.zh_cn={"loadingState":"正在加载...","errorState":"对不起,发生了错误"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.zh_cn");dijit.nls.common.zh_cn={"buttonOk":"确定","buttonCancel":"取消","buttonSave":"保存","itemClose":"关闭"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.zh_cn");dijit.form.nls.validate.zh_cn={"rangeMessage":"此值超出范围。","invalidMessage":"输入的值无效。","missingMessage":"此值是必需值。"};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.zh_cn");dijit.form.nls.ComboBox.zh_cn={"previousMessage":"先前选项","nextMessage":"更多选项"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.zh_cn");dojo.cldr.nls.number.zh_cn={"decimalFormat":"#,##0.###","group":",","scientificFormat":"#E0","percentFormat":"#,##0%","currencyFormat":"¤#,##0.00","decimal":".","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_zh-tw.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_zh-tw.js
deleted file mode 100644
index 4e04686..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_zh-tw.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_zh-tw");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.zh_tw");dijit.nls.loading.zh_tw={"loadingState":"載入中...","errorState":"抱歉,發生錯誤"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.zh_tw");dijit.nls.common.zh_tw={"buttonOk":"確定","buttonCancel":"取消","buttonSave":"儲存","itemClose":"關閉"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.zh_tw");dijit.form.nls.validate.zh_tw={"rangeMessage":"此值超出範圍。","invalidMessage":"輸入的值無效。","missingMessage":"必須提供此值。"};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.zh_tw");dijit.form.nls.ComboBox.zh_tw={"previousMessage":"前一個選擇項","nextMessage":"其他選擇項"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.zh_tw");dojo.cldr.nls.number.zh_tw={"decimalFormat":"#,##0.###","group":",","scientificFormat":"#E0","percentFormat":"#,##0%","currencyFormat":"¤#,##0.00","decimal":".","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};
diff --git a/bundles/org.eclipse.orion.dojo/static/nls/orion_zh.js b/bundles/org.eclipse.orion.dojo/static/nls/orion_zh.js
deleted file mode 100644
index 2c589e1..0000000
--- a/bundles/org.eclipse.orion.dojo/static/nls/orion_zh.js
+++ /dev/null
@@ -1 +0,0 @@
-dojo.provide("orion.nls.orion_zh");dojo.provide("dijit.nls.loading");dijit.nls.loading._built=true;dojo.provide("dijit.nls.loading.zh");dijit.nls.loading.zh={"loadingState":"正在加载...","errorState":"对不起,发生了错误"};dojo.provide("dijit.nls.common");dijit.nls.common._built=true;dojo.provide("dijit.nls.common.zh");dijit.nls.common.zh={"buttonOk":"确定","buttonCancel":"取消","buttonSave":"保存","itemClose":"关闭"};dojo.provide("dijit.form.nls.validate");dijit.form.nls.validate._built=true;dojo.provide("dijit.form.nls.validate.zh");dijit.form.nls.validate.zh={"rangeMessage":"此值超出范围。","invalidMessage":"输入的值无效。","missingMessage":"此值是必需值。"};dojo.provide("dijit.form.nls.ComboBox");dijit.form.nls.ComboBox._built=true;dojo.provide("dijit.form.nls.ComboBox.zh");dijit.form.nls.ComboBox.zh={"previousMessage":"先前选项","nextMessage":"更多选项"};dojo.provide("dojo.cldr.nls.number");dojo.cldr.nls.number._built=true;dojo.provide("dojo.cldr.nls.number.zh");dojo.cldr.nls.number.zh={"decimalFormat":"#,##0.###","group":",","scientificFormat":"#E0","percentFormat":"#,##0%","currencyFormat":"¤#,##0.00","decimal":".","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};
diff --git a/bundles/org.eclipse.orion.dojo/static/orion.js b/bundles/org.eclipse.orion.dojo/static/orion.js
deleted file mode 100644
index 4f08a95..0000000
--- a/bundles/org.eclipse.orion.dojo/static/orion.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
-	Copyright (c) 2004-2011, 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 an optimized version of Dojo, built for deployment and not for
-	development. To get sources and documentation, please visit:
-
-		http://dojotoolkit.org
-*/
-
-dojo.provide("orion.dojo");if(!dojo._hasResource["dojo.io.iframe"]){dojo._hasResource["dojo.io.iframe"]=true;dojo.provide("dojo.io.iframe");dojo.getObject("io",true,dojo);dojo.io.iframe={create:function(_1,_2,_3){if(window[_1]){return window[_1];}if(window.frames[_1]){return window.frames[_1];}var _4=null;var _5=_3;if(!_5){if(dojo.config["useXDomain"]&&!dojo.config["dojoBlankHtmlUrl"]){console.warn("dojo.io.iframe.create: When using cross-domain Dojo builds,"+" please save dojo/resources/blank.html to your domain and set djConfig.dojoBlankHtmlUrl"+" to the path on your domain to blank.html");}_5=(dojo.config["dojoBlankHtmlUrl"]||dojo.moduleUrl("dojo","resources/blank.html"));}var _4=dojo.place("<iframe id=\""+_1+"\" name=\""+_1+"\" src=\""+_5+"\" onload=\""+_2+"\" style=\"position: absolute; left: 1px; top: 1px; height: 1px; width: 1px; visibility: hidden\">",dojo.body());window[_1]=_4;return _4;},setSrc:function(_6,_7,_8){try{if(!_8){if(dojo.isWebKit){_6.location=_7;}else{frames[_6.name].location=_7;}}else{var _9;if(dojo.isIE||dojo.isWebKit){_9=_6.contentWindow.document;}else{_9=_6.contentWindow;}if(!_9){_6.location=_7;return;}else{_9.location.replace(_7);}}}catch(e){console.log("dojo.io.iframe.setSrc: ",e);}},doc:function(_a){var _b=_a.contentDocument||(((_a.name)&&(_a.document)&&(dojo.doc.getElementsByTagName("iframe")[_a.name].contentWindow)&&(dojo.doc.getElementsByTagName("iframe")[_a.name].contentWindow.document)))||((_a.name)&&(dojo.doc.frames[_a.name])&&(dojo.doc.frames[_a.name].document))||null;return _b;},send:function(_c){if(!this["_frame"]){this._frame=this.create(this._iframeName,dojo._scopeName+".io.iframe._iframeOnload();");}var _d=dojo._ioSetArgs(_c,function(_e){_e.canceled=true;_e.ioArgs._callNext();},function(_f){var _10=null;try{var _11=_f.ioArgs;var dii=dojo.io.iframe;var ifd=dii.doc(dii._frame);var _12=_11.handleAs;_10=ifd;if(_12!="html"){if(_12=="xml"){if(dojo.isIE<9||(dojo.isIE&&dojo.isQuirks)){dojo.query("a",dii._frame.contentWindow.document.documentElement).orphan();var _13=(dii._frame.contentWindow.document).documentElement.innerText;_13=_13.replace(/>\s+</g,"><");_13=dojo.trim(_13);var _14={responseText:_13};_10=dojo._contentHandlers["xml"](_14);}}else{_10=ifd.getElementsByTagName("textarea")[0].value;if(_12=="json"){_10=dojo.fromJson(_10);}else{if(_12=="javascript"){_10=dojo.eval(_10);}}}}}catch(e){_10=e;}finally{_11._callNext();}return _10;},function(_15,dfd){dfd.ioArgs._hasError=true;dfd.ioArgs._callNext();return _15;});_d.ioArgs._callNext=function(){if(!this["_calledNext"]){this._calledNext=true;dojo.io.iframe._currentDfd=null;dojo.io.iframe._fireNextRequest();}};this._dfdQueue.push(_d);this._fireNextRequest();dojo._ioWatch(_d,function(dfd){return !dfd.ioArgs["_hasError"];},function(dfd){return (!!dfd.ioArgs["_finished"]);},function(dfd){if(dfd.ioArgs._finished){dfd.callback(dfd);}else{dfd.errback(new Error("Invalid dojo.io.iframe request state"));}});return _d;},_currentDfd:null,_dfdQueue:[],_iframeName:dojo._scopeName+"IoIframe",_fireNextRequest:function(){try{if((this._currentDfd)||(this._dfdQueue.length==0)){return;}do{var dfd=this._currentDfd=this._dfdQueue.shift();}while(dfd&&dfd.canceled&&this._dfdQueue.length);if(!dfd||dfd.canceled){this._currentDfd=null;return;}var _16=dfd.ioArgs;var _17=_16.args;_16._contentToClean=[];var fn=dojo.byId(_17["form"]);var _18=_17["content"]||{};if(fn){if(_18){var _19=function(_1a,_1b){dojo.create("input",{type:"hidden",name:_1a,value:_1b},fn);_16._contentToClean.push(_1a);};for(var x in _18){var val=_18[x];if(dojo.isArray(val)&&val.length>1){var i;for(i=0;i<val.length;i++){_19(x,val[i]);}}else{if(!fn[x]){_19(x,val);}else{fn[x].value=val;}}}}var _1c=fn.getAttributeNode("action");var _1d=fn.getAttributeNode("method");var _1e=fn.getAttributeNode("target");if(_17["url"]){_16._originalAction=_1c?_1c.value:null;if(_1c){_1c.value=_17.url;}else{fn.setAttribute("action",_17.url);}}if(!_1d||!_1d.value){if(_1d){_1d.value=(_17["method"])?_17["method"]:"post";}else{fn.setAttribute("method",(_17["method"])?_17["method"]:"post");}}_16._originalTarget=_1e?_1e.value:null;if(_1e){_1e.value=this._iframeName;}else{fn.setAttribute("target",this._iframeName);}fn.target=this._iframeName;dojo._ioNotifyStart(dfd);fn.submit();}else{var _1f=_17.url+(_17.url.indexOf("?")>-1?"&":"?")+_16.query;dojo._ioNotifyStart(dfd);this.setSrc(this._frame,_1f,true);}}catch(e){dfd.errback(e);}},_iframeOnload:function(){var dfd=this._currentDfd;if(!dfd){this._fireNextRequest();return;}var _20=dfd.ioArgs;var _21=_20.args;var _22=dojo.byId(_21.form);if(_22){var _23=_20._contentToClean;for(var i=0;i<_23.length;i++){var key=_23[i];for(var j=0;j<_22.childNodes.length;j++){var _24=_22.childNodes[j];if(_24.name==key){dojo.destroy(_24);break;}}}if(_20["_originalAction"]){_22.setAttribute("action",_20._originalAction);}if(_20["_originalTarget"]){_22.setAttribute("target",_20._originalTarget);_22.target=_20._originalTarget;}}_20._finished=true;}};}if(!dojo._hasResource["dojo.hash"]){dojo._hasResource["dojo.hash"]=true;dojo.provide("dojo.hash");(function(){dojo.hash=function(_25,_26){if(!arguments.length){return _27();}if(_25.charAt(0)=="#"){_25=_25.substring(1);}if(_26){_28(_25);}else{location.href="#"+_25;}return _25;};var _29,_2a,_2b,_2c=dojo.config.hashPollFrequency||100;function _2d(str,_2e){var i=str.indexOf(_2e);return (i>=0)?str.substring(i+1):"";};function _27(){return _2d(location.href,"#");};function _2f(){dojo.publish("/dojo/hashchange",[_27()]);};function _30(){if(_27()===_29){return;}_29=_27();_2f();};function _28(_31){if(_2a){if(_2a.isTransitioning()){setTimeout(dojo.hitch(null,_28,_31),_2c);return;}var _32=_2a.iframe.location.href;var _33=_32.indexOf("?");_2a.iframe.location.replace(_32.substring(0,_33)+"?"+_31);return;}location.replace("#"+_31);!_2b&&_30();};function _34(){var ifr=document.createElement("iframe"),_35="dojo-hash-iframe",_36=dojo.config.dojoBlankHtmlUrl||dojo.moduleUrl("dojo","resources/blank.html");if(dojo.config.useXDomain&&!dojo.config.dojoBlankHtmlUrl){console.warn("dojo.hash: When using cross-domain Dojo builds,"+" please save dojo/resources/blank.html to your domain and set djConfig.dojoBlankHtmlUrl"+" to the path on your domain to blank.html");}ifr.id=_35;ifr.src=_36+"?"+_27();ifr.style.display="none";document.body.appendChild(ifr);this.iframe=dojo.global[_35];var _37,_38,_39,_3a,_3b,_3c=this.iframe.location;function _3d(){_29=_27();_37=_3b?_29:_2d(_3c.href,"?");_38=false;_39=null;};this.isTransitioning=function(){return _38;};this.pollLocation=function(){if(!_3b){try{var _3e=_2d(_3c.href,"?");if(document.title!=_3a){_3a=this.iframe.document.title=document.title;}}catch(e){_3b=true;console.error("dojo.hash: Error adding history entry. Server unreachable.");}}var _3f=_27();if(_38&&_29===_3f){if(_3b||_3e===_39){_3d();_2f();}else{setTimeout(dojo.hitch(this,this.pollLocation),0);return;}}else{if(_29===_3f&&(_3b||_37===_3e)){}else{if(_29!==_3f){_29=_3f;_38=true;_39=_3f;ifr.src=_36+"?"+_39;_3b=false;setTimeout(dojo.hitch(this,this.pollLocation),0);return;}else{if(!_3b){location.href="#"+_3c.search.substring(1);_3d();_2f();}}}}setTimeout(dojo.hitch(this,this.pollLocation),_2c);};_3d();setTimeout(dojo.hitch(this,this.pollLocation),_2c);};dojo.addOnLoad(function(){if("onhashchange" in dojo.global&&(!dojo.isIE||(dojo.isIE>=8&&document.compatMode!="BackCompat"))){_2b=dojo.connect(dojo.global,"onhashchange",_2f);}else{if(document.addEventListener){_29=_27();setInterval(_30,_2c);}else{if(document.attachEvent){_2a=new _34();}}}});})();}if(!dojo._hasResource["dojo.data.util.filter"]){dojo._hasResource["dojo.data.util.filter"]=true;dojo.provide("dojo.data.util.filter");dojo.getObject("data.util.filter",true,dojo);dojo.data.util.filter.patternToRegExp=function(_40,_41){var rxp="^";var c=null;for(var i=0;i<_40.length;i++){c=_40.charAt(i);switch(c){case "\\":rxp+=c;i++;rxp+=_40.charAt(i);break;case "*":rxp+=".*";break;case "?":rxp+=".";break;case "$":case "^":case "/":case "+":case ".":case "|":case "(":case ")":case "{":case "}":case "[":case "]":rxp+="\\";default:rxp+=c;}}rxp+="$";if(_41){return new RegExp(rxp,"mi");}else{return new RegExp(rxp,"m");}};}if(!dojo._hasResource["dojo.data.util.sorter"]){dojo._hasResource["dojo.data.util.sorter"]=true;dojo.provide("dojo.data.util.sorter");dojo.getObject("data.util.sorter",true,dojo);dojo.data.util.sorter.basicComparator=function(a,b){var r=-1;if(a===null){a=undefined;}if(b===null){b=undefined;}if(a==b){r=0;}else{if(a>b||a==null){r=1;}}return r;};dojo.data.util.sorter.createSortFunction=function(_42,_43){var _44=[];function _45(_46,dir,_47,s){return function(_48,_49){var a=s.getValue(_48,_46);var b=s.getValue(_49,_46);return dir*_47(a,b);};};var _4a;var map=_43.comparatorMap;var bc=dojo.data.util.sorter.basicComparator;for(var i=0;i<_42.length;i++){_4a=_42[i];var _4b=_4a.attribute;if(_4b){var dir=(_4a.descending)?-1:1;var _4c=bc;if(map){if(typeof _4b!=="string"&&("toString" in _4b)){_4b=_4b.toString();}_4c=map[_4b]||bc;}_44.push(_45(_4b,dir,_4c,_43));}}return function(_4d,_4e){var i=0;while(i<_44.length){var ret=_44[i++](_4d,_4e);if(ret!==0){return ret;}}return 0;};};}if(!dojo._hasResource["dojo.data.util.simpleFetch"]){dojo._hasResource["dojo.data.util.simpleFetch"]=true;dojo.provide("dojo.data.util.simpleFetch");dojo.getObject("data.util.simpleFetch",true,dojo);dojo.data.util.simpleFetch.fetch=function(_4f){_4f=_4f||{};if(!_4f.store){_4f.store=this;}var _50=this;var _51=function(_52,_53){if(_53.onError){var _54=_53.scope||dojo.global;_53.onError.call(_54,_52,_53);}};var _55=function(_56,_57){var _58=_57.abort||null;var _59=false;var _5a=_57.start?_57.start:0;var _5b=(_57.count&&(_57.count!==Infinity))?(_5a+_57.count):_56.length;_57.abort=function(){_59=true;if(_58){_58.call(_57);}};var _5c=_57.scope||dojo.global;if(!_57.store){_57.store=_50;}if(_57.onBegin){_57.onBegin.call(_5c,_56.length,_57);}if(_57.sort){_56.sort(dojo.data.util.sorter.createSortFunction(_57.sort,_50));}if(_57.onItem){for(var i=_5a;(i<_56.length)&&(i<_5b);++i){var _5d=_56[i];if(!_59){_57.onItem.call(_5c,_5d,_57);}}}if(_57.onComplete&&!_59){var _5e=null;if(!_57.onItem){_5e=_56.slice(_5a,_5b);}_57.onComplete.call(_5c,_5e,_57);}};this._fetchItems(_4f,_55,_51);return _4f;};}if(!dojo._hasResource["dojo.date.stamp"]){dojo._hasResource["dojo.date.stamp"]=true;dojo.provide("dojo.date.stamp");dojo.getObject("date.stamp",true,dojo);dojo.date.stamp.fromISOString=function(_5f,_60){if(!dojo.date.stamp._isoRegExp){dojo.date.stamp._isoRegExp=/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;}var _61=dojo.date.stamp._isoRegExp.exec(_5f),_62=null;if(_61){_61.shift();if(_61[1]){_61[1]--;}if(_61[6]){_61[6]*=1000;}if(_60){_60=new Date(_60);dojo.forEach(dojo.map(["FullYear","Month","Date","Hours","Minutes","Seconds","Milliseconds"],function(_63){return _60["get"+_63]();}),function(_64,_65){_61[_65]=_61[_65]||_64;});}_62=new Date(_61[0]||1970,_61[1]||0,_61[2]||1,_61[3]||0,_61[4]||0,_61[5]||0,_61[6]||0);if(_61[0]<100){_62.setFullYear(_61[0]||1970);}var _66=0,_67=_61[7]&&_61[7].charAt(0);if(_67!="Z"){_66=((_61[8]||0)*60)+(Number(_61[9])||0);if(_67!="-"){_66*=-1;}}if(_67){_66-=_62.getTimezoneOffset();}if(_66){_62.setTime(_62.getTime()+_66*60000);}}return _62;};dojo.date.stamp.toISOString=function(_68,_69){var _6a=function(n){return (n<10)?"0"+n:n;};_69=_69||{};var _6b=[],_6c=_69.zulu?"getUTC":"get",_6d="";if(_69.selector!="time"){var _6e=_68[_6c+"FullYear"]();_6d=["0000".substr((_6e+"").length)+_6e,_6a(_68[_6c+"Month"]()+1),_6a(_68[_6c+"Date"]())].join("-");}_6b.push(_6d);if(_69.selector!="date"){var _6f=[_6a(_68[_6c+"Hours"]()),_6a(_68[_6c+"Minutes"]()),_6a(_68[_6c+"Seconds"]())].join(":");var _70=_68[_6c+"Milliseconds"]();if(_69.milliseconds){_6f+="."+(_70<100?"0":"")+_6a(_70);}if(_69.zulu){_6f+="Z";}else{if(_69.selector!="time"){var _71=_68.getTimezoneOffset();var _72=Math.abs(_71);_6f+=(_71>0?"-":"+")+_6a(Math.floor(_72/60))+":"+_6a(_72%60);}}_6b.push(_6f);}return _6b.join("T");};}if(!dojo._hasResource["dojo.data.ItemFileReadStore"]){dojo._hasResource["dojo.data.ItemFileReadStore"]=true;dojo.provide("dojo.data.ItemFileReadStore");dojo.declare("dojo.data.ItemFileReadStore",null,{constructor:function(_73){this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._jsonFileUrl=_73.url;this._ccUrl=_73.url;this.url=_73.url;this._jsonData=_73.data;this.data=null;this._datatypeMap=_73.typeMap||{};if(!this._datatypeMap["Date"]){this._datatypeMap["Date"]={type:Date,deserialize:function(_74){return dojo.date.stamp.fromISOString(_74);}};}this._features={"dojo.data.api.Read":true,"dojo.data.api.Identity":true};this._itemsByIdentity=null;this._storeRefPropName="_S";this._itemNumPropName="_0";this._rootItemPropName="_RI";this._reverseRefMap="_RRM";this._loadInProgress=false;this._queuedFetches=[];if(_73.urlPreventCache!==undefined){this.urlPreventCache=_73.urlPreventCache?true:false;}if(_73.hierarchical!==undefined){this.hierarchical=_73.hierarchical?true:false;}if(_73.clearOnClose){this.clearOnClose=true;}if("failOk" in _73){this.failOk=_73.failOk?true:false;}},url:"",_ccUrl:"",data:null,typeMap:null,clearOnClose:false,urlPreventCache:false,failOk:false,hierarchical:true,_assertIsItem:function(_75){if(!this.isItem(_75)){throw new Error("dojo.data.ItemFileReadStore: Invalid item argument.");}},_assertIsAttribute:function(_76){if(typeof _76!=="string"){throw new Error("dojo.data.ItemFileReadStore: Invalid attribute argument.");}},getValue:function(_77,_78,_79){var _7a=this.getValues(_77,_78);return (_7a.length>0)?_7a[0]:_79;},getValues:function(_7b,_7c){this._assertIsItem(_7b);this._assertIsAttribute(_7c);return (_7b[_7c]||[]).slice(0);},getAttributes:function(_7d){this._assertIsItem(_7d);var _7e=[];for(var key in _7d){if((key!==this._storeRefPropName)&&(key!==this._itemNumPropName)&&(key!==this._rootItemPropName)&&(key!==this._reverseRefMap)){_7e.push(key);}}return _7e;},hasAttribute:function(_7f,_80){this._assertIsItem(_7f);this._assertIsAttribute(_80);return (_80 in _7f);},containsValue:function(_81,_82,_83){var _84=undefined;if(typeof _83==="string"){_84=dojo.data.util.filter.patternToRegExp(_83,false);}return this._containsValue(_81,_82,_83,_84);},_containsValue:function(_85,_86,_87,_88){return dojo.some(this.getValues(_85,_86),function(_89){if(_89!==null&&!dojo.isObject(_89)&&_88){if(_89.toString().match(_88)){return true;}}else{if(_87===_89){return true;}}});},isItem:function(_8a){if(_8a&&_8a[this._storeRefPropName]===this){if(this._arrayOfAllItems[_8a[this._itemNumPropName]]===_8a){return true;}}return false;},isItemLoaded:function(_8b){return this.isItem(_8b);},loadItem:function(_8c){this._assertIsItem(_8c.item);},getFeatures:function(){return this._features;},getLabel:function(_8d){if(this._labelAttr&&this.isItem(_8d)){return this.getValue(_8d,this._labelAttr);}return undefined;},getLabelAttributes:function(_8e){if(this._labelAttr){return [this._labelAttr];}return null;},_fetchItems:function(_8f,_90,_91){var _92=this,_93=function(_94,_95){var _96=[],i,key;if(_94.query){var _97,_98=_94.queryOptions?_94.queryOptions.ignoreCase:false;var _99={};for(key in _94.query){_97=_94.query[key];if(typeof _97==="string"){_99[key]=dojo.data.util.filter.patternToRegExp(_97,_98);}else{if(_97 instanceof RegExp){_99[key]=_97;}}}for(i=0;i<_95.length;++i){var _9a=true;var _9b=_95[i];if(_9b===null){_9a=false;}else{for(key in _94.query){_97=_94.query[key];if(!_92._containsValue(_9b,key,_97,_99[key])){_9a=false;}}}if(_9a){_96.push(_9b);}}_90(_96,_94);}else{for(i=0;i<_95.length;++i){var _9c=_95[i];if(_9c!==null){_96.push(_9c);}}_90(_96,_94);}};if(this._loadFinished){_93(_8f,this._getItemsArray(_8f.queryOptions));}else{if(this._jsonFileUrl!==this._ccUrl){dojo.deprecated("dojo.data.ItemFileReadStore: ","To change the url, set the url property of the store,"+" not _jsonFileUrl.  _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_8f,filter:_93});}else{this._loadInProgress=true;var _9d={url:_92._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _9e=dojo.xhrGet(_9d);_9e.addCallback(function(_9f){try{_92._getItemsFromLoadedData(_9f);_92._loadFinished=true;_92._loadInProgress=false;_93(_8f,_92._getItemsArray(_8f.queryOptions));_92._handleQueuedFetches();}catch(e){_92._loadFinished=true;_92._loadInProgress=false;_91(e,_8f);}});_9e.addErrback(function(_a0){_92._loadInProgress=false;_91(_a0,_8f);});var _a1=null;if(_8f.abort){_a1=_8f.abort;}_8f.abort=function(){var df=_9e;if(df&&df.fired===-1){df.cancel();df=null;}if(_a1){_a1.call(_8f);}};}}else{if(this._jsonData){try{this._loadFinished=true;this._getItemsFromLoadedData(this._jsonData);this._jsonData=null;_93(_8f,this._getItemsArray(_8f.queryOptions));}catch(e){_91(e,_8f);}}else{_91(new Error("dojo.data.ItemFileReadStore: No JSON source data was provided as either URL or a nested Javascript object."),_8f);}}}},_handleQueuedFetches:function(){if(this._queuedFetches.length>0){for(var i=0;i<this._queuedFetches.length;i++){var _a2=this._queuedFetches[i],_a3=_a2.args,_a4=_a2.filter;if(_a4){_a4(_a3,this._getItemsArray(_a3.queryOptions));}else{this.fetchItemByIdentity(_a3);}}this._queuedFetches=[];}},_getItemsArray:function(_a5){if(_a5&&_a5.deep){return this._arrayOfAllItems;}return this._arrayOfTopLevelItems;},close:function(_a6){if(this.clearOnClose&&this._loadFinished&&!this._loadInProgress){if(((this._jsonFileUrl==""||this._jsonFileUrl==null)&&(this.url==""||this.url==null))&&this.data==null){console.debug("dojo.data.ItemFileReadStore: WARNING!  Data reload "+" information has not been provided."+"  Please set 'url' or 'data' to the appropriate value before"+" the next fetch");}this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._itemsByIdentity=null;this._loadInProgress=false;this._queuedFetches=[];}},_getItemsFromLoadedData:function(_a7){var _a8=false,_a9=this;function _aa(_ab){var _ac=((_ab!==null)&&(typeof _ab==="object")&&(!dojo.isArray(_ab)||_a8)&&(!dojo.isFunction(_ab))&&(_ab.constructor==Object||dojo.isArray(_ab))&&(typeof _ab._reference==="undefined")&&(typeof _ab._type==="undefined")&&(typeof _ab._value==="undefined")&&_a9.hierarchical);return _ac;};function _ad(_ae){_a9._arrayOfAllItems.push(_ae);for(var _af in _ae){var _b0=_ae[_af];if(_b0){if(dojo.isArray(_b0)){var _b1=_b0;for(var k=0;k<_b1.length;++k){var _b2=_b1[k];if(_aa(_b2)){_ad(_b2);}}}else{if(_aa(_b0)){_ad(_b0);}}}}};this._labelAttr=_a7.label;var i,_b3;this._arrayOfAllItems=[];this._arrayOfTopLevelItems=_a7.items;for(i=0;i<this._arrayOfTopLevelItems.length;++i){_b3=this._arrayOfTopLevelItems[i];if(dojo.isArray(_b3)){_a8=true;}_ad(_b3);_b3[this._rootItemPropName]=true;}var _b4={},key;for(i=0;i<this._arrayOfAllItems.length;++i){_b3=this._arrayOfAllItems[i];for(key in _b3){if(key!==this._rootItemPropName){var _b5=_b3[key];if(_b5!==null){if(!dojo.isArray(_b5)){_b3[key]=[_b5];}}else{_b3[key]=[null];}}_b4[key]=key;}}while(_b4[this._storeRefPropName]){this._storeRefPropName+="_";}while(_b4[this._itemNumPropName]){this._itemNumPropName+="_";}while(_b4[this._reverseRefMap]){this._reverseRefMap+="_";}var _b6;var _b7=_a7.identifier;if(_b7){this._itemsByIdentity={};this._features["dojo.data.api.Identity"]=_b7;for(i=0;i<this._arrayOfAllItems.length;++i){_b3=this._arrayOfAllItems[i];_b6=_b3[_b7];var _b8=_b6[0];if(!Object.hasOwnProperty.call(this._itemsByIdentity,_b8)){this._itemsByIdentity[_b8]=_b3;}else{if(this._jsonFileUrl){throw new Error("dojo.data.ItemFileReadStore:  The json data as specified by: ["+this._jsonFileUrl+"] is malformed.  Items within the list have identifier: ["+_b7+"].  Value collided: ["+_b8+"]");}else{if(this._jsonData){throw new Error("dojo.data.ItemFileReadStore:  The json data provided by the creation arguments is malformed.  Items within the list have identifier: ["+_b7+"].  Value collided: ["+_b8+"]");}}}}}else{this._features["dojo.data.api.Identity"]=Number;}for(i=0;i<this._arrayOfAllItems.length;++i){_b3=this._arrayOfAllItems[i];_b3[this._storeRefPropName]=this;_b3[this._itemNumPropName]=i;}for(i=0;i<this._arrayOfAllItems.length;++i){_b3=this._arrayOfAllItems[i];for(key in _b3){_b6=_b3[key];for(var j=0;j<_b6.length;++j){_b5=_b6[j];if(_b5!==null&&typeof _b5=="object"){if(("_type" in _b5)&&("_value" in _b5)){var _b9=_b5._type;var _ba=this._datatypeMap[_b9];if(!_ba){throw new Error("dojo.data.ItemFileReadStore: in the typeMap constructor arg, no object class was specified for the datatype '"+_b9+"'");}else{if(dojo.isFunction(_ba)){_b6[j]=new _ba(_b5._value);}else{if(dojo.isFunction(_ba.deserialize)){_b6[j]=_ba.deserialize(_b5._value);}else{throw new Error("dojo.data.ItemFileReadStore: Value provided in typeMap was neither a constructor, nor a an object with a deserialize function");}}}}if(_b5._reference){var _bb=_b5._reference;if(!dojo.isObject(_bb)){_b6[j]=this._getItemByIdentity(_bb);}else{for(var k=0;k<this._arrayOfAllItems.length;++k){var _bc=this._arrayOfAllItems[k],_bd=true;for(var _be in _bb){if(_bc[_be]!=_bb[_be]){_bd=false;}}if(_bd){_b6[j]=_bc;}}}if(this.referenceIntegrity){var _bf=_b6[j];if(this.isItem(_bf)){this._addReferenceToMap(_bf,_b3,key);}}}else{if(this.isItem(_b5)){if(this.referenceIntegrity){this._addReferenceToMap(_b5,_b3,key);}}}}}}}},_addReferenceToMap:function(_c0,_c1,_c2){},getIdentity:function(_c3){var _c4=this._features["dojo.data.api.Identity"];if(_c4===Number){return _c3[this._itemNumPropName];}else{var _c5=_c3[_c4];if(_c5){return _c5[0];}}return null;},fetchItemByIdentity:function(_c6){var _c7,_c8;if(!this._loadFinished){var _c9=this;if(this._jsonFileUrl!==this._ccUrl){dojo.deprecated("dojo.data.ItemFileReadStore: ","To change the url, set the url property of the store,"+" not _jsonFileUrl.  _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null&&this._jsonData==null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_c6});}else{this._loadInProgress=true;var _ca={url:_c9._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _cb=dojo.xhrGet(_ca);_cb.addCallback(function(_cc){var _cd=_c6.scope?_c6.scope:dojo.global;try{_c9._getItemsFromLoadedData(_cc);_c9._loadFinished=true;_c9._loadInProgress=false;_c7=_c9._getItemByIdentity(_c6.identity);if(_c6.onItem){_c6.onItem.call(_cd,_c7);}_c9._handleQueuedFetches();}catch(error){_c9._loadInProgress=false;if(_c6.onError){_c6.onError.call(_cd,error);}}});_cb.addErrback(function(_ce){_c9._loadInProgress=false;if(_c6.onError){var _cf=_c6.scope?_c6.scope:dojo.global;_c6.onError.call(_cf,_ce);}});}}else{if(this._jsonData){_c9._getItemsFromLoadedData(_c9._jsonData);_c9._jsonData=null;_c9._loadFinished=true;_c7=_c9._getItemByIdentity(_c6.identity);if(_c6.onItem){_c8=_c6.scope?_c6.scope:dojo.global;_c6.onItem.call(_c8,_c7);}}}}else{_c7=this._getItemByIdentity(_c6.identity);if(_c6.onItem){_c8=_c6.scope?_c6.scope:dojo.global;_c6.onItem.call(_c8,_c7);}}},_getItemByIdentity:function(_d0){var _d1=null;if(this._itemsByIdentity&&Object.hasOwnProperty.call(this._itemsByIdentity,_d0)){_d1=this._itemsByIdentity[_d0];}else{if(Object.hasOwnProperty.call(this._arrayOfAllItems,_d0)){_d1=this._arrayOfAllItems[_d0];}}if(_d1===undefined){_d1=null;}return _d1;},getIdentityAttributes:function(_d2){var _d3=this._features["dojo.data.api.Identity"];if(_d3===Number){return null;}else{return [_d3];}},_forceLoad:function(){var _d4=this;if(this._jsonFileUrl!==this._ccUrl){dojo.deprecated("dojo.data.ItemFileReadStore: ","To change the url, set the url property of the store,"+" not _jsonFileUrl.  _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){var _d5={url:this._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk,sync:true};var _d6=dojo.xhrGet(_d5);_d6.addCallback(function(_d7){try{if(_d4._loadInProgress!==true&&!_d4._loadFinished){_d4._getItemsFromLoadedData(_d7);_d4._loadFinished=true;}else{if(_d4._loadInProgress){throw new Error("dojo.data.ItemFileReadStore:  Unable to perform a synchronous load, an async load is in progress.");}}}catch(e){console.log(e);throw e;}});_d6.addErrback(function(_d8){throw _d8;});}else{if(this._jsonData){_d4._getItemsFromLoadedData(_d4._jsonData);_d4._jsonData=null;_d4._loadFinished=true;}}}});dojo.extend(dojo.data.ItemFileReadStore,dojo.data.util.simpleFetch);}if(!dojo._hasResource["dojo.dnd.common"]){dojo._hasResource["dojo.dnd.common"]=true;dojo.provide("dojo.dnd.common");dojo.getObject("dnd",true,dojo);dojo.dnd.getCopyKeyState=dojo.isCopyKey;dojo.dnd._uniqueId=0;dojo.dnd.getUniqueId=function(){var id;do{id=dojo._scopeName+"Unique"+(++dojo.dnd._uniqueId);}while(dojo.byId(id));return id;};dojo.dnd._empty={};dojo.dnd.isFormElement=function(e){var t=e.target;if(t.nodeType==3){t=t.parentNode;}return " button textarea input select option ".indexOf(" "+t.tagName.toLowerCase()+" ")>=0;};}if(!dojo._hasResource["dojo.window"]){dojo._hasResource["dojo.window"]=true;dojo.provide("dojo.window");dojo.getObject("window",true,dojo);dojo.window.getBox=function(){var _d9=(dojo.doc.compatMode=="BackCompat")?dojo.body():dojo.doc.documentElement;var _da=dojo._docScroll();return {w:_d9.clientWidth,h:_d9.clientHeight,l:_da.x,t:_da.y};};dojo.window.get=function(doc){if(dojo.isIE&&window!==document.parentWindow){doc.parentWindow.execScript("document._parentWindow = window;","Javascript");var win=doc._parentWindow;doc._parentWindow=null;return win;}return doc.parentWindow||doc.defaultView;};dojo.window.scrollIntoView=function(_db,pos){try{_db=dojo.byId(_db);var doc=_db.ownerDocument||dojo.doc,_dc=doc.body||dojo.body(),_dd=doc.documentElement||_dc.parentNode,_de=dojo.isIE,_df=dojo.isWebKit;if((!(dojo.isMoz||_de||_df||dojo.isOpera)||_db==_dc||_db==_dd)&&(typeof _db.scrollIntoView!="undefined")){_db.scrollIntoView(false);return;}var _e0=doc.compatMode=="BackCompat",_e1=(_de>=9&&_db.ownerDocument.parentWindow.frameElement)?((_dd.clientHeight>0&&_dd.clientWidth>0&&(_dc.clientHeight==0||_dc.clientWidth==0||_dc.clientHeight>_dd.clientHeight||_dc.clientWidth>_dd.clientWidth))?_dd:_dc):(_e0?_dc:_dd),_e2=_df?_dc:_e1,_e3=_e1.clientWidth,_e4=_e1.clientHeight,rtl=!dojo._isBodyLtr(),_e5=pos||dojo.position(_db),el=_db.parentNode,_e6=function(el){return ((_de<=6||(_de&&_e0))?false:(dojo.style(el,"position").toLowerCase()=="fixed"));};if(_e6(_db)){return;}while(el){if(el==_dc){el=_e2;}var _e7=dojo.position(el),_e8=_e6(el);if(el==_e2){_e7.w=_e3;_e7.h=_e4;if(_e2==_dd&&_de&&rtl){_e7.x+=_e2.offsetWidth-_e7.w;}if(_e7.x<0||!_de){_e7.x=0;}if(_e7.y<0||!_de){_e7.y=0;}}else{var pb=dojo._getPadBorderExtents(el);_e7.w-=pb.w;_e7.h-=pb.h;_e7.x+=pb.l;_e7.y+=pb.t;var _e9=el.clientWidth,_ea=_e7.w-_e9;if(_e9>0&&_ea>0){_e7.w=_e9;_e7.x+=(rtl&&(_de||el.clientLeft>pb.l))?_ea:0;}_e9=el.clientHeight;_ea=_e7.h-_e9;if(_e9>0&&_ea>0){_e7.h=_e9;}}if(_e8){if(_e7.y<0){_e7.h+=_e7.y;_e7.y=0;}if(_e7.x<0){_e7.w+=_e7.x;_e7.x=0;}if(_e7.y+_e7.h>_e4){_e7.h=_e4-_e7.y;}if(_e7.x+_e7.w>_e3){_e7.w=_e3-_e7.x;}}var l=_e5.x-_e7.x,t=_e5.y-Math.max(_e7.y,0),r=l+_e5.w-_e7.w,bot=t+_e5.h-_e7.h;if(r*l>0){var s=Math[l<0?"max":"min"](l,r);if(rtl&&((_de==8&&!_e0)||_de>=9)){s=-s;}_e5.x+=el.scrollLeft;el.scrollLeft+=s;_e5.x-=el.scrollLeft;}if(bot*t>0){_e5.y+=el.scrollTop;el.scrollTop+=Math[t<0?"max":"min"](t,bot);_e5.y-=el.scrollTop;}el=(el!=_e2)&&!_e8&&el.parentNode;}}catch(error){console.error("scrollIntoView: "+error);_db.scrollIntoView(false);}};}if(!dojo._hasResource["dojo.dnd.autoscroll"]){dojo._hasResource["dojo.dnd.autoscroll"]=true;dojo.provide("dojo.dnd.autoscroll");dojo.getObject("dnd",true,dojo);dojo.dnd.getViewport=dojo.window.getBox;dojo.dnd.V_TRIGGER_AUTOSCROLL=32;dojo.dnd.H_TRIGGER_AUTOSCROLL=32;dojo.dnd.V_AUTOSCROLL_VALUE=16;dojo.dnd.H_AUTOSCROLL_VALUE=16;dojo.dnd.autoScroll=function(e){var v=dojo.window.getBox(),dx=0,dy=0;if(e.clientX<dojo.dnd.H_TRIGGER_AUTOSCROLL){dx=-dojo.dnd.H_AUTOSCROLL_VALUE;}else{if(e.clientX>v.w-dojo.dnd.H_TRIGGER_AUTOSCROLL){dx=dojo.dnd.H_AUTOSCROLL_VALUE;}}if(e.clientY<dojo.dnd.V_TRIGGER_AUTOSCROLL){dy=-dojo.dnd.V_AUTOSCROLL_VALUE;}else{if(e.clientY>v.h-dojo.dnd.V_TRIGGER_AUTOSCROLL){dy=dojo.dnd.V_AUTOSCROLL_VALUE;}}window.scrollBy(dx,dy);};dojo.dnd._validNodes={"div":1,"p":1,"td":1};dojo.dnd._validOverflow={"auto":1,"scroll":1};dojo.dnd.autoScrollNodes=function(e){for(var n=e.target;n;){if(n.nodeType==1&&(n.tagName.toLowerCase() in dojo.dnd._validNodes)){var s=dojo.getComputedStyle(n);if(s.overflow.toLowerCase() in dojo.dnd._validOverflow){var b=dojo._getContentBox(n,s),t=dojo.position(n,true);var w=Math.min(dojo.dnd.H_TRIGGER_AUTOSCROLL,b.w/2),h=Math.min(dojo.dnd.V_TRIGGER_AUTOSCROLL,b.h/2),rx=e.pageX-t.x,ry=e.pageY-t.y,dx=0,dy=0;if(dojo.isWebKit||dojo.isOpera){rx+=dojo.body().scrollLeft;ry+=dojo.body().scrollTop;}if(rx>0&&rx<b.w){if(rx<w){dx=-w;}else{if(rx>b.w-w){dx=w;}}}if(ry>0&&ry<b.h){if(ry<h){dy=-h;}else{if(ry>b.h-h){dy=h;}}}var _eb=n.scrollLeft,_ec=n.scrollTop;n.scrollLeft=n.scrollLeft+dx;n.scrollTop=n.scrollTop+dy;if(_eb!=n.scrollLeft||_ec!=n.scrollTop){return;}}}try{n=n.parentNode;}catch(x){n=null;}}dojo.dnd.autoScroll(e);};}if(!dojo._hasResource["dojo.dnd.Mover"]){dojo._hasResource["dojo.dnd.Mover"]=true;dojo.provide("dojo.dnd.Mover");dojo.declare("dojo.dnd.Mover",null,{constructor:function(_ed,e,_ee){this.node=dojo.byId(_ed);var pos=e.touches?e.touches[0]:e;this.marginBox={l:pos.pageX,t:pos.pageY};this.mouseButton=e.button;var h=(this.host=_ee),d=_ed.ownerDocument;this.events=[dojo.connect(d,"onmousemove",this,"onFirstMove"),dojo.connect(d,"ontouchmove",this,"onFirstMove"),dojo.connect(d,"onmousemove",this,"onMouseMove"),dojo.connect(d,"ontouchmove",this,"onMouseMove"),dojo.connect(d,"onmouseup",this,"onMouseUp"),dojo.connect(d,"ontouchend",this,"onMouseUp"),dojo.connect(d,"ondragstart",dojo.stopEvent),dojo.connect(d.body,"onselectstart",dojo.stopEvent)];if(h&&h.onMoveStart){h.onMoveStart(this);}},onMouseMove:function(e){dojo.dnd.autoScroll(e);var m=this.marginBox,pos=e.touches?e.touches[0]:e;this.host.onMove(this,{l:m.l+pos.pageX,t:m.t+pos.pageY},e);dojo.stopEvent(e);},onMouseUp:function(e){if(dojo.isWebKit&&dojo.isMac&&this.mouseButton==2?e.button==0:this.mouseButton==e.button){this.destroy();}dojo.stopEvent(e);},onFirstMove:function(e){var s=this.node.style,l,t,h=this.host;switch(s.position){case "relative":case "absolute":l=Math.round(parseFloat(s.left))||0;t=Math.round(parseFloat(s.top))||0;break;default:s.position="absolute";var m=dojo.marginBox(this.node);var b=dojo.doc.body;var bs=dojo.getComputedStyle(b);var bm=dojo._getMarginBox(b,bs);var bc=dojo._getContentBox(b,bs);l=m.l-(bc.l-bm.l);t=m.t-(bc.t-bm.t);break;}this.marginBox.l=l-this.marginBox.l;this.marginBox.t=t-this.marginBox.t;if(h&&h.onFirstMove){h.onFirstMove(this,e);}dojo.disconnect(this.events.shift());dojo.disconnect(this.events.shift());},destroy:function(){dojo.forEach(this.events,dojo.disconnect);var h=this.host;if(h&&h.onMoveStop){h.onMoveStop(this);}this.events=this.node=this.host=null;}});}if(!dojo._hasResource["dojo.dnd.Moveable"]){dojo._hasResource["dojo.dnd.Moveable"]=true;dojo.provide("dojo.dnd.Moveable");dojo.declare("dojo.dnd.Moveable",null,{handle:"",delay:0,skip:false,constructor:function(_ef,_f0){this.node=dojo.byId(_ef);if(!_f0){_f0={};}this.handle=_f0.handle?dojo.byId(_f0.handle):null;if(!this.handle){this.handle=this.node;}this.delay=_f0.delay>0?_f0.delay:0;this.skip=_f0.skip;this.mover=_f0.mover?_f0.mover:dojo.dnd.Mover;this.events=[dojo.connect(this.handle,"onmousedown",this,"onMouseDown"),dojo.connect(this.handle,"ontouchstart",this,"onMouseDown"),dojo.connect(this.handle,"ondragstart",this,"onSelectStart"),dojo.connect(this.handle,"onselectstart",this,"onSelectStart")];},markupFactory:function(_f1,_f2){return new dojo.dnd.Moveable(_f2,_f1);},destroy:function(){dojo.forEach(this.events,dojo.disconnect);this.events=this.node=this.handle=null;},onMouseDown:function(e){if(this.skip&&dojo.dnd.isFormElement(e)){return;}if(this.delay){this.events.push(dojo.connect(this.handle,"onmousemove",this,"onMouseMove"),dojo.connect(this.handle,"ontouchmove",this,"onMouseMove"),dojo.connect(this.handle,"onmouseup",this,"onMouseUp"),dojo.connect(this.handle,"ontouchend",this,"onMouseUp"));var pos=e.touches?e.touches[0]:e;this._lastX=pos.pageX;this._lastY=pos.pageY;}else{this.onDragDetected(e);}dojo.stopEvent(e);},onMouseMove:function(e){var pos=e.touches?e.touches[0]:e;if(Math.abs(pos.pageX-this._lastX)>this.delay||Math.abs(pos.pageY-this._lastY)>this.delay){this.onMouseUp(e);this.onDragDetected(e);}dojo.stopEvent(e);},onMouseUp:function(e){for(var i=0;i<2;++i){dojo.disconnect(this.events.pop());}dojo.stopEvent(e);},onSelectStart:function(e){if(!this.skip||!dojo.dnd.isFormElement(e)){dojo.stopEvent(e);}},onDragDetected:function(e){new this.mover(this.node,e,this);},onMoveStart:function(_f3){dojo.publish("/dnd/move/start",[_f3]);dojo.addClass(dojo.body(),"dojoMove");dojo.addClass(this.node,"dojoMoveItem");},onMoveStop:function(_f4){dojo.publish("/dnd/move/stop",[_f4]);dojo.removeClass(dojo.body(),"dojoMove");dojo.removeClass(this.node,"dojoMoveItem");},onFirstMove:function(_f5,e){},onMove:function(_f6,_f7,e){this.onMoving(_f6,_f7);var s=_f6.node.style;s.left=_f7.l+"px";s.top=_f7.t+"px";this.onMoved(_f6,_f7);},onMoving:function(_f8,_f9){},onMoved:function(_fa,_fb){}});}if(!dojo._hasResource["dojo.dnd.move"]){dojo._hasResource["dojo.dnd.move"]=true;dojo.provide("dojo.dnd.move");dojo.declare("dojo.dnd.move.constrainedMoveable",dojo.dnd.Moveable,{constraints:function(){},within:false,markupFactory:function(_fc,_fd){return new dojo.dnd.move.constrainedMoveable(_fd,_fc);},constructor:function(_fe,_ff){if(!_ff){_ff={};}this.constraints=_ff.constraints;this.within=_ff.within;},onFirstMove:function(_100){var c=this.constraintBox=this.constraints.call(this,_100);c.r=c.l+c.w;c.b=c.t+c.h;if(this.within){var mb=dojo._getMarginSize(_100.node);c.r-=mb.w;c.b-=mb.h;}},onMove:function(_101,_102){var c=this.constraintBox,s=_101.node.style;this.onMoving(_101,_102);_102.l=_102.l<c.l?c.l:c.r<_102.l?c.r:_102.l;_102.t=_102.t<c.t?c.t:c.b<_102.t?c.b:_102.t;s.left=_102.l+"px";s.top=_102.t+"px";this.onMoved(_101,_102);}});dojo.declare("dojo.dnd.move.boxConstrainedMoveable",dojo.dnd.move.constrainedMoveable,{box:{},markupFactory:function(_103,node){return new dojo.dnd.move.boxConstrainedMoveable(node,_103);},constructor:function(node,_104){var box=_104&&_104.box;this.constraints=function(){return box;};}});dojo.declare("dojo.dnd.move.parentConstrainedMoveable",dojo.dnd.move.constrainedMoveable,{area:"content",markupFactory:function(_105,node){return new dojo.dnd.move.parentConstrainedMoveable(node,_105);},constructor:function(node,_106){var area=_106&&_106.area;this.constraints=function(){var n=this.node.parentNode,s=dojo.getComputedStyle(n),mb=dojo._getMarginBox(n,s);if(area=="margin"){return mb;}var t=dojo._getMarginExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;if(area=="border"){return mb;}t=dojo._getBorderExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;if(area=="padding"){return mb;}t=dojo._getPadExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;return mb;};}});dojo.dnd.constrainedMover=dojo.dnd.move.constrainedMover;dojo.dnd.boxConstrainedMover=dojo.dnd.move.boxConstrainedMover;dojo.dnd.parentConstrainedMover=dojo.dnd.move.parentConstrainedMover;}if(!dojo._hasResource["dojo.dnd.TimedMoveable"]){dojo._hasResource["dojo.dnd.TimedMoveable"]=true;dojo.provide("dojo.dnd.TimedMoveable");(function(){var _107=dojo.dnd.Moveable.prototype.onMove;dojo.declare("dojo.dnd.TimedMoveable",dojo.dnd.Moveable,{timeout:40,constructor:function(node,_108){if(!_108){_108={};}if(_108.timeout&&typeof _108.timeout=="number"&&_108.timeout>=0){this.timeout=_108.timeout;}},markupFactory:function(_109,node){return new dojo.dnd.TimedMoveable(node,_109);},onMoveStop:function(_10a){if(_10a._timer){clearTimeout(_10a._timer);_107.call(this,_10a,_10a._leftTop);}dojo.dnd.Moveable.prototype.onMoveStop.apply(this,arguments);},onMove:function(_10b,_10c){_10b._leftTop=_10c;if(!_10b._timer){var _10d=this;_10b._timer=setTimeout(function(){_10b._timer=null;_107.call(_10d,_10b,_10b._leftTop);},this.timeout);}}});})();}if(!dojo._hasResource["dojo.fx.Toggler"]){dojo._hasResource["dojo.fx.Toggler"]=true;dojo.provide("dojo.fx.Toggler");dojo.declare("dojo.fx.Toggler",null,{node:null,showFunc:dojo.fadeIn,hideFunc:dojo.fadeOut,showDuration:200,hideDuration:200,constructor:function(args){var _10e=this;dojo.mixin(_10e,args);_10e.node=args.node;_10e._showArgs=dojo.mixin({},args);_10e._showArgs.node=_10e.node;_10e._showArgs.duration=_10e.showDuration;_10e.showAnim=_10e.showFunc(_10e._showArgs);_10e._hideArgs=dojo.mixin({},args);_10e._hideArgs.node=_10e.node;_10e._hideArgs.duration=_10e.hideDuration;_10e.hideAnim=_10e.hideFunc(_10e._hideArgs);dojo.connect(_10e.showAnim,"beforeBegin",dojo.hitch(_10e.hideAnim,"stop",true));dojo.connect(_10e.hideAnim,"beforeBegin",dojo.hitch(_10e.showAnim,"stop",true));},show:function(_10f){return this.showAnim.play(_10f||0);},hide:function(_110){return this.hideAnim.play(_110||0);}});}if(!dojo._hasResource["dojo.fx"]){dojo._hasResource["dojo.fx"]=true;dojo.provide("dojo.fx");(function(){var d=dojo,_111={_fire:function(evt,args){if(this[evt]){this[evt].apply(this,args||[]);}return this;}};var _112=function(_113){this._index=-1;this._animations=_113||[];this._current=this._onAnimateCtx=this._onEndCtx=null;this.duration=0;d.forEach(this._animations,function(a){this.duration+=a.duration;if(a.delay){this.duration+=a.delay;}},this);};d.extend(_112,{_onAnimate:function(){this._fire("onAnimate",arguments);},_onEnd:function(){d.disconnect(this._onAnimateCtx);d.disconnect(this._onEndCtx);this._onAnimateCtx=this._onEndCtx=null;if(this._index+1==this._animations.length){this._fire("onEnd");}else{this._current=this._animations[++this._index];this._onAnimateCtx=d.connect(this._current,"onAnimate",this,"_onAnimate");this._onEndCtx=d.connect(this._current,"onEnd",this,"_onEnd");this._current.play(0,true);}},play:function(_114,_115){if(!this._current){this._current=this._animations[this._index=0];}if(!_115&&this._current.status()=="playing"){return this;}var _116=d.connect(this._current,"beforeBegin",this,function(){this._fire("beforeBegin");}),_117=d.connect(this._current,"onBegin",this,function(arg){this._fire("onBegin",arguments);}),_118=d.connect(this._current,"onPlay",this,function(arg){this._fire("onPlay",arguments);d.disconnect(_116);d.disconnect(_117);d.disconnect(_118);});if(this._onAnimateCtx){d.disconnect(this._onAnimateCtx);}this._onAnimateCtx=d.connect(this._current,"onAnimate",this,"_onAnimate");if(this._onEndCtx){d.disconnect(this._onEndCtx);}this._onEndCtx=d.connect(this._current,"onEnd",this,"_onEnd");this._current.play.apply(this._current,arguments);return this;},pause:function(){if(this._current){var e=d.connect(this._current,"onPause",this,function(arg){this._fire("onPause",arguments);d.disconnect(e);});this._current.pause();}return this;},gotoPercent:function(_119,_11a){this.pause();var _11b=this.duration*_119;this._current=null;d.some(this._animations,function(a){if(a.duration<=_11b){this._current=a;return true;}_11b-=a.duration;return false;});if(this._current){this._current.gotoPercent(_11b/this._current.duration,_11a);}return this;},stop:function(_11c){if(this._current){if(_11c){for(;this._index+1<this._animations.length;++this._index){this._animations[this._index].stop(true);}this._current=this._animations[this._index];}var e=d.connect(this._current,"onStop",this,function(arg){this._fire("onStop",arguments);d.disconnect(e);});this._current.stop();}return this;},status:function(){return this._current?this._current.status():"stopped";},destroy:function(){if(this._onAnimateCtx){d.disconnect(this._onAnimateCtx);}if(this._onEndCtx){d.disconnect(this._onEndCtx);}}});d.extend(_112,_111);dojo.fx.chain=function(_11d){return new _112(_11d);};var _11e=function(_11f){this._animations=_11f||[];this._connects=[];this._finished=0;this.duration=0;d.forEach(_11f,function(a){var _120=a.duration;if(a.delay){_120+=a.delay;}if(this.duration<_120){this.duration=_120;}this._connects.push(d.connect(a,"onEnd",this,"_onEnd"));},this);this._pseudoAnimation=new d.Animation({curve:[0,1],duration:this.duration});var self=this;d.forEach(["beforeBegin","onBegin","onPlay","onAnimate","onPause","onStop","onEnd"],function(evt){self._connects.push(d.connect(self._pseudoAnimation,evt,function(){self._fire(evt,arguments);}));});};d.extend(_11e,{_doAction:function(_121,args){d.forEach(this._animations,function(a){a[_121].apply(a,args);});return this;},_onEnd:function(){if(++this._finished>this._animations.length){this._fire("onEnd");}},_call:function(_122,args){var t=this._pseudoAnimation;t[_122].apply(t,args);},play:function(_123,_124){this._finished=0;this._doAction("play",arguments);this._call("play",arguments);return this;},pause:function(){this._doAction("pause",arguments);this._call("pause",arguments);return this;},gotoPercent:function(_125,_126){var ms=this.duration*_125;d.forEach(this._animations,function(a){a.gotoPercent(a.duration<ms?1:(ms/a.duration),_126);});this._call("gotoPercent",arguments);return this;},stop:function(_127){this._doAction("stop",arguments);this._call("stop",arguments);return this;},status:function(){return this._pseudoAnimation.status();},destroy:function(){d.forEach(this._connects,dojo.disconnect);}});d.extend(_11e,_111);dojo.fx.combine=function(_128){return new _11e(_128);};dojo.fx.wipeIn=function(args){var node=args.node=d.byId(args.node),s=node.style,o;var anim=d.animateProperty(d.mixin({properties:{height:{start:function(){o=s.overflow;s.overflow="hidden";if(s.visibility=="hidden"||s.display=="none"){s.height="1px";s.display="";s.visibility="";return 1;}else{var _129=d.style(node,"height");return Math.max(_129,1);}},end:function(){return node.scrollHeight;}}}},args));d.connect(anim,"onEnd",function(){s.height="auto";s.overflow=o;});return anim;};dojo.fx.wipeOut=function(args){var node=args.node=d.byId(args.node),s=node.style,o;var anim=d.animateProperty(d.mixin({properties:{height:{end:1}}},args));d.connect(anim,"beforeBegin",function(){o=s.overflow;s.overflow="hidden";s.display="";});d.connect(anim,"onEnd",function(){s.overflow=o;s.height="auto";s.display="none";});return anim;};dojo.fx.slideTo=function(args){var node=args.node=d.byId(args.node),top=null,left=null;var init=(function(n){return function(){var cs=d.getComputedStyle(n);var pos=cs.position;top=(pos=="absolute"?n.offsetTop:parseInt(cs.top)||0);left=(pos=="absolute"?n.offsetLeft:parseInt(cs.left)||0);if(pos!="absolute"&&pos!="relative"){var ret=d.position(n,true);top=ret.y;left=ret.x;n.style.position="absolute";n.style.top=top+"px";n.style.left=left+"px";}};})(node);init();var anim=d.animateProperty(d.mixin({properties:{top:args.top||0,left:args.left||0}},args));d.connect(anim,"beforeBegin",anim,init);return anim;};})();}if(!dojo._hasResource["dijit._base.manager"]){dojo._hasResource["dijit._base.manager"]=true;dojo.provide("dijit._base.manager");dojo.declare("dijit.WidgetSet",null,{constructor:function(){this._hash={};this.length=0;},add:function(_12a){if(this._hash[_12a.id]){throw new Error("Tried to register widget with id=="+_12a.id+" but that id is already registered");}this._hash[_12a.id]=_12a;this.length++;},remove:function(id){if(this._hash[id]){delete this._hash[id];this.length--;}},forEach:function(func,_12b){_12b=_12b||dojo.global;var i=0,id;for(id in this._hash){func.call(_12b,this._hash[id],i++,this._hash);}return this;},filter:function(_12c,_12d){_12d=_12d||dojo.global;var res=new dijit.WidgetSet(),i=0,id;for(id in this._hash){var w=this._hash[id];if(_12c.call(_12d,w,i++,this._hash)){res.add(w);}}return res;},byId:function(id){return this._hash[id];},byClass:function(cls){var res=new dijit.WidgetSet(),id,_12e;for(id in this._hash){_12e=this._hash[id];if(_12e.declaredClass==cls){res.add(_12e);}}return res;},toArray:function(){var ar=[];for(var id in this._hash){ar.push(this._hash[id]);}return ar;},map:function(func,_12f){return dojo.map(this.toArray(),func,_12f);},every:function(func,_130){_130=_130||dojo.global;var x=0,i;for(i in this._hash){if(!func.call(_130,this._hash[i],x++,this._hash)){return false;}}return true;},some:function(func,_131){_131=_131||dojo.global;var x=0,i;for(i in this._hash){if(func.call(_131,this._hash[i],x++,this._hash)){return true;}}return false;}});(function(){dijit.registry=new dijit.WidgetSet();var hash=dijit.registry._hash,attr=dojo.attr,_132=dojo.hasAttr,_133=dojo.style;dijit.byId=function(id){return typeof id=="string"?hash[id]:id;};var _134={};dijit.getUniqueId=function(_135){var id;do{id=_135+"_"+(_135 in _134?++_134[_135]:_134[_135]=0);}while(hash[id]);return dijit._scopeName=="dijit"?id:dijit._scopeName+"_"+id;};dijit.findWidgets=function(root){var _136=[];function _137(root){for(var node=root.firstChild;node;node=node.nextSibling){if(node.nodeType==1){var _138=node.getAttribute("widgetId");if(_138){var _139=hash[_138];if(_139){_136.push(_139);}}else{_137(node);}}}};_137(root);return _136;};dijit._destroyAll=function(){dijit._curFocus=null;dijit._prevFocus=null;dijit._activeStack=[];dojo.forEach(dijit.findWidgets(dojo.body()),function(_13a){if(!_13a._destroyed){if(_13a.destroyRecursive){_13a.destroyRecursive();}else{if(_13a.destroy){_13a.destroy();}}}});};if(dojo.isIE){dojo.addOnWindowUnload(function(){dijit._destroyAll();});}dijit.byNode=function(node){return hash[node.getAttribute("widgetId")];};dijit.getEnclosingWidget=function(node){while(node){var id=node.getAttribute&&node.getAttribute("widgetId");if(id){return hash[id];}node=node.parentNode;}return null;};var _13b=(dijit._isElementShown=function(elem){var s=_133(elem);return (s.visibility!="hidden")&&(s.visibility!="collapsed")&&(s.display!="none")&&(attr(elem,"type")!="hidden");});dijit.hasDefaultTabStop=function(elem){switch(elem.nodeName.toLowerCase()){case "a":return _132(elem,"href");case "area":case "button":case "input":case "object":case "select":case "textarea":return true;case "iframe":var body;try{var _13c=elem.contentDocument;if("designMode" in _13c&&_13c.designMode=="on"){return true;}body=_13c.body;}catch(e1){try{body=elem.contentWindow.document.body;}catch(e2){return false;}}return body.contentEditable=="true"||(body.firstChild&&body.firstChild.contentEditable=="true");default:return elem.contentEditable=="true";}};var _13d=(dijit.isTabNavigable=function(elem){if(attr(elem,"disabled")){return false;}else{if(_132(elem,"tabIndex")){return attr(elem,"tabIndex")>=0;}else{return dijit.hasDefaultTabStop(elem);}}});dijit._getTabNavigable=function(root){var _13e,last,_13f,_140,_141,_142,_143={};function _144(node){return node&&node.tagName.toLowerCase()=="input"&&node.type&&node.type.toLowerCase()=="radio"&&node.name&&node.name.toLowerCase();};var _145=function(_146){dojo.query("> *",_146).forEach(function(_147){if((dojo.isIE&&_147.scopeName!=="HTML")||!_13b(_147)){return;}if(_13d(_147)){var _148=attr(_147,"tabIndex");if(!_132(_147,"tabIndex")||_148==0){if(!_13e){_13e=_147;}last=_147;}else{if(_148>0){if(!_13f||_148<_140){_140=_148;_13f=_147;}if(!_141||_148>=_142){_142=_148;_141=_147;}}}var rn=_144(_147);if(dojo.attr(_147,"checked")&&rn){_143[rn]=_147;}}if(_147.nodeName.toUpperCase()!="SELECT"){_145(_147);}});};if(_13b(root)){_145(root);}function rs(node){return _143[_144(node)]||node;};return {first:rs(_13e),last:rs(last),lowest:rs(_13f),highest:rs(_141)};};dijit.getFirstInTabbingOrder=function(root){var _149=dijit._getTabNavigable(dojo.byId(root));return _149.lowest?_149.lowest:_149.first;};dijit.getLastInTabbingOrder=function(root){var _14a=dijit._getTabNavigable(dojo.byId(root));return _14a.last?_14a.last:_14a.highest;};dijit.defaultDuration=dojo.config["defaultDuration"]||200;})();}if(!dojo._hasResource["dojo.Stateful"]){dojo._hasResource["dojo.Stateful"]=true;dojo.provide("dojo.Stateful");dojo.declare("dojo.Stateful",null,{postscript:function(_14b){if(_14b){dojo.mixin(this,_14b);}},get:function(name){return this[name];},set:function(name,_14c){if(typeof name==="object"){for(var x in name){this.set(x,name[x]);}return this;}var _14d=this[name];this[name]=_14c;if(this._watchCallbacks){this._watchCallbacks(name,_14d,_14c);}return this;},watch:function(name,_14e){var _14f=this._watchCallbacks;if(!_14f){var self=this;_14f=this._watchCallbacks=function(name,_150,_151,_152){var _153=function(_154){if(_154){_154=_154.slice();for(var i=0,l=_154.length;i<l;i++){try{_154[i].call(self,name,_150,_151);}catch(e){console.error(e);}}}};_153(_14f["_"+name]);if(!_152){_153(_14f["*"]);}};}if(!_14e&&typeof name==="function"){_14e=name;name="*";}else{name="_"+name;}var _155=_14f[name];if(typeof _155!=="object"){_155=_14f[name]=[];}_155.push(_14e);return {unwatch:function(){_155.splice(dojo.indexOf(_155,_14e),1);}};}});}if(!dojo._hasResource["dijit._WidgetBase"]){dojo._hasResource["dijit._WidgetBase"]=true;dojo.provide("dijit._WidgetBase");(function(){dojo.declare("dijit._WidgetBase",dojo.Stateful,{id:"",lang:"",dir:"","class":"",style:"",title:"",tooltip:"",baseClass:"",srcNodeRef:null,domNode:null,containerNode:null,attributeMap:{id:"",dir:"",lang:"","class":"",style:"",title:""},_blankGif:(dojo.config.blankGif||dojo.moduleUrl("dojo","resources/blank.gif")).toString(),postscript:function(_156,_157){this.create(_156,_157);},create:function(_158,_159){this.srcNodeRef=dojo.byId(_159);this._connects=[];this._subscribes=[];if(this.srcNodeRef&&(typeof this.srcNodeRef.id=="string")){this.id=this.srcNodeRef.id;}if(_158){this.params=_158;dojo._mixin(this,_158);}this.postMixInProperties();if(!this.id){this.id=dijit.getUniqueId(this.declaredClass.replace(/\./g,"_"));}dijit.registry.add(this);this.buildRendering();if(this.domNode){this._applyAttributes();var _15a=this.srcNodeRef;if(_15a&&_15a.parentNode&&this.domNode!==_15a){_15a.parentNode.replaceChild(this.domNode,_15a);}}if(this.domNode){this.domNode.setAttribute("widgetId",this.id);}this.postCreate();if(this.srcNodeRef&&!this.srcNodeRef.parentNode){delete this.srcNodeRef;}this._created=true;},_applyAttributes:function(){var _15b=function(attr,_15c){if((_15c.params&&attr in _15c.params)||_15c[attr]){_15c.set(attr,_15c[attr]);}};for(var attr in this.attributeMap){_15b(attr,this);}dojo.forEach(this._getSetterAttributes(),function(a){if(!(a in this.attributeMap)){_15b(a,this);}},this);},_getSetterAttributes:function(){var ctor=this.constructor;if(!ctor._setterAttrs){var r=(ctor._setterAttrs=[]),_15d,_15e=ctor.prototype;for(var _15f in _15e){if(dojo.isFunction(_15e[_15f])&&(_15d=_15f.match(/^_set([a-zA-Z]*)Attr$/))&&_15d[1]){r.push(_15d[1].charAt(0).toLowerCase()+_15d[1].substr(1));}}}return ctor._setterAttrs;},postMixInProperties:function(){},buildRendering:function(){if(!this.domNode){this.domNode=this.srcNodeRef||dojo.create("div");}if(this.baseClass){var _160=this.baseClass.split(" ");if(!this.isLeftToRight()){_160=_160.concat(dojo.map(_160,function(name){return name+"Rtl";}));}dojo.addClass(this.domNode,_160);}},postCreate:function(){},startup:function(){this._started=true;},destroyRecursive:function(_161){this._beingDestroyed=true;this.destroyDescendants(_161);this.destroy(_161);},destroy:function(_162){this._beingDestroyed=true;this.uninitialize();var d=dojo,dfe=d.forEach,dun=d.unsubscribe;dfe(this._connects,function(_163){dfe(_163,d.disconnect);});dfe(this._subscribes,function(_164){dun(_164);});dfe(this._supportingWidgets||[],function(w){if(w.destroyRecursive){w.destroyRecursive();}else{if(w.destroy){w.destroy();}}});this.destroyRendering(_162);dijit.registry.remove(this.id);this._destroyed=true;},destroyRendering:function(_165){if(this.bgIframe){this.bgIframe.destroy(_165);delete this.bgIframe;}if(this.domNode){if(_165){dojo.removeAttr(this.domNode,"widgetId");}else{dojo.destroy(this.domNode);}delete this.domNode;}if(this.srcNodeRef){if(!_165){dojo.destroy(this.srcNodeRef);}delete this.srcNodeRef;}},destroyDescendants:function(_166){dojo.forEach(this.getChildren(),function(_167){if(_167.destroyRecursive){_167.destroyRecursive(_166);}});},uninitialize:function(){return false;},_setClassAttr:function(_168){var _169=this[this.attributeMap["class"]||"domNode"];dojo.replaceClass(_169,_168,this["class"]);this._set("class",_168);},_setStyleAttr:function(_16a){var _16b=this[this.attributeMap.style||"domNode"];if(dojo.isObject(_16a)){dojo.style(_16b,_16a);}else{if(_16b.style.cssText){_16b.style.cssText+="; "+_16a;}else{_16b.style.cssText=_16a;}}this._set("style",_16a);},_attrToDom:function(attr,_16c){var _16d=this.attributeMap[attr];dojo.forEach(dojo.isArray(_16d)?_16d:[_16d],function(_16e){var _16f=this[_16e.node||_16e||"domNode"];var type=_16e.type||"attribute";switch(type){case "attribute":if(dojo.isFunction(_16c)){_16c=dojo.hitch(this,_16c);}var _170=_16e.attribute?_16e.attribute:(/^on[A-Z][a-zA-Z]*$/.test(attr)?attr.toLowerCase():attr);dojo.attr(_16f,_170,_16c);break;case "innerText":_16f.innerHTML="";_16f.appendChild(dojo.doc.createTextNode(_16c));break;case "innerHTML":_16f.innerHTML=_16c;break;case "class":dojo.replaceClass(_16f,_16c,this[attr]);break;}},this);},get:function(name){var _171=this._getAttrNames(name);return this[_171.g]?this[_171.g]():this[name];},set:function(name,_172){if(typeof name==="object"){for(var x in name){this.set(x,name[x]);}return this;}var _173=this._getAttrNames(name);if(this[_173.s]){var _174=this[_173.s].apply(this,Array.prototype.slice.call(arguments,1));}else{if(name in this.attributeMap){this._attrToDom(name,_172);}this._set(name,_172);}return _174||this;},_attrPairNames:{},_getAttrNames:function(name){var apn=this._attrPairNames;if(apn[name]){return apn[name];}var uc=name.charAt(0).toUpperCase()+name.substr(1);return (apn[name]={n:name+"Node",s:"_set"+uc+"Attr",g:"_get"+uc+"Attr"});},_set:function(name,_175){var _176=this[name];this[name]=_175;if(this._watchCallbacks&&this._created&&_175!==_176){this._watchCallbacks(name,_176,_175);}},toString:function(){return "[Widget "+this.declaredClass+", "+(this.id||"NO ID")+"]";},getDescendants:function(){return this.containerNode?dojo.query("[widgetId]",this.containerNode).map(dijit.byNode):[];},getChildren:function(){return this.containerNode?dijit.findWidgets(this.containerNode):[];},connect:function(obj,_177,_178){var _179=[dojo._connect(obj,_177,this,_178)];this._connects.push(_179);return _179;},disconnect:function(_17a){for(var i=0;i<this._connects.length;i++){if(this._connects[i]==_17a){dojo.forEach(_17a,dojo.disconnect);this._connects.splice(i,1);return;}}},subscribe:function(_17b,_17c){var _17d=dojo.subscribe(_17b,this,_17c);this._subscribes.push(_17d);return _17d;},unsubscribe:function(_17e){for(var i=0;i<this._subscribes.length;i++){if(this._subscribes[i]==_17e){dojo.unsubscribe(_17e);this._subscribes.splice(i,1);return;}}},isLeftToRight:function(){return this.dir?(this.dir=="ltr"):dojo._isBodyLtr();},placeAt:function(_17f,_180){if(_17f.declaredClass&&_17f.addChild){_17f.addChild(this,_180);}else{dojo.place(this.domNode,_17f,_180);}return this;}});})();}if(!dojo._hasResource["dijit._base.focus"]){dojo._hasResource["dijit._base.focus"]=true;dojo.provide("dijit._base.focus");dojo.mixin(dijit,{_curFocus:null,_prevFocus:null,isCollapsed:function(){return dijit.getBookmark().isCollapsed;},getBookmark:function(){var bm,rg,tg,sel=dojo.doc.selection,cf=dijit._curFocus;if(dojo.global.getSelection){sel=dojo.global.getSelection();if(sel){if(sel.isCollapsed){tg=cf?cf.tagName:"";if(tg){tg=tg.toLowerCase();if(tg=="textarea"||(tg=="input"&&(!cf.type||cf.type.toLowerCase()=="text"))){sel={start:cf.selectionStart,end:cf.selectionEnd,node:cf,pRange:true};return {isCollapsed:(sel.end<=sel.start),mark:sel};}}bm={isCollapsed:true};if(sel.rangeCount){bm.mark=sel.getRangeAt(0).cloneRange();}}else{rg=sel.getRangeAt(0);bm={isCollapsed:false,mark:rg.cloneRange()};}}}else{if(sel){tg=cf?cf.tagName:"";tg=tg.toLowerCase();if(cf&&tg&&(tg=="button"||tg=="textarea"||tg=="input")){if(sel.type&&sel.type.toLowerCase()=="none"){return {isCollapsed:true,mark:null};}else{rg=sel.createRange();return {isCollapsed:rg.text&&rg.text.length?false:true,mark:{range:rg,pRange:true}};}}bm={};try{rg=sel.createRange();bm.isCollapsed=!(sel.type=="Text"?rg.htmlText.length:rg.length);}catch(e){bm.isCollapsed=true;return bm;}if(sel.type.toUpperCase()=="CONTROL"){if(rg.length){bm.mark=[];var i=0,len=rg.length;while(i<len){bm.mark.push(rg.item(i++));}}else{bm.isCollapsed=true;bm.mark=null;}}else{bm.mark=rg.getBookmark();}}else{console.warn("No idea how to store the current selection for this browser!");}}return bm;},moveToBookmark:function(_181){var _182=dojo.doc,mark=_181.mark;if(mark){if(dojo.global.getSelection){var sel=dojo.global.getSelection();if(sel&&sel.removeAllRanges){if(mark.pRange){var r=mark;var n=r.node;n.selectionStart=r.start;n.selectionEnd=r.end;}else{sel.removeAllRanges();sel.addRange(mark);}}else{console.warn("No idea how to restore selection for this browser!");}}else{if(_182.selection&&mark){var rg;if(mark.pRange){rg=mark.range;}else{if(dojo.isArray(mark)){rg=_182.body.createControlRange();dojo.forEach(mark,function(n){rg.addElement(n);});}else{rg=_182.body.createTextRange();rg.moveToBookmark(mark);}}rg.select();}}}},getFocus:function(menu,_183){var node=!dijit._curFocus||(menu&&dojo.isDescendant(dijit._curFocus,menu.domNode))?dijit._prevFocus:dijit._curFocus;return {node:node,bookmark:(node==dijit._curFocus)&&dojo.withGlobal(_183||dojo.global,dijit.getBookmark),openedForWindow:_183};},focus:function(_184){if(!_184){return;}var node="node" in _184?_184.node:_184,_185=_184.bookmark,_186=_184.openedForWindow,_187=_185?_185.isCollapsed:false;if(node){var _188=(node.tagName.toLowerCase()=="iframe")?node.contentWindow:node;if(_188&&_188.focus){try{_188.focus();}catch(e){}}dijit._onFocusNode(node);}if(_185&&dojo.withGlobal(_186||dojo.global,dijit.isCollapsed)&&!_187){if(_186){_186.focus();}try{dojo.withGlobal(_186||dojo.global,dijit.moveToBookmark,null,[_185]);}catch(e2){}}},_activeStack:[],registerIframe:function(_189){return dijit.registerWin(_189.contentWindow,_189);},unregisterIframe:function(_18a){dijit.unregisterWin(_18a);},registerWin:function(_18b,_18c){var _18d=function(evt){dijit._justMouseDowned=true;setTimeout(function(){dijit._justMouseDowned=false;},0);if(dojo.isIE&&evt&&evt.srcElement&&evt.srcElement.parentNode==null){return;}dijit._onTouchNode(_18c||evt.target||evt.srcElement,"mouse");};var doc=dojo.isIE?_18b.document.documentElement:_18b.document;if(doc){if(dojo.isIE){_18b.document.body.attachEvent("onmousedown",_18d);var _18e=function(evt){if(evt.srcElement.tagName.toLowerCase()!="#document"&&dijit.isTabNavigable(evt.srcElement)){dijit._onFocusNode(_18c||evt.srcElement);}else{dijit._onTouchNode(_18c||evt.srcElement);}};doc.attachEvent("onactivate",_18e);var _18f=function(evt){dijit._onBlurNode(_18c||evt.srcElement);};doc.attachEvent("ondeactivate",_18f);return function(){_18b.document.detachEvent("onmousedown",_18d);doc.detachEvent("onactivate",_18e);doc.detachEvent("ondeactivate",_18f);doc=null;};}else{doc.body.addEventListener("mousedown",_18d,true);var _190=function(evt){dijit._onFocusNode(_18c||evt.target);};doc.addEventListener("focus",_190,true);var _191=function(evt){dijit._onBlurNode(_18c||evt.target);};doc.addEventListener("blur",_191,true);return function(){doc.body.removeEventListener("mousedown",_18d,true);doc.removeEventListener("focus",_190,true);doc.removeEventListener("blur",_191,true);doc=null;};}}},unregisterWin:function(_192){_192&&_192();},_onBlurNode:function(node){dijit._prevFocus=dijit._curFocus;dijit._curFocus=null;if(dijit._justMouseDowned){return;}if(dijit._clearActiveWidgetsTimer){clearTimeout(dijit._clearActiveWidgetsTimer);}dijit._clearActiveWidgetsTimer=setTimeout(function(){delete dijit._clearActiveWidgetsTimer;dijit._setStack([]);dijit._prevFocus=null;},100);},_onTouchNode:function(node,by){if(dijit._clearActiveWidgetsTimer){clearTimeout(dijit._clearActiveWidgetsTimer);delete dijit._clearActiveWidgetsTimer;}var _193=[];try{while(node){var _194=dojo.attr(node,"dijitPopupParent");if(_194){node=dijit.byId(_194).domNode;}else{if(node.tagName&&node.tagName.toLowerCase()=="body"){if(node===dojo.body()){break;}node=dojo.window.get(node.ownerDocument).frameElement;}else{var id=node.getAttribute&&node.getAttribute("widgetId"),_195=id&&dijit.byId(id);if(_195&&!(by=="mouse"&&_195.get("disabled"))){_193.unshift(id);}node=node.parentNode;}}}}catch(e){}dijit._setStack(_193,by);},_onFocusNode:function(node){if(!node){return;}if(node.nodeType==9){return;}dijit._onTouchNode(node);if(node==dijit._curFocus){return;}if(dijit._curFocus){dijit._prevFocus=dijit._curFocus;}dijit._curFocus=node;dojo.publish("focusNode",[node]);},_setStack:function(_196,by){var _197=dijit._activeStack;dijit._activeStack=_196;for(var _198=0;_198<Math.min(_197.length,_196.length);_198++){if(_197[_198]!=_196[_198]){break;}}var _199;for(var i=_197.length-1;i>=_198;i--){_199=dijit.byId(_197[i]);if(_199){_199._focused=false;_199.set("focused",false);_199._hasBeenBlurred=true;if(_199._onBlur){_199._onBlur(by);}dojo.publish("widgetBlur",[_199,by]);}}for(i=_198;i<_196.length;i++){_199=dijit.byId(_196[i]);if(_199){_199._focused=true;_199.set("focused",true);if(_199._onFocus){_199._onFocus(by);}dojo.publish("widgetFocus",[_199,by]);}}}});dojo.addOnLoad(function(){var _19a=dijit.registerWin(window);if(dojo.isIE){dojo.addOnWindowUnload(function(){dijit.unregisterWin(_19a);_19a=null;});}});}if(!dojo._hasResource["dojo.AdapterRegistry"]){dojo._hasResource["dojo.AdapterRegistry"]=true;dojo.provide("dojo.AdapterRegistry");dojo.AdapterRegistry=function(_19b){this.pairs=[];this.returnWrappers=_19b||false;};dojo.extend(dojo.AdapterRegistry,{register:function(name,_19c,wrap,_19d,_19e){this.pairs[((_19e)?"unshift":"push")]([name,_19c,wrap,_19d]);},match:function(){for(var i=0;i<this.pairs.length;i++){var pair=this.pairs[i];if(pair[1].apply(this,arguments)){if((pair[3])||(this.returnWrappers)){return pair[2];}else{return pair[2].apply(this,arguments);}}}throw new Error("No match found");},unregister:function(name){for(var i=0;i<this.pairs.length;i++){var pair=this.pairs[i];if(pair[0]==name){this.pairs.splice(i,1);return true;}}return false;}});}if(!dojo._hasResource["dijit._base.place"]){dojo._hasResource["dijit._base.place"]=true;dojo.provide("dijit._base.place");dijit.getViewport=function(){return dojo.window.getBox();};dijit.placeOnScreen=function(node,pos,_19f,_1a0){var _1a1=dojo.map(_19f,function(_1a2){var c={corner:_1a2,pos:{x:pos.x,y:pos.y}};if(_1a0){c.pos.x+=_1a2.charAt(1)=="L"?_1a0.x:-_1a0.x;c.pos.y+=_1a2.charAt(0)=="T"?_1a0.y:-_1a0.y;}return c;});return dijit._place(node,_1a1);};dijit._place=function(node,_1a3,_1a4,_1a5){var view=dojo.window.getBox();if(!node.parentNode||String(node.parentNode.tagName).toLowerCase()!="body"){dojo.body().appendChild(node);}var best=null;dojo.some(_1a3,function(_1a6){var _1a7=_1a6.corner;var pos=_1a6.pos;var _1a8=0;var _1a9={w:_1a7.charAt(1)=="L"?(view.l+view.w)-pos.x:pos.x-view.l,h:_1a7.charAt(1)=="T"?(view.t+view.h)-pos.y:pos.y-view.t};if(_1a4){var res=_1a4(node,_1a6.aroundCorner,_1a7,_1a9,_1a5);_1a8=typeof res=="undefined"?0:res;}var _1aa=node.style;var _1ab=_1aa.display;var _1ac=_1aa.visibility;_1aa.visibility="hidden";_1aa.display="";var mb=dojo.marginBox(node);_1aa.display=_1ab;_1aa.visibility=_1ac;var _1ad=Math.max(view.l,_1a7.charAt(1)=="L"?pos.x:(pos.x-mb.w)),_1ae=Math.max(view.t,_1a7.charAt(0)=="T"?pos.y:(pos.y-mb.h)),endX=Math.min(view.l+view.w,_1a7.charAt(1)=="L"?(_1ad+mb.w):pos.x),endY=Math.min(view.t+view.h,_1a7.charAt(0)=="T"?(_1ae+mb.h):pos.y),_1af=endX-_1ad,_1b0=endY-_1ae;_1a8+=(mb.w-_1af)+(mb.h-_1b0);if(best==null||_1a8<best.overflow){best={corner:_1a7,aroundCorner:_1a6.aroundCorner,x:_1ad,y:_1ae,w:_1af,h:_1b0,overflow:_1a8,spaceAvailable:_1a9};}return !_1a8;});if(best.overflow&&_1a4){_1a4(node,best.aroundCorner,best.corner,best.spaceAvailable,_1a5);}var l=dojo._isBodyLtr(),s=node.style;s.top=best.y+"px";s[l?"left":"right"]=(l?best.x:view.w-best.x-best.w)+"px";return best;};dijit.placeOnScreenAroundNode=function(node,_1b1,_1b2,_1b3){_1b1=dojo.byId(_1b1);var _1b4=dojo.position(_1b1,true);return dijit._placeOnScreenAroundRect(node,_1b4.x,_1b4.y,_1b4.w,_1b4.h,_1b2,_1b3);};dijit.placeOnScreenAroundRectangle=function(node,_1b5,_1b6,_1b7){return dijit._placeOnScreenAroundRect(node,_1b5.x,_1b5.y,_1b5.width,_1b5.height,_1b6,_1b7);};dijit._placeOnScreenAroundRect=function(node,x,y,_1b8,_1b9,_1ba,_1bb){var _1bc=[];for(var _1bd in _1ba){_1bc.push({aroundCorner:_1bd,corner:_1ba[_1bd],pos:{x:x+(_1bd.charAt(1)=="L"?0:_1b8),y:y+(_1bd.charAt(0)=="T"?0:_1b9)}});}return dijit._place(node,_1bc,_1bb,{w:_1b8,h:_1b9});};dijit.placementRegistry=new dojo.AdapterRegistry();dijit.placementRegistry.register("node",function(n,x){return typeof x=="object"&&typeof x.offsetWidth!="undefined"&&typeof x.offsetHeight!="undefined";},dijit.placeOnScreenAroundNode);dijit.placementRegistry.register("rect",function(n,x){return typeof x=="object"&&"x" in x&&"y" in x&&"width" in x&&"height" in x;},dijit.placeOnScreenAroundRectangle);dijit.placeOnScreenAroundElement=function(node,_1be,_1bf,_1c0){return dijit.placementRegistry.match.apply(dijit.placementRegistry,arguments);};dijit.getPopupAroundAlignment=function(_1c1,_1c2){var _1c3={};dojo.forEach(_1c1,function(pos){switch(pos){case "after":_1c3[_1c2?"BR":"BL"]=_1c2?"BL":"BR";break;case "before":_1c3[_1c2?"BL":"BR"]=_1c2?"BR":"BL";break;case "below-alt":_1c2=!_1c2;case "below":_1c3[_1c2?"BL":"BR"]=_1c2?"TL":"TR";_1c3[_1c2?"BR":"BL"]=_1c2?"TR":"TL";break;case "above-alt":_1c2=!_1c2;case "above":default:_1c3[_1c2?"TL":"TR"]=_1c2?"BL":"BR";_1c3[_1c2?"TR":"TL"]=_1c2?"BR":"BL";break;}});return _1c3;};}if(!dojo._hasResource["dijit._base.window"]){dojo._hasResource["dijit._base.window"]=true;dojo.provide("dijit._base.window");dijit.getDocumentWindow=function(doc){return dojo.window.get(doc);};}if(!dojo._hasResource["dijit._base.popup"]){dojo._hasResource["dijit._base.popup"]=true;dojo.provide("dijit._base.popup");dijit.popup={_stack:[],_beginZIndex:1000,_idGen:1,_createWrapper:function(_1c4){var _1c5=_1c4.declaredClass?_1c4._popupWrapper:(_1c4.parentNode&&dojo.hasClass(_1c4.parentNode,"dijitPopup")),node=_1c4.domNode||_1c4;if(!_1c5){_1c5=dojo.create("div",{"class":"dijitPopup",style:{display:"none"},role:"presentation"},dojo.body());_1c5.appendChild(node);var s=node.style;s.display="";s.visibility="";s.position="";s.top="0px";if(_1c4.declaredClass){_1c4._popupWrapper=_1c5;dojo.connect(_1c4,"destroy",function(){dojo.destroy(_1c5);delete _1c4._popupWrapper;});}}return _1c5;},moveOffScreen:function(_1c6){var _1c7=this._createWrapper(_1c6);dojo.style(_1c7,{visibility:"hidden",top:"-9999px",display:""});},hide:function(_1c8){var _1c9=this._createWrapper(_1c8);dojo.style(_1c9,"display","none");},getTopPopup:function(){var _1ca=this._stack;for(var pi=_1ca.length-1;pi>0&&_1ca[pi].parent===_1ca[pi-1].widget;pi--){}return _1ca[pi];},open:function(args){var _1cb=this._stack,_1cc=args.popup,_1cd=args.orient||((args.parent?args.parent.isLeftToRight():dojo._isBodyLtr())?{"BL":"TL","BR":"TR","TL":"BL","TR":"BR"}:{"BR":"TR","BL":"TL","TR":"BR","TL":"BL"}),_1ce=args.around,id=(args.around&&args.around.id)?(args.around.id+"_dropdown"):("popup_"+this._idGen++);while(_1cb.length&&(!args.parent||!dojo.isDescendant(args.parent.domNode,_1cb[_1cb.length-1].widget.domNode))){dijit.popup.close(_1cb[_1cb.length-1].widget);}var _1cf=this._createWrapper(_1cc);dojo.attr(_1cf,{id:id,style:{zIndex:this._beginZIndex+_1cb.length},"class":"dijitPopup "+(_1cc.baseClass||_1cc["class"]||"").split(" ")[0]+"Popup",dijitPopupParent:args.parent?args.parent.id:""});if(dojo.isIE||dojo.isMoz){if(!_1cc.bgIframe){_1cc.bgIframe=new dijit.BackgroundIframe(_1cf);}}var best=_1ce?dijit.placeOnScreenAroundElement(_1cf,_1ce,_1cd,_1cc.orient?dojo.hitch(_1cc,"orient"):null):dijit.placeOnScreen(_1cf,args,_1cd=="R"?["TR","BR","TL","BL"]:["TL","BL","TR","BR"],args.padding);_1cf.style.display="";_1cf.style.visibility="visible";_1cc.domNode.style.visibility="visible";var _1d0=[];_1d0.push(dojo.connect(_1cf,"onkeypress",this,function(evt){if(evt.charOrCode==dojo.keys.ESCAPE&&args.onCancel){dojo.stopEvent(evt);args.onCancel();}else{if(evt.charOrCode===dojo.keys.TAB){dojo.stopEvent(evt);var _1d1=this.getTopPopup();if(_1d1&&_1d1.onCancel){_1d1.onCancel();}}}}));if(_1cc.onCancel){_1d0.push(dojo.connect(_1cc,"onCancel",args.onCancel));}_1d0.push(dojo.connect(_1cc,_1cc.onExecute?"onExecute":"onChange",this,function(){var _1d2=this.getTopPopup();if(_1d2&&_1d2.onExecute){_1d2.onExecute();}}));_1cb.push({widget:_1cc,parent:args.parent,onExecute:args.onExecute,onCancel:args.onCancel,onClose:args.onClose,handlers:_1d0});if(_1cc.onOpen){_1cc.onOpen(best);}return best;},close:function(_1d3){var _1d4=this._stack;while((_1d3&&dojo.some(_1d4,function(elem){return elem.widget==_1d3;}))||(!_1d3&&_1d4.length)){var top=_1d4.pop(),_1d5=top.widget,_1d6=top.onClose;if(_1d5.onClose){_1d5.onClose();}dojo.forEach(top.handlers,dojo.disconnect);if(_1d5&&_1d5.domNode){this.hide(_1d5);}if(_1d6){_1d6();}}}};dijit._frames=new function(){var _1d7=[];this.pop=function(){var _1d8;if(_1d7.length){_1d8=_1d7.pop();_1d8.style.display="";}else{if(dojo.isIE<9){var burl=dojo.config["dojoBlankHtmlUrl"]||(dojo.moduleUrl("dojo","resources/blank.html")+"")||"javascript:\"\"";var html="<iframe src='"+burl+"'"+" style='position: absolute; left: 0px; top: 0px;"+"z-index: -1; filter:Alpha(Opacity=\"0\");'>";_1d8=dojo.doc.createElement(html);}else{_1d8=dojo.create("iframe");_1d8.src="javascript:\"\"";_1d8.className="dijitBackgroundIframe";dojo.style(_1d8,"opacity",0.1);}_1d8.tabIndex=-1;dijit.setWaiRole(_1d8,"presentation");}return _1d8;};this.push=function(_1d9){_1d9.style.display="none";_1d7.push(_1d9);};}();dijit.BackgroundIframe=function(node){if(!node.id){throw new Error("no id");}if(dojo.isIE||dojo.isMoz){var _1da=(this.iframe=dijit._frames.pop());node.appendChild(_1da);if(dojo.isIE<7||dojo.isQuirks){this.resize(node);this._conn=dojo.connect(node,"onresize",this,function(){this.resize(node);});}else{dojo.style(_1da,{width:"100%",height:"100%"});}}};dojo.extend(dijit.BackgroundIframe,{resize:function(node){if(this.iframe){dojo.style(this.iframe,{width:node.offsetWidth+"px",height:node.offsetHeight+"px"});}},destroy:function(){if(this._conn){dojo.disconnect(this._conn);this._conn=null;}if(this.iframe){dijit._frames.push(this.iframe);delete this.iframe;}}});}if(!dojo._hasResource["dijit._base.scroll"]){dojo._hasResource["dijit._base.scroll"]=true;dojo.provide("dijit._base.scroll");dijit.scrollIntoView=function(node,pos){dojo.window.scrollIntoView(node,pos);};}if(!dojo._hasResource["dojo.uacss"]){dojo._hasResource["dojo.uacss"]=true;dojo.provide("dojo.uacss");(function(){var d=dojo,html=d.doc.documentElement,ie=d.isIE,_1db=d.isOpera,maj=Math.floor,ff=d.isFF,_1dc=d.boxModel.replace(/-/,""),_1dd={dj_ie:ie,dj_ie6:maj(ie)==6,dj_ie7:maj(ie)==7,dj_ie8:maj(ie)==8,dj_ie9:maj(ie)==9,dj_quirks:d.isQuirks,dj_iequirks:ie&&d.isQuirks,dj_opera:_1db,dj_khtml:d.isKhtml,dj_webkit:d.isWebKit,dj_safari:d.isSafari,dj_chrome:d.isChrome,dj_gecko:d.isMozilla,dj_ff3:maj(ff)==3};_1dd["dj_"+_1dc]=true;var _1de="";for(var clz in _1dd){if(_1dd[clz]){_1de+=clz+" ";}}html.className=d.trim(html.className+" "+_1de);dojo._loaders.unshift(function(){if(!dojo._isBodyLtr()){var _1df="dj_rtl dijitRtl "+_1de.replace(/ /g,"-rtl ");html.className=d.trim(html.className+" "+_1df);}});})();}if(!dojo._hasResource["dijit._base.sniff"]){dojo._hasResource["dijit._base.sniff"]=true;dojo.provide("dijit._base.sniff");}if(!dojo._hasResource["dijit._base.typematic"]){dojo._hasResource["dijit._base.typematic"]=true;dojo.provide("dijit._base.typematic");dijit.typematic={_fireEventAndReload:function(){this._timer=null;this._callback(++this._count,this._node,this._evt);this._currentTimeout=Math.max(this._currentTimeout<0?this._initialDelay:(this._subsequentDelay>1?this._subsequentDelay:Math.round(this._currentTimeout*this._subsequentDelay)),this._minDelay);this._timer=setTimeout(dojo.hitch(this,"_fireEventAndReload"),this._currentTimeout);},trigger:function(evt,_1e0,node,_1e1,obj,_1e2,_1e3,_1e4){if(obj!=this._obj){this.stop();this._initialDelay=_1e3||500;this._subsequentDelay=_1e2||0.9;this._minDelay=_1e4||10;this._obj=obj;this._evt=evt;this._node=node;this._currentTimeout=-1;this._count=-1;this._callback=dojo.hitch(_1e0,_1e1);this._fireEventAndReload();this._evt=dojo.mixin({faux:true},evt);}},stop:function(){if(this._timer){clearTimeout(this._timer);this._timer=null;}if(this._obj){this._callback(-1,this._node,this._evt);this._obj=null;}},addKeyListener:function(node,_1e5,_1e6,_1e7,_1e8,_1e9,_1ea){if(_1e5.keyCode){_1e5.charOrCode=_1e5.keyCode;dojo.deprecated("keyCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");}else{if(_1e5.charCode){_1e5.charOrCode=String.fromCharCode(_1e5.charCode);dojo.deprecated("charCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");}}return [dojo.connect(node,"onkeypress",this,function(evt){if(evt.charOrCode==_1e5.charOrCode&&(_1e5.ctrlKey===undefined||_1e5.ctrlKey==evt.ctrlKey)&&(_1e5.altKey===undefined||_1e5.altKey==evt.altKey)&&(_1e5.metaKey===undefined||_1e5.metaKey==(evt.metaKey||false))&&(_1e5.shiftKey===undefined||_1e5.shiftKey==evt.shiftKey)){dojo.stopEvent(evt);dijit.typematic.trigger(evt,_1e6,node,_1e7,_1e5,_1e8,_1e9,_1ea);}else{if(dijit.typematic._obj==_1e5){dijit.typematic.stop();}}}),dojo.connect(node,"onkeyup",this,function(evt){if(dijit.typematic._obj==_1e5){dijit.typematic.stop();}})];},addMouseListener:function(node,_1eb,_1ec,_1ed,_1ee,_1ef){var dc=dojo.connect;return [dc(node,"mousedown",this,function(evt){dojo.stopEvent(evt);dijit.typematic.trigger(evt,_1eb,node,_1ec,node,_1ed,_1ee,_1ef);}),dc(node,"mouseup",this,function(evt){dojo.stopEvent(evt);dijit.typematic.stop();}),dc(node,"mouseout",this,function(evt){dojo.stopEvent(evt);dijit.typematic.stop();}),dc(node,"mousemove",this,function(evt){evt.preventDefault();}),dc(node,"dblclick",this,function(evt){dojo.stopEvent(evt);if(dojo.isIE){dijit.typematic.trigger(evt,_1eb,node,_1ec,node,_1ed,_1ee,_1ef);setTimeout(dojo.hitch(this,dijit.typematic.stop),50);}})];},addListener:function(_1f0,_1f1,_1f2,_1f3,_1f4,_1f5,_1f6,_1f7){return this.addKeyListener(_1f1,_1f2,_1f3,_1f4,_1f5,_1f6,_1f7).concat(this.addMouseListener(_1f0,_1f3,_1f4,_1f5,_1f6,_1f7));}};}if(!dojo._hasResource["dijit._base.wai"]){dojo._hasResource["dijit._base.wai"]=true;dojo.provide("dijit._base.wai");dijit.wai={onload:function(){var div=dojo.create("div",{id:"a11yTestNode",style:{cssText:"border: 1px solid;"+"border-color:red green;"+"position: absolute;"+"height: 5px;"+"top: -999px;"+"background-image: url(\""+(dojo.config.blankGif||dojo.moduleUrl("dojo","resources/blank.gif"))+"\");"}},dojo.body());var cs=dojo.getComputedStyle(div);if(cs){var _1f8=cs.backgroundImage;var _1f9=(cs.borderTopColor==cs.borderRightColor)||(_1f8!=null&&(_1f8=="none"||_1f8=="url(invalid-url:)"));dojo[_1f9?"addClass":"removeClass"](dojo.body(),"dijit_a11y");if(dojo.isIE){div.outerHTML="";}else{dojo.body().removeChild(div);}}}};if(dojo.isIE||dojo.isMoz){dojo._loaders.unshift(dijit.wai.onload);}dojo.mixin(dijit,{hasWaiRole:function(elem,role){var _1fa=this.getWaiRole(elem);return role?(_1fa.indexOf(role)>-1):(_1fa.length>0);},getWaiRole:function(elem){return dojo.trim((dojo.attr(elem,"role")||"").replace("wairole:",""));},setWaiRole:function(elem,role){dojo.attr(elem,"role",role);},removeWaiRole:function(elem,role){var _1fb=dojo.attr(elem,"role");if(!_1fb){return;}if(role){var t=dojo.trim((" "+_1fb+" ").replace(" "+role+" "," "));dojo.attr(elem,"role",t);}else{elem.removeAttribute("role");}},hasWaiState:function(elem,_1fc){return elem.hasAttribute?elem.hasAttribute("aria-"+_1fc):!!elem.getAttribute("aria-"+_1fc);},getWaiState:function(elem,_1fd){return elem.getAttribute("aria-"+_1fd)||"";},setWaiState:function(elem,_1fe,_1ff){elem.setAttribute("aria-"+_1fe,_1ff);},removeWaiState:function(elem,_200){elem.removeAttribute("aria-"+_200);}});}if(!dojo._hasResource["dijit._base"]){dojo._hasResource["dijit._base"]=true;dojo.provide("dijit._base");}if(!dojo._hasResource["dijit._Widget"]){dojo._hasResource["dijit._Widget"]=true;dojo.provide("dijit._Widget");dojo.connect(dojo,"_connect",function(_201,_202){if(_201&&dojo.isFunction(_201._onConnect)){_201._onConnect(_202);}});dijit._connectOnUseEventHandler=function(_203){};dijit._lastKeyDownNode=null;if(dojo.isIE){(function(){var _204=function(evt){dijit._lastKeyDownNode=evt.srcElement;};dojo.doc.attachEvent("onkeydown",_204);dojo.addOnWindowUnload(function(){dojo.doc.detachEvent("onkeydown",_204);});})();}else{dojo.doc.addEventListener("keydown",function(evt){dijit._lastKeyDownNode=evt.target;},true);}(function(){dojo.declare("dijit._Widget",dijit._WidgetBase,{_deferredConnects:{onClick:"",onDblClick:"",onKeyDown:"",onKeyPress:"",onKeyUp:"",onMouseMove:"",onMouseDown:"",onMouseOut:"",onMouseOver:"",onMouseLeave:"",onMouseEnter:"",onMouseUp:""},onClick:dijit._connectOnUseEventHandler,onDblClick:dijit._connectOnUseEventHandler,onKeyDown:dijit._connectOnUseEventHandler,onKeyPress:dijit._connectOnUseEventHandler,onKeyUp:dijit._connectOnUseEventHandler,onMouseDown:dijit._connectOnUseEventHandler,onMouseMove:dijit._connectOnUseEventHandler,onMouseOut:dijit._connectOnUseEventHandler,onMouseOver:dijit._connectOnUseEventHandler,onMouseLeave:dijit._connectOnUseEventHandler,onMouseEnter:dijit._connectOnUseEventHandler,onMouseUp:dijit._connectOnUseEventHandler,create:function(_205,_206){this._deferredConnects=dojo.clone(this._deferredConnects);for(var attr in this.attributeMap){delete this._deferredConnects[attr];}for(attr in this._deferredConnects){if(this[attr]!==dijit._connectOnUseEventHandler){delete this._deferredConnects[attr];}}this.inherited(arguments);if(this.domNode){for(attr in this.params){this._onConnect(attr);}}},_onConnect:function(_207){if(_207 in this._deferredConnects){var _208=this[this._deferredConnects[_207]||"domNode"];this.connect(_208,_207.toLowerCase(),_207);delete this._deferredConnects[_207];}},focused:false,isFocusable:function(){return this.focus&&(dojo.style(this.domNode,"display")!="none");},onFocus:function(){},onBlur:function(){},_onFocus:function(e){this.onFocus();},_onBlur:function(){this.onBlur();},setAttribute:function(attr,_209){dojo.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.","","2.0");this.set(attr,_209);},attr:function(name,_20a){if(dojo.config.isDebug){var _20b=arguments.callee._ach||(arguments.callee._ach={}),_20c=(arguments.callee.caller||"unknown caller").toString();if(!_20b[_20c]){dojo.deprecated(this.declaredClass+"::attr() is deprecated. Use get() or set() instead, called from "+_20c,"","2.0");_20b[_20c]=true;}}var args=arguments.length;if(args>=2||typeof name==="object"){return this.set.apply(this,arguments);}else{return this.get(name);}},nodesWithKeyClick:["input","button"],connect:function(obj,_20d,_20e){var d=dojo,dc=d._connect,_20f=this.inherited(arguments,[obj,_20d=="ondijitclick"?"onclick":_20d,_20e]);if(_20d=="ondijitclick"){if(d.indexOf(this.nodesWithKeyClick,obj.nodeName.toLowerCase())==-1){var m=d.hitch(this,_20e);_20f.push(dc(obj,"onkeydown",this,function(e){if((e.keyCode==d.keys.ENTER||e.keyCode==d.keys.SPACE)&&!e.ctrlKey&&!e.shiftKey&&!e.altKey&&!e.metaKey){dijit._lastKeyDownNode=e.target;if(!("openDropDown" in this&&obj==this._buttonNode)){e.preventDefault();}}}),dc(obj,"onkeyup",this,function(e){if((e.keyCode==d.keys.ENTER||e.keyCode==d.keys.SPACE)&&e.target==dijit._lastKeyDownNode&&!e.ctrlKey&&!e.shiftKey&&!e.altKey&&!e.metaKey){dijit._lastKeyDownNode=null;return m(e);}}));}}return _20f;},_onShow:function(){this.onShow();},onShow:function(){},onHide:function(){},onClose:function(){return true;}});})();}if(!dojo._hasResource["dojo.string"]){dojo._hasResource["dojo.string"]=true;dojo.provide("dojo.string");dojo.getObject("string",true,dojo);dojo.string.rep=function(str,num){if(num<=0||!str){return "";}var buf=[];for(;;){if(num&1){buf.push(str);}if(!(num>>=1)){break;}str+=str;}return buf.join("");};dojo.string.pad=function(text,size,ch,end){if(!ch){ch="0";}var out=String(text),pad=dojo.string.rep(ch,Math.ceil((size-out.length)/ch.length));return end?out+pad:pad+out;};dojo.string.substitute=function(_210,map,_211,_212){_212=_212||dojo.global;_211=_211?dojo.hitch(_212,_211):function(v){return v;};return _210.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g,function(_213,key,_214){var _215=dojo.getObject(key,false,map);if(_214){_215=dojo.getObject(_214,false,_212).call(_212,_215,key);}return _211(_215,key).toString();});};dojo.string.trim=String.prototype.trim?dojo.trim:function(str){str=str.replace(/^\s+/,"");for(var i=str.length-1;i>=0;i--){if(/\S/.test(str.charAt(i))){str=str.substring(0,i+1);break;}}return str;};}if(!dojo._hasResource["dojo.parser"]){dojo._hasResource["dojo.parser"]=true;dojo.provide("dojo.parser");new Date("X");dojo.parser=new function(){var d=dojo;function _216(_217){if(d.isString(_217)){return "string";}if(typeof _217=="number"){return "number";}if(typeof _217=="boolean"){return "boolean";}if(d.isFunction(_217)){return "function";}if(d.isArray(_217)){return "array";}if(_217 instanceof Date){return "date";}if(_217 instanceof d._Url){return "url";}return "object";};function _218(_219,type){switch(type){case "string":return _219;case "number":return _219.length?Number(_219):NaN;case "boolean":return typeof _219=="boolean"?_219:!(_219.toLowerCase()=="false");case "function":if(d.isFunction(_219)){_219=_219.toString();_219=d.trim(_219.substring(_219.indexOf("{")+1,_219.length-1));}try{if(_219===""||_219.search(/[^\w\.]+/i)!=-1){return new Function(_219);}else{return d.getObject(_219,false)||new Function(_219);}}catch(e){return new Function();}case "array":return _219?_219.split(/\s*,\s*/):[];case "date":switch(_219){case "":return new Date("");case "now":return new Date();default:return d.date.stamp.fromISOString(_219);}case "url":return d.baseUrl+_219;default:return d.fromJson(_219);}};var _21a={},_21b={};d.connect(d,"extend",function(){_21b={};});function _21c(cls,_21d){for(var name in cls){if(name.charAt(0)=="_"){continue;}if(name in _21a){continue;}_21d[name]=_216(cls[name]);}return _21d;};function _21e(_21f,_220){var c=_21b[_21f];if(!c){var cls=d.getObject(_21f),_221=null;if(!cls){return null;}if(!_220){_221=_21c(cls.prototype,{});}c={cls:cls,params:_221};}else{if(!_220&&!c.params){c.params=_21c(c.cls.prototype,{});}}return c;};this._functionFromScript=function(_222,_223){var _224="";var _225="";var _226=(_222.getAttribute(_223+"args")||_222.getAttribute("args"));if(_226){d.forEach(_226.split(/\s*,\s*/),function(part,idx){_224+="var "+part+" = arguments["+idx+"]; ";});}var _227=_222.getAttribute("with");if(_227&&_227.length){d.forEach(_227.split(/\s*,\s*/),function(part){_224+="with("+part+"){";_225+="}";});}return new Function(_224+_222.innerHTML+_225);};this.instantiate=function(_228,_229,args){var _22a=[],_229=_229||{};args=args||{};var _22b=(args.scope||d._scopeName)+"Type",_22c="data-"+(args.scope||d._scopeName)+"-";d.forEach(_228,function(obj){if(!obj){return;}var node,type,_22d,_22e,_22f,_230;if(obj.node){node=obj.node;type=obj.type;_230=obj.fastpath;_22d=obj.clsInfo||(type&&_21e(type,_230));_22e=_22d&&_22d.cls;_22f=obj.scripts;}else{node=obj;type=_22b in _229?_229[_22b]:node.getAttribute(_22b);_22d=type&&_21e(type);_22e=_22d&&_22d.cls;_22f=(_22e&&(_22e._noScript||_22e.prototype._noScript)?[]:d.query("> script[type^='dojo/']",node));}if(!_22d){throw new Error("Could not load class '"+type);}var _231={};if(args.defaults){d._mixin(_231,args.defaults);}if(obj.inherited){d._mixin(_231,obj.inherited);}if(_230){var _232=node.getAttribute(_22c+"props");if(_232&&_232.length){try{_232=d.fromJson.call(args.propsThis,"{"+_232+"}");d._mixin(_231,_232);}catch(e){throw new Error(e.toString()+" in data-dojo-props='"+_232+"'");}}var _233=node.getAttribute(_22c+"attach-point");if(_233){_231.dojoAttachPoint=_233;}var _234=node.getAttribute(_22c+"attach-event");if(_234){_231.dojoAttachEvent=_234;}dojo.mixin(_231,_229);}else{var _235=node.attributes;for(var name in _22d.params){var item=name in _229?{value:_229[name],specified:true}:_235.getNamedItem(name);if(!item||(!item.specified&&(!dojo.isIE||name.toLowerCase()!="value"))){continue;}var _236=item.value;switch(name){case "class":_236="className" in _229?_229.className:node.className;break;case "style":_236="style" in _229?_229.style:(node.style&&node.style.cssText);}var _237=_22d.params[name];if(typeof _236=="string"){_231[name]=_218(_236,_237);}else{_231[name]=_236;}}}var _238=[],_239=[];d.forEach(_22f,function(_23a){node.removeChild(_23a);var _23b=(_23a.getAttribute(_22c+"event")||_23a.getAttribute("event")),type=_23a.getAttribute("type"),nf=d.parser._functionFromScript(_23a,_22c);if(_23b){if(type=="dojo/connect"){_238.push({event:_23b,func:nf});}else{_231[_23b]=nf;}}else{_239.push(nf);}});var _23c=_22e.markupFactory||_22e.prototype&&_22e.prototype.markupFactory;var _23d=_23c?_23c(_231,node,_22e):new _22e(_231,node);_22a.push(_23d);var _23e=(node.getAttribute(_22c+"id")||node.getAttribute("jsId"));if(_23e){d.setObject(_23e,_23d);}d.forEach(_238,function(_23f){d.connect(_23d,_23f.event,null,_23f.func);});d.forEach(_239,function(func){func.call(_23d);});});if(!_229._started){d.forEach(_22a,function(_240){if(!args.noStart&&_240&&dojo.isFunction(_240.startup)&&!_240._started&&(!_240.getParent||!_240.getParent())){_240.startup();}});}return _22a;};this.parse=function(_241,args){var root;if(!args&&_241&&_241.rootNode){args=_241;root=args.rootNode;}else{root=_241;}root=root?dojo.byId(root):dojo.body();args=args||{};var _242=(args.scope||d._scopeName)+"Type",_243="data-"+(args.scope||d._scopeName)+"-";function scan(_244,list){var _245=dojo.clone(_244.inherited);dojo.forEach(["dir","lang"],function(name){var val=_244.node.getAttribute(name);if(val){_245[name]=val;}});var _246=_244.clsInfo&&!_244.clsInfo.cls.prototype._noScript?_244.scripts:null;var _247=(!_244.clsInfo||!_244.clsInfo.cls.prototype.stopParser)||(args&&args.template);for(var _248=_244.node.firstChild;_248;_248=_248.nextSibling){if(_248.nodeType==1){var type,_249=_247&&_248.getAttribute(_243+"type");if(_249){type=_249;}else{type=_247&&_248.getAttribute(_242);}var _24a=_249==type;if(type){var _24b={"type":type,fastpath:_24a,clsInfo:_21e(type,_24a),node:_248,scripts:[],inherited:_245};list.push(_24b);scan(_24b,list);}else{if(_246&&_248.nodeName.toLowerCase()=="script"){type=_248.getAttribute("type");if(type&&/^dojo\/\w/i.test(type)){_246.push(_248);}}else{if(_247){scan({node:_248,inherited:_245},list);}}}}}};var _24c={};if(args&&args.inherited){for(var key in args.inherited){if(args.inherited[key]){_24c[key]=args.inherited[key];}}}var list=[];scan({node:root,inherited:_24c},list);var _24d=args&&args.template?{template:true}:null;return this.instantiate(list,_24d,args);};}();(function(){var _24e=function(){if(dojo.config.parseOnLoad){dojo.parser.parse();}};if(dojo.getObject("dijit.wai.onload")===dojo._loaders[0]){dojo._loaders.splice(1,0,_24e);}else{dojo._loaders.unshift(_24e);}})();}if(!dojo._hasResource["dojo.cache"]){dojo._hasResource["dojo.cache"]=true;dojo.provide("dojo.cache");var cache={};dojo.cache=function(_24f,url,_250){if(typeof _24f=="string"){var _251=dojo.moduleUrl(_24f,url);}else{_251=_24f;_250=url;}var key=_251.toString();var val=_250;if(_250!=undefined&&!dojo.isString(_250)){val=("value" in _250?_250.value:undefined);}var _252=_250&&_250.sanitize?true:false;if(typeof val=="string"){val=cache[key]=_252?dojo.cache._sanitize(val):val;}else{if(val===null){delete cache[key];}else{if(!(key in cache)){val=dojo._getText(key);cache[key]=_252?dojo.cache._sanitize(val):val;}val=cache[key];}}return val;};dojo.cache._sanitize=function(val){if(val){val=val.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");var _253=val.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_253){val=_253[1];}}else{val="";}return val;};}if(!dojo._hasResource["dijit._Templated"]){dojo._hasResource["dijit._Templated"]=true;dojo.provide("dijit._Templated");dojo.declare("dijit._Templated",null,{templateString:null,templatePath:null,widgetsInTemplate:false,_skipNodeCache:false,_earlyTemplatedStartup:false,constructor:function(){this._attachPoints=[];this._attachEvents=[];},_stringRepl:function(tmpl){var _254=this.declaredClass,_255=this;return dojo.string.substitute(tmpl,this,function(_256,key){if(key.charAt(0)=="!"){_256=dojo.getObject(key.substr(1),false,_255);}if(typeof _256=="undefined"){throw new Error(_254+" template:"+key);}if(_256==null){return "";}return key.charAt(0)=="!"?_256:_256.toString().replace(/"/g,"&quot;");},this);},buildRendering:function(){var _257=dijit._Templated.getCachedTemplate(this.templatePath,this.templateString,this._skipNodeCache);var node;if(dojo.isString(_257)){node=dojo._toDom(this._stringRepl(_257));if(node.nodeType!=1){throw new Error("Invalid template: "+_257);}}else{node=_257.cloneNode(true);}this.domNode=node;this.inherited(arguments);this._attachTemplateNodes(node);if(this.widgetsInTemplate){var cw=(this._startupWidgets=dojo.parser.parse(node,{noStart:!this._earlyTemplatedStartup,template:true,inherited:{dir:this.dir,lang:this.lang},propsThis:this,scope:"dojo"}));this._supportingWidgets=dijit.findWidgets(node);this._attachTemplateNodes(cw,function(n,p){return n[p];});}this._fillContent(this.srcNodeRef);},_fillContent:function(_258){var dest=this.containerNode;if(_258&&dest){while(_258.hasChildNodes()){dest.appendChild(_258.firstChild);}}},_attachTemplateNodes:function(_259,_25a){_25a=_25a||function(n,p){return n.getAttribute(p);};var _25b=dojo.isArray(_259)?_259:(_259.all||_259.getElementsByTagName("*"));var x=dojo.isArray(_259)?0:-1;for(;x<_25b.length;x++){var _25c=(x==-1)?_259:_25b[x];if(this.widgetsInTemplate&&(_25a(_25c,"dojoType")||_25a(_25c,"data-dojo-type"))){continue;}var _25d=_25a(_25c,"dojoAttachPoint")||_25a(_25c,"data-dojo-attach-point");if(_25d){var _25e,_25f=_25d.split(/\s*,\s*/);while((_25e=_25f.shift())){if(dojo.isArray(this[_25e])){this[_25e].push(_25c);}else{this[_25e]=_25c;}this._attachPoints.push(_25e);}}var _260=_25a(_25c,"dojoAttachEvent")||_25a(_25c,"data-dojo-attach-event");if(_260){var _261,_262=_260.split(/\s*,\s*/);var trim=dojo.trim;while((_261=_262.shift())){if(_261){var _263=null;if(_261.indexOf(":")!=-1){var _264=_261.split(":");_261=trim(_264[0]);_263=trim(_264[1]);}else{_261=trim(_261);}if(!_263){_263=_261;}this._attachEvents.push(this.connect(_25c,_261,_263));}}}var role=_25a(_25c,"waiRole");if(role){dijit.setWaiRole(_25c,role);}var _265=_25a(_25c,"waiState");if(_265){dojo.forEach(_265.split(/\s*,\s*/),function(_266){if(_266.indexOf("-")!=-1){var pair=_266.split("-");dijit.setWaiState(_25c,pair[0],pair[1]);}});}}},startup:function(){dojo.forEach(this._startupWidgets,function(w){if(w&&!w._started&&w.startup){w.startup();}});this.inherited(arguments);},destroyRendering:function(){dojo.forEach(this._attachPoints,function(_267){delete this[_267];},this);this._attachPoints=[];dojo.forEach(this._attachEvents,this.disconnect,this);this._attachEvents=[];this.inherited(arguments);}});dijit._Templated._templateCache={};dijit._Templated.getCachedTemplate=function(_268,_269,_26a){var _26b=dijit._Templated._templateCache;var key=_269||_268;var _26c=_26b[key];if(_26c){try{if(!_26c.ownerDocument||_26c.ownerDocument==dojo.doc){return _26c;}}catch(e){}dojo.destroy(_26c);}if(!_269){_269=dojo.cache(_268,{sanitize:true});}_269=dojo.string.trim(_269);if(_26a||_269.match(/\$\{([^\}]+)\}/g)){return (_26b[key]=_269);}else{var node=dojo._toDom(_269);if(node.nodeType!=1){throw new Error("Invalid template: "+_269);}return (_26b[key]=node);}};if(dojo.isIE){dojo.addOnWindowUnload(function(){var _26d=dijit._Templated._templateCache;for(var key in _26d){var _26e=_26d[key];if(typeof _26e=="object"){dojo.destroy(_26e);}delete _26d[key];}});}dojo.extend(dijit._Widget,{dojoAttachEvent:"",dojoAttachPoint:"",waiRole:"",waiState:""});}if(!dojo._hasResource["dijit._CssStateMixin"]){dojo._hasResource["dijit._CssStateMixin"]=true;dojo.provide("dijit._CssStateMixin");dojo.declare("dijit._CssStateMixin",[],{cssStateNodes:{},hovering:false,active:false,_applyAttributes:function(){this.inherited(arguments);dojo.forEach(["onmouseenter","onmouseleave","onmousedown"],function(e){this.connect(this.domNode,e,"_cssMouseEvent");},this);dojo.forEach(["disabled","readOnly","checked","selected","focused","state","hovering","active"],function(attr){this.watch(attr,dojo.hitch(this,"_setStateClass"));},this);for(var ap in this.cssStateNodes){this._trackMouseState(this[ap],this.cssStateNodes[ap]);}this._setStateClass();},_cssMouseEvent:function(_26f){if(!this.disabled){switch(_26f.type){case "mouseenter":case "mouseover":this._set("hovering",true);this._set("active",this._mouseDown);break;case "mouseleave":case "mouseout":this._set("hovering",false);this._set("active",false);break;case "mousedown":this._set("active",true);this._mouseDown=true;var _270=this.connect(dojo.body(),"onmouseup",function(){this._mouseDown=false;this._set("active",false);this.disconnect(_270);});break;}}},_setStateClass:function(){var _271=this.baseClass.split(" ");function _272(_273){_271=_271.concat(dojo.map(_271,function(c){return c+_273;}),"dijit"+_273);};if(!this.isLeftToRight()){_272("Rtl");}if(this.checked){_272("Checked");}if(this.state){_272(this.state);}if(this.selected){_272("Selected");}if(this.disabled){_272("Disabled");}else{if(this.readOnly){_272("ReadOnly");}else{if(this.active){_272("Active");}else{if(this.hovering){_272("Hover");}}}}if(this._focused){_272("Focused");}var tn=this.stateNode||this.domNode,_274={};dojo.forEach(tn.className.split(" "),function(c){_274[c]=true;});if("_stateClasses" in this){dojo.forEach(this._stateClasses,function(c){delete _274[c];});}dojo.forEach(_271,function(c){_274[c]=true;});var _275=[];for(var c in _274){_275.push(c);}tn.className=_275.join(" ");this._stateClasses=_271;},_trackMouseState:function(node,_276){var _277=false,_278=false,_279=false;var self=this,cn=dojo.hitch(this,"connect",node);function _27a(){var _27b=("disabled" in self&&self.disabled)||("readonly" in self&&self.readonly);dojo.toggleClass(node,_276+"Hover",_277&&!_278&&!_27b);dojo.toggleClass(node,_276+"Active",_278&&!_27b);dojo.toggleClass(node,_276+"Focused",_279&&!_27b);};cn("onmouseenter",function(){_277=true;_27a();});cn("onmouseleave",function(){_277=false;_278=false;_27a();});cn("onmousedown",function(){_278=true;_27a();});cn("onmouseup",function(){_278=false;_27a();});cn("onfocus",function(){_279=true;_27a();});cn("onblur",function(){_279=false;_27a();});this.watch("disabled",_27a);this.watch("readOnly",_27a);}});}if(!dojo._hasResource["dijit.form._FormMixin"]){dojo._hasResource["dijit.form._FormMixin"]=true;dojo.provide("dijit.form._FormMixin");dojo.declare("dijit.form._FormMixin",null,{state:"",reset:function(){dojo.forEach(this.getDescendants(),function(_27c){if(_27c.reset){_27c.reset();}});},validate:function(){var _27d=false;return dojo.every(dojo.map(this.getDescendants(),function(_27e){_27e._hasBeenBlurred=true;var _27f=_27e.disabled||!_27e.validate||_27e.validate();if(!_27f&&!_27d){dojo.window.scrollIntoView(_27e.containerNode||_27e.domNode);_27e.focus();_27d=true;}return _27f;}),function(item){return item;});},setValues:function(val){dojo.deprecated(this.declaredClass+"::setValues() is deprecated. Use set('value', val) instead.","","2.0");return this.set("value",val);},_setValueAttr:function(obj){var map={};dojo.forEach(this.getDescendants(),function(_280){if(!_280.name){return;}var _281=map[_280.name]||(map[_280.name]=[]);_281.push(_280);});for(var name in map){if(!map.hasOwnProperty(name)){continue;}var _282=map[name],_283=dojo.getObject(name,false,obj);if(_283===undefined){continue;}if(!dojo.isArray(_283)){_283=[_283];}if(typeof _282[0].checked=="boolean"){dojo.forEach(_282,function(w,i){w.set("value",dojo.indexOf(_283,w.value)!=-1);});}else{if(_282[0].multiple){_282[0].set("value",_283);}else{dojo.forEach(_282,function(w,i){w.set("value",_283[i]);});}}}},getValues:function(){dojo.deprecated(this.declaredClass+"::getValues() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},_getValueAttr:function(){var obj={};dojo.forEach(this.getDescendants(),function(_284){var name=_284.name;if(!name||_284.disabled){return;}var _285=_284.get("value");if(typeof _284.checked=="boolean"){if(/Radio/.test(_284.declaredClass)){if(_285!==false){dojo.setObject(name,_285,obj);}else{_285=dojo.getObject(name,false,obj);if(_285===undefined){dojo.setObject(name,null,obj);}}}else{var ary=dojo.getObject(name,false,obj);if(!ary){ary=[];dojo.setObject(name,ary,obj);}if(_285!==false){ary.push(_285);}}}else{var prev=dojo.getObject(name,false,obj);if(typeof prev!="undefined"){if(dojo.isArray(prev)){prev.push(_285);}else{dojo.setObject(name,[prev,_285],obj);}}else{dojo.setObject(name,_285,obj);}}});return obj;},isValid:function(){return this.state=="";},onValidStateChange:function(_286){},_getState:function(){var _287=dojo.map(this._descendants,function(w){return w.get("state")||"";});return dojo.indexOf(_287,"Error")>=0?"Error":dojo.indexOf(_287,"Incomplete")>=0?"Incomplete":"";},disconnectChildren:function(){dojo.forEach(this._childConnections||[],dojo.hitch(this,"disconnect"));dojo.forEach(this._childWatches||[],function(w){w.unwatch();});},connectChildren:function(_288){var _289=this;this.disconnectChildren();this._descendants=this.getDescendants();var set=_288?function(name,val){_289[name]=val;}:dojo.hitch(this,"_set");set("value",this.get("value"));set("state",this._getState());var _28a=(this._childConnections=[]),_28b=(this._childWatches=[]);dojo.forEach(dojo.filter(this._descendants,function(item){return item.validate;}),function(_28c){dojo.forEach(["state","disabled"],function(attr){_28b.push(_28c.watch(attr,function(attr,_28d,_28e){_289.set("state",_289._getState());}));});});var _28f=function(){if(_289._onChangeDelayTimer){clearTimeout(_289._onChangeDelayTimer);}_289._onChangeDelayTimer=setTimeout(function(){delete _289._onChangeDelayTimer;_289._set("value",_289.get("value"));},10);};dojo.forEach(dojo.filter(this._descendants,function(item){return item.onChange;}),function(_290){_28a.push(_289.connect(_290,"onChange",_28f));_28b.push(_290.watch("disabled",_28f));});},startup:function(){this.inherited(arguments);this.connectChildren(true);this.watch("state",function(attr,_291,_292){this.onValidStateChange(_292=="");});},destroy:function(){this.disconnectChildren();this.inherited(arguments);}});}if(!dojo._hasResource["dijit._DialogMixin"]){dojo._hasResource["dijit._DialogMixin"]=true;dojo.provide("dijit._DialogMixin");dojo.declare("dijit._DialogMixin",null,{attributeMap:dijit._Widget.prototype.attributeMap,execute:function(_293){},onCancel:function(){},onExecute:function(){},_onSubmit:function(){this.onExecute();this.execute(this.get("value"));},_getFocusItems:function(){var _294=dijit._getTabNavigable(this.containerNode);this._firstFocusItem=_294.lowest||_294.first||this.closeButtonNode||this.domNode;this._lastFocusItem=_294.last||_294.highest||this._firstFocusItem;}});}if(!dojo._hasResource["dijit.DialogUnderlay"]){dojo._hasResource["dijit.DialogUnderlay"]=true;dojo.provide("dijit.DialogUnderlay");dojo.declare("dijit.DialogUnderlay",[dijit._Widget,dijit._Templated],{templateString:"<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' dojoAttachPoint='node'></div></div>",dialogId:"","class":"",attributeMap:{id:"domNode"},_setDialogIdAttr:function(id){dojo.attr(this.node,"id",id+"_underlay");this._set("dialogId",id);},_setClassAttr:function(_295){this.node.className="dijitDialogUnderlay "+_295;this._set("class",_295);},postCreate:function(){dojo.body().appendChild(this.domNode);},layout:function(){var is=this.node.style,os=this.domNode.style;os.display="none";var _296=dojo.window.getBox();os.top=_296.t+"px";os.left=_296.l+"px";is.width=_296.w+"px";is.height=_296.h+"px";os.display="block";},show:function(){this.domNode.style.display="block";this.layout();this.bgIframe=new dijit.BackgroundIframe(this.domNode);},hide:function(){this.bgIframe.destroy();delete this.bgIframe;this.domNode.style.display="none";}});}if(!dojo._hasResource["dijit._Contained"]){dojo._hasResource["dijit._Contained"]=true;dojo.provide("dijit._Contained");dojo.declare("dijit._Contained",null,{getParent:function(){var _297=dijit.getEnclosingWidget(this.domNode.parentNode);return _297&&_297.isContainer?_297:null;},_getSibling:function(_298){var node=this.domNode;do{node=node[_298+"Sibling"];}while(node&&node.nodeType!=1);return node&&dijit.byNode(node);},getPreviousSibling:function(){return this._getSibling("previous");},getNextSibling:function(){return this._getSibling("next");},getIndexInParent:function(){var p=this.getParent();if(!p||!p.getIndexOfChild){return -1;}return p.getIndexOfChild(this);}});}if(!dojo._hasResource["dijit._Container"]){dojo._hasResource["dijit._Container"]=true;dojo.provide("dijit._Container");dojo.declare("dijit._Container",null,{isContainer:true,buildRendering:function(){this.inherited(arguments);if(!this.containerNode){this.containerNode=this.domNode;}},addChild:function(_299,_29a){var _29b=this.containerNode;if(_29a&&typeof _29a=="number"){var _29c=this.getChildren();if(_29c&&_29c.length>=_29a){_29b=_29c[_29a-1].domNode;_29a="after";}}dojo.place(_299.domNode,_29b,_29a);if(this._started&&!_299._started){_299.startup();}},removeChild:function(_29d){if(typeof _29d=="number"){_29d=this.getChildren()[_29d];}if(_29d){var node=_29d.domNode;if(node&&node.parentNode){node.parentNode.removeChild(node);}}},hasChildren:function(){return this.getChildren().length>0;},destroyDescendants:function(_29e){dojo.forEach(this.getChildren(),function(_29f){_29f.destroyRecursive(_29e);});},_getSiblingOfChild:function(_2a0,dir){var node=_2a0.domNode,_2a1=(dir>0?"nextSibling":"previousSibling");do{node=node[_2a1];}while(node&&(node.nodeType!=1||!dijit.byNode(node)));return node&&dijit.byNode(node);},getIndexOfChild:function(_2a2){return dojo.indexOf(this.getChildren(),_2a2);},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),function(_2a3){_2a3.startup();});this.inherited(arguments);}});}if(!dojo._hasResource["dijit.layout._LayoutWidget"]){dojo._hasResource["dijit.layout._LayoutWidget"]=true;dojo.provide("dijit.layout._LayoutWidget");dojo.declare("dijit.layout._LayoutWidget",[dijit._Widget,dijit._Container,dijit._Contained],{baseClass:"dijitLayoutContainer",isLayoutContainer:true,buildRendering:function(){this.inherited(arguments);dojo.addClass(this.domNode,"dijitContainer");},startup:function(){if(this._started){return;}this.inherited(arguments);var _2a4=this.getParent&&this.getParent();if(!(_2a4&&_2a4.isLayoutContainer)){this.resize();this.connect(dojo.isIE?this.domNode:dojo.global,"onresize",function(){this.resize();});}},resize:function(_2a5,_2a6){var node=this.domNode;if(_2a5){dojo.marginBox(node,_2a5);if(_2a5.t){node.style.top=_2a5.t+"px";}if(_2a5.l){node.style.left=_2a5.l+"px";}}var mb=_2a6||{};dojo.mixin(mb,_2a5||{});if(!("h" in mb)||!("w" in mb)){mb=dojo.mixin(dojo.marginBox(node),mb);}var cs=dojo.getComputedStyle(node);var me=dojo._getMarginExtents(node,cs);var be=dojo._getBorderExtents(node,cs);var bb=(this._borderBox={w:mb.w-(me.w+be.w),h:mb.h-(me.h+be.h)});var pe=dojo._getPadExtents(node,cs);this._contentBox={l:dojo._toPixelValue(node,cs.paddingLeft),t:dojo._toPixelValue(node,cs.paddingTop),w:bb.w-pe.w,h:bb.h-pe.h};this.layout();},layout:function(){},_setupChild:function(_2a7){var cls=this.baseClass+"-child "+(_2a7.baseClass?this.baseClass+"-"+_2a7.baseClass:"");dojo.addClass(_2a7.domNode,cls);},addChild:function(_2a8,_2a9){this.inherited(arguments);if(this._started){this._setupChild(_2a8);}},removeChild:function(_2aa){var cls=this.baseClass+"-child"+(_2aa.baseClass?" "+this.baseClass+"-"+_2aa.baseClass:"");dojo.removeClass(_2aa.domNode,cls);this.inherited(arguments);}});dijit.layout.marginBox2contentBox=function(node,mb){var cs=dojo.getComputedStyle(node);var me=dojo._getMarginExtents(node,cs);var pb=dojo._getPadBorderExtents(node,cs);return {l:dojo._toPixelValue(node,cs.paddingLeft),t:dojo._toPixelValue(node,cs.paddingTop),w:mb.w-(me.w+pb.w),h:mb.h-(me.h+pb.h)};};(function(){var _2ab=function(word){return word.substring(0,1).toUpperCase()+word.substring(1);};var size=function(_2ac,dim){var _2ad=_2ac.resize?_2ac.resize(dim):dojo.marginBox(_2ac.domNode,dim);if(_2ad){dojo.mixin(_2ac,_2ad);}else{dojo.mixin(_2ac,dojo.marginBox(_2ac.domNode));dojo.mixin(_2ac,dim);}};dijit.layout.layoutChildren=function(_2ae,dim,_2af,_2b0,_2b1){dim=dojo.mixin({},dim);dojo.addClass(_2ae,"dijitLayoutContainer");_2af=dojo.filter(_2af,function(item){return item.region!="center"&&item.layoutAlign!="client";}).concat(dojo.filter(_2af,function(item){return item.region=="center"||item.layoutAlign=="client";}));dojo.forEach(_2af,function(_2b2){var elm=_2b2.domNode,pos=(_2b2.region||_2b2.layoutAlign);var _2b3=elm.style;_2b3.left=dim.l+"px";_2b3.top=dim.t+"px";_2b3.position="absolute";dojo.addClass(elm,"dijitAlign"+_2ab(pos));var _2b4={};if(_2b0&&_2b0==_2b2.id){_2b4[_2b2.region=="top"||_2b2.region=="bottom"?"h":"w"]=_2b1;}if(pos=="top"||pos=="bottom"){_2b4.w=dim.w;size(_2b2,_2b4);dim.h-=_2b2.h;if(pos=="top"){dim.t+=_2b2.h;}else{_2b3.top=dim.t+dim.h+"px";}}else{if(pos=="left"||pos=="right"){_2b4.h=dim.h;size(_2b2,_2b4);dim.w-=_2b2.w;if(pos=="left"){dim.l+=_2b2.w;}else{_2b3.left=dim.l+dim.w+"px";}}else{if(pos=="client"||pos=="center"){size(_2b2,dim);}}}});};})();}if(!dojo._hasResource["dijit.layout._ContentPaneResizeMixin"]){dojo._hasResource["dijit.layout._ContentPaneResizeMixin"]=true;dojo.provide("dijit.layout._ContentPaneResizeMixin");dojo.declare("dijit.layout._ContentPaneResizeMixin",null,{doLayout:true,isContainer:true,isLayoutContainer:true,_startChildren:function(){dojo.forEach(this.getChildren(),function(_2b5){_2b5.startup();_2b5._started=true;});},startup:function(){if(this._started){return;}var _2b6=dijit._Contained.prototype.getParent.call(this);this._childOfLayoutWidget=_2b6&&_2b6.isLayoutContainer;this._needLayout=!this._childOfLayoutWidget;this.inherited(arguments);this._startChildren();if(this._isShown()){this._onShow();}if(!this._childOfLayoutWidget){this.connect(dojo.isIE?this.domNode:dojo.global,"onresize",function(){this._needLayout=!this._childOfLayoutWidget;this.resize();});}},_checkIfSingleChild:function(){var _2b7=dojo.query("> *",this.containerNode).filter(function(node){return node.tagName!=="SCRIPT";}),_2b8=_2b7.filter(function(node){return dojo.hasAttr(node,"data-dojo-type")||dojo.hasAttr(node,"dojoType")||dojo.hasAttr(node,"widgetId");}),_2b9=dojo.filter(_2b8.map(dijit.byNode),function(_2ba){return _2ba&&_2ba.domNode&&_2ba.resize;});if(_2b7.length==_2b8.length&&_2b9.length==1){this._singleChild=_2b9[0];}else{delete this._singleChild;}dojo.toggleClass(this.containerNode,this.baseClass+"SingleChild",!!this._singleChild);},resize:function(_2bb,_2bc){if(!this._wasShown&&this.open!==false){this._onShow();}this._resizeCalled=true;this._scheduleLayout(_2bb,_2bc);},_scheduleLayout:function(_2bd,_2be){if(this._isShown()){this._layout(_2bd,_2be);}else{this._needLayout=true;this._changeSize=_2bd;this._resultSize=_2be;}},_layout:function(_2bf,_2c0){if(_2bf){dojo.marginBox(this.domNode,_2bf);}var cn=this.containerNode;if(cn===this.domNode){var mb=_2c0||{};dojo.mixin(mb,_2bf||{});if(!("h" in mb)||!("w" in mb)){mb=dojo.mixin(dojo.marginBox(cn),mb);}this._contentBox=dijit.layout.marginBox2contentBox(cn,mb);}else{this._contentBox=dojo.contentBox(cn);}this._layoutChildren();delete this._needLayout;},_layoutChildren:function(){if(this.doLayout){this._checkIfSingleChild();}if(this._singleChild&&this._singleChild.resize){var cb=this._contentBox||dojo.contentBox(this.containerNode);this._singleChild.resize({w:cb.w,h:cb.h});}else{dojo.forEach(this.getChildren(),function(_2c1){if(_2c1.resize){_2c1.resize();}});}},_isShown:function(){if(this._childOfLayoutWidget){if(this._resizeCalled&&"open" in this){return this.open;}return this._resizeCalled;}else{if("open" in this){return this.open;}else{var node=this.domNode,_2c2=this.domNode.parentNode;return (node.style.display!="none")&&(node.style.visibility!="hidden")&&!dojo.hasClass(node,"dijitHidden")&&_2c2&&_2c2.style&&(_2c2.style.display!="none");}}},_onShow:function(){if(this._needLayout){this._layout(this._changeSize,this._resultSize);}this.inherited(arguments);this._wasShown=true;}});}if(!dojo._hasResource["dojo.html"]){dojo._hasResource["dojo.html"]=true;dojo.provide("dojo.html");dojo.getObject("html",true,dojo);(function(){var _2c3=0,d=dojo;dojo.html._secureForInnerHtml=function(cont){return cont.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig,"");};dojo.html._emptyNode=dojo.empty;dojo.html._setNodeContent=function(node,cont){d.empty(node);if(cont){if(typeof cont=="string"){cont=d._toDom(cont,node.ownerDocument);}if(!cont.nodeType&&d.isArrayLike(cont)){for(var _2c4=cont.length,i=0;i<cont.length;i=_2c4==cont.length?i+1:0){d.place(cont[i],node,"last");}}else{d.place(cont,node,"last");}}return node;};dojo.declare("dojo.html._ContentSetter",null,{node:"",content:"",id:"",cleanContent:false,extractContent:false,parseContent:false,parserScope:dojo._scopeName,startup:true,constructor:function(_2c5,node){dojo.mixin(this,_2c5||{});node=this.node=dojo.byId(this.node||node);if(!this.id){this.id=["Setter",(node)?node.id||node.tagName:"",_2c3++].join("_");}},set:function(cont,_2c6){if(undefined!==cont){this.content=cont;}if(_2c6){this._mixin(_2c6);}this.onBegin();this.setContent();this.onEnd();return this.node;},setContent:function(){var node=this.node;if(!node){throw new Error(this.declaredClass+": setContent given no node");}try{node=dojo.html._setNodeContent(node,this.content);}catch(e){var _2c7=this.onContentError(e);try{node.innerHTML=_2c7;}catch(e){console.error("Fatal "+this.declaredClass+".setContent could not change content due to "+e.message,e);}}this.node=node;},empty:function(){if(this.parseResults&&this.parseResults.length){dojo.forEach(this.parseResults,function(w){if(w.destroy){w.destroy();}});delete this.parseResults;}dojo.html._emptyNode(this.node);},onBegin:function(){var cont=this.content;if(dojo.isString(cont)){if(this.cleanContent){cont=dojo.html._secureForInnerHtml(cont);}if(this.extractContent){var _2c8=cont.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_2c8){cont=_2c8[1];}}}this.empty();this.content=cont;return this.node;},onEnd:function(){if(this.parseContent){this._parse();}return this.node;},tearDown:function(){delete this.parseResults;delete this.node;delete this.content;},onContentError:function(err){return "Error occured setting content: "+err;},_mixin:function(_2c9){var _2ca={},key;for(key in _2c9){if(key in _2ca){continue;}this[key]=_2c9[key];}},_parse:function(){var _2cb=this.node;try{var _2cc={};dojo.forEach(["dir","lang","textDir"],function(name){if(this[name]){_2cc[name]=this[name];}},this);this.parseResults=dojo.parser.parse({rootNode:_2cb,noStart:!this.startup,inherited:_2cc,scope:this.parserScope});}catch(e){this._onError("Content",e,"Error parsing in _ContentSetter#"+this.id);}},_onError:function(type,err,_2cd){var _2ce=this["on"+type+"Error"].call(this,err);if(_2cd){console.error(_2cd,err);}else{if(_2ce){dojo.html._setNodeContent(this.node,_2ce,true);}}}});dojo.html.set=function(node,cont,_2cf){if(undefined==cont){console.warn("dojo.html.set: no cont argument provided, using empty string");cont="";}if(!_2cf){return dojo.html._setNodeContent(node,cont,true);}else{var op=new dojo.html._ContentSetter(dojo.mixin(_2cf,{content:cont,node:node}));return op.set();}};})();}if(!dojo._hasResource["dojo.i18n"]){dojo._hasResource["dojo.i18n"]=true;dojo.provide("dojo.i18n");dojo.getObject("i18n",true,dojo);dojo.i18n.getLocalization=dojo.i18n.getLocalization||function(_2d0,_2d1,_2d2){_2d2=dojo.i18n.normalizeLocale(_2d2);var _2d3=_2d2.split("-");var _2d4=[_2d0,"nls",_2d1].join(".");var _2d5=dojo._loadedModules[_2d4];if(_2d5){var _2d6;for(var i=_2d3.length;i>0;i--){var loc=_2d3.slice(0,i).join("_");if(_2d5[loc]){_2d6=_2d5[loc];break;}}if(!_2d6){_2d6=_2d5.ROOT;}if(_2d6){var _2d7=function(){};_2d7.prototype=_2d6;return new _2d7();}}throw new Error("Bundle not found: "+_2d1+" in "+_2d0+" , locale="+_2d2);};dojo.i18n.normalizeLocale=function(_2d8){var _2d9=_2d8?_2d8.toLowerCase():dojo.locale;if(_2d9=="root"){_2d9="ROOT";}return _2d9;};dojo.i18n._requireLocalization=function(_2da,_2db,_2dc,_2dd){var _2de=dojo.i18n.normalizeLocale(_2dc);var _2df=[_2da,"nls",_2db].join(".");var _2e0="";if(_2dd){var _2e1=_2dd.split(",");for(var i=0;i<_2e1.length;i++){if(_2de["indexOf"](_2e1[i])==0){if(_2e1[i].length>_2e0.length){_2e0=_2e1[i];}}}if(!_2e0){_2e0="ROOT";}}var _2e2=_2dd?_2e0:_2de;var _2e3=dojo._loadedModules[_2df];var _2e4=null;if(_2e3){if(dojo.config.localizationComplete&&_2e3._built){return;}var _2e5=_2e2.replace(/-/g,"_");var _2e6=_2df+"."+_2e5;_2e4=dojo._loadedModules[_2e6];}if(!_2e4){_2e3=dojo["provide"](_2df);var syms=dojo._getModuleSymbols(_2da);var _2e7=syms.concat("nls").join("/");var _2e8;dojo.i18n._searchLocalePath(_2e2,_2dd,function(loc){var _2e9=loc.replace(/-/g,"_");var _2ea=_2df+"."+_2e9;var _2eb=false;if(!dojo._loadedModules[_2ea]){dojo["provide"](_2ea);var _2ec=[_2e7];if(loc!="ROOT"){_2ec.push(loc);}_2ec.push(_2db);var _2ed=_2ec.join("/")+".js";_2eb=dojo._loadPath(_2ed,null,function(hash){hash=hash.root||hash;var _2ee=function(){};_2ee.prototype=_2e8;_2e3[_2e9]=new _2ee();for(var j in hash){_2e3[_2e9][j]=hash[j];}});}else{_2eb=true;}if(_2eb&&_2e3[_2e9]){_2e8=_2e3[_2e9];}else{_2e3[_2e9]=_2e8;}if(_2dd){return true;}});}if(_2dd&&_2de!=_2e0){_2e3[_2de.replace(/-/g,"_")]=_2e3[_2e0.replace(/-/g,"_")];}};(function(){var _2ef=dojo.config.extraLocale;if(_2ef){if(!_2ef instanceof Array){_2ef=[_2ef];}var req=dojo.i18n._requireLocalization;dojo.i18n._requireLocalization=function(m,b,_2f0,_2f1){req(m,b,_2f0,_2f1);if(_2f0){return;}for(var i=0;i<_2ef.length;i++){req(m,b,_2ef[i],_2f1);}};}})();dojo.i18n._searchLocalePath=function(_2f2,down,_2f3){_2f2=dojo.i18n.normalizeLocale(_2f2);var _2f4=_2f2.split("-");var _2f5=[];for(var i=_2f4.length;i>0;i--){_2f5.push(_2f4.slice(0,i).join("-"));}_2f5.push(false);if(down){_2f5.reverse();}for(var j=_2f5.length-1;j>=0;j--){var loc=_2f5[j]||"ROOT";var stop=_2f3(loc);if(stop){break;}}};dojo.i18n._preloadLocalizations=function(_2f6,_2f7){function _2f8(_2f9){_2f9=dojo.i18n.normalizeLocale(_2f9);dojo.i18n._searchLocalePath(_2f9,true,function(loc){for(var i=0;i<_2f7.length;i++){if(_2f7[i]==loc){dojo["require"](_2f6+"_"+loc);return true;}}return false;});};_2f8();var _2fa=dojo.config.extraLocale||[];for(var i=0;i<_2fa.length;i++){_2f8(_2fa[i]);}};}if(!dojo._hasResource["dijit.layout.ContentPane"]){dojo._hasResource["dijit.layout.ContentPane"]=true;dojo.provide("dijit.layout.ContentPane");dojo.declare("dijit.layout.ContentPane",[dijit._Widget,dijit.layout._ContentPaneResizeMixin],{href:"",extractContent:false,parseOnLoad:true,parserScope:dojo._scopeName,preventCache:false,preload:false,refreshOnShow:false,loadingMessage:"<span class='dijitContentPaneLoading'>${loadingState}</span>",errorMessage:"<span class='dijitContentPaneError'>${errorState}</span>",isLoaded:false,baseClass:"dijitContentPane",ioArgs:{},onLoadDeferred:null,attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{title:[]}),stopParser:true,template:false,create:function(_2fb,_2fc){if((!_2fb||!_2fb.template)&&_2fc&&!("href" in _2fb)&&!("content" in _2fb)){var df=dojo.doc.createDocumentFragment();_2fc=dojo.byId(_2fc);while(_2fc.firstChild){df.appendChild(_2fc.firstChild);}_2fb=dojo.delegate(_2fb,{content:df});}this.inherited(arguments,[_2fb,_2fc]);},postMixInProperties:function(){this.inherited(arguments);var _2fd=dojo.i18n.getLocalization("dijit","loading",this.lang);this.loadingMessage=dojo.string.substitute(this.loadingMessage,_2fd);this.errorMessage=dojo.string.substitute(this.errorMessage,_2fd);},buildRendering:function(){this.inherited(arguments);if(!this.containerNode){this.containerNode=this.domNode;}this.domNode.title="";if(!dojo.attr(this.domNode,"role")){dijit.setWaiRole(this.domNode,"group");}},_startChildren:function(){this.inherited(arguments);if(this._contentSetter){dojo.forEach(this._contentSetter.parseResults,function(obj){if(!obj._started&&!obj._destroyed&&dojo.isFunction(obj.startup)){obj.startup();obj._started=true;}},this);}},setHref:function(href){dojo.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.","","2.0");return this.set("href",href);},_setHrefAttr:function(href){this.cancel();this.onLoadDeferred=new dojo.Deferred(dojo.hitch(this,"cancel"));this.onLoadDeferred.addCallback(dojo.hitch(this,"onLoad"));this._set("href",href);if(this.preload||(this._created&&this._isShown())){this._load();}else{this._hrefChanged=true;}return this.onLoadDeferred;},setContent:function(data){dojo.deprecated("dijit.layout.ContentPane.setContent() is deprecated.  Use set('content', ...) instead.","","2.0");this.set("content",data);},_setContentAttr:function(data){this._set("href","");this.cancel();this.onLoadDeferred=new dojo.Deferred(dojo.hitch(this,"cancel"));if(this._created){this.onLoadDeferred.addCallback(dojo.hitch(this,"onLoad"));}this._setContent(data||"");this._isDownloaded=false;return this.onLoadDeferred;},_getContentAttr:function(){return this.containerNode.innerHTML;},cancel:function(){if(this._xhrDfd&&(this._xhrDfd.fired==-1)){this._xhrDfd.cancel();}delete this._xhrDfd;this.onLoadDeferred=null;},uninitialize:function(){if(this._beingDestroyed){this.cancel();}this.inherited(arguments);},destroyRecursive:function(_2fe){if(this._beingDestroyed){return;}this.inherited(arguments);},_onShow:function(){this.inherited(arguments);if(this.href){if(!this._xhrDfd&&(!this.isLoaded||this._hrefChanged||this.refreshOnShow)){return this.refresh();}}},refresh:function(){this.cancel();this.onLoadDeferred=new dojo.Deferred(dojo.hitch(this,"cancel"));this.onLoadDeferred.addCallback(dojo.hitch(this,"onLoad"));this._load();return this.onLoadDeferred;},_load:function(){this._setContent(this.onDownloadStart(),true);var self=this;var _2ff={preventCache:(this.preventCache||this.refreshOnShow),url:this.href,handleAs:"text"};if(dojo.isObject(this.ioArgs)){dojo.mixin(_2ff,this.ioArgs);}var hand=(this._xhrDfd=(this.ioMethod||dojo.xhrGet)(_2ff));hand.addCallback(function(html){try{self._isDownloaded=true;self._setContent(html,false);self.onDownloadEnd();}catch(err){self._onError("Content",err);}delete self._xhrDfd;return html;});hand.addErrback(function(err){if(!hand.canceled){self._onError("Download",err);}delete self._xhrDfd;return err;});delete this._hrefChanged;},_onLoadHandler:function(data){this._set("isLoaded",true);try{this.onLoadDeferred.callback(data);}catch(e){console.error("Error "+this.widgetId+" running custom onLoad code: "+e.message);}},_onUnloadHandler:function(){this._set("isLoaded",false);try{this.onUnload();}catch(e){console.error("Error "+this.widgetId+" running custom onUnload code: "+e.message);}},destroyDescendants:function(){if(this.isLoaded){this._onUnloadHandler();}var _300=this._contentSetter;dojo.forEach(this.getChildren(),function(_301){if(_301.destroyRecursive){_301.destroyRecursive();}});if(_300){dojo.forEach(_300.parseResults,function(_302){if(_302.destroyRecursive&&_302.domNode&&_302.domNode.parentNode==dojo.body()){_302.destroyRecursive();}});delete _300.parseResults;}dojo.html._emptyNode(this.containerNode);delete this._singleChild;},_setContent:function(cont,_303){this.destroyDescendants();var _304=this._contentSetter;if(!(_304&&_304 instanceof dojo.html._ContentSetter)){_304=this._contentSetter=new dojo.html._ContentSetter({node:this.containerNode,_onError:dojo.hitch(this,this._onError),onContentError:dojo.hitch(this,function(e){var _305=this.onContentError(e);try{this.containerNode.innerHTML=_305;}catch(e){console.error("Fatal "+this.id+" could not change content due to "+e.message,e);}})});}var _306=dojo.mixin({cleanContent:this.cleanContent,extractContent:this.extractContent,parseContent:this.parseOnLoad,parserScope:this.parserScope,startup:false,dir:this.dir,lang:this.lang},this._contentSetterParams||{});_304.set((dojo.isObject(cont)&&cont.domNode)?cont.domNode:cont,_306);delete this._contentSetterParams;if(this.doLayout){this._checkIfSingleChild();}if(!_303){if(this._started){this._startChildren();this._scheduleLayout();}this._onLoadHandler(cont);}},_onError:function(type,err,_307){this.onLoadDeferred.errback(err);var _308=this["on"+type+"Error"].call(this,err);if(_307){console.error(_307,err);}else{if(_308){this._setContent(_308,true);}}},onLoad:function(data){},onUnload:function(){},onDownloadStart:function(){return this.loadingMessage;},onContentError:function(_309){},onDownloadError:function(_30a){return this.errorMessage;},onDownloadEnd:function(){}});}if(!dojo._hasResource["dijit.TooltipDialog"]){dojo._hasResource["dijit.TooltipDialog"]=true;dojo.provide("dijit.TooltipDialog");dojo.declare("dijit.TooltipDialog",[dijit.layout.ContentPane,dijit._Templated,dijit.form._FormMixin,dijit._DialogMixin],{title:"",doLayout:false,autofocus:true,baseClass:"dijitTooltipDialog",_firstFocusItem:null,_lastFocusItem:null,templateString:dojo.cache("dijit","templates/TooltipDialog.html","<div role=\"presentation\" tabIndex=\"-1\">\n\t<div class=\"dijitTooltipContainer\" role=\"presentation\">\n\t\t<div class =\"dijitTooltipContents dijitTooltipFocusNode\" dojoAttachPoint=\"containerNode\" role=\"dialog\"></div>\n\t</div>\n\t<div class=\"dijitTooltipConnector\" role=\"presentation\"></div>\n</div>\n"),_setTitleAttr:function(_30b){this.containerNode.title=_30b;this._set("title",_30b);},postCreate:function(){this.inherited(arguments);this.connect(this.containerNode,"onkeypress","_onKey");},orient:function(node,_30c,_30d){var newC="dijitTooltipAB"+(_30d.charAt(1)=="L"?"Left":"Right")+" dijitTooltip"+(_30d.charAt(0)=="T"?"Below":"Above");dojo.replaceClass(this.domNode,newC,this._currentOrientClass||"");this._currentOrientClass=newC;},focus:function(){this._getFocusItems(this.containerNode);dijit.focus(this._firstFocusItem);},onOpen:function(pos){this.orient(this.domNode,pos.aroundCorner,pos.corner);this._onShow();},onClose:function(){this.onHide();},_onKey:function(evt){var node=evt.target;var dk=dojo.keys;if(evt.charOrCode===dk.TAB){this._getFocusItems(this.containerNode);}var _30e=(this._firstFocusItem==this._lastFocusItem);if(evt.charOrCode==dk.ESCAPE){setTimeout(dojo.hitch(this,"onCancel"),0);dojo.stopEvent(evt);}else{if(node==this._firstFocusItem&&evt.shiftKey&&evt.charOrCode===dk.TAB){if(!_30e){dijit.focus(this._lastFocusItem);}dojo.stopEvent(evt);}else{if(node==this._lastFocusItem&&evt.charOrCode===dk.TAB&&!evt.shiftKey){if(!_30e){dijit.focus(this._firstFocusItem);}dojo.stopEvent(evt);}else{if(evt.charOrCode===dk.TAB){evt.stopPropagation();}}}}}});}if(!dojo._hasResource["dijit.Dialog"]){dojo._hasResource["dijit.Dialog"]=true;dojo.provide("dijit.Dialog");dojo.declare("dijit._DialogBase",[dijit._Templated,dijit.form._FormMixin,dijit._DialogMixin,dijit._CssStateMixin],{templateString:dojo.cache("dijit","templates/Dialog.html","<div class=\"dijitDialog\" role=\"dialog\" aria-labelledby=\"${id}_title\">\n\t<div dojoAttachPoint=\"titleBar\" class=\"dijitDialogTitleBar\">\n\t<span dojoAttachPoint=\"titleNode\" class=\"dijitDialogTitle\" id=\"${id}_title\"></span>\n\t<span dojoAttachPoint=\"closeButtonNode\" class=\"dijitDialogCloseIcon\" dojoAttachEvent=\"ondijitclick: onCancel\" title=\"${buttonCancel}\" role=\"button\" tabIndex=\"-1\">\n\t\t<span dojoAttachPoint=\"closeText\" class=\"closeText\" title=\"${buttonCancel}\">x</span>\n\t</span>\n\t</div>\n\t\t<div dojoAttachPoint=\"containerNode\" class=\"dijitDialogPaneContent\"></div>\n</div>\n"),baseClass:"dijitDialog",cssStateNodes:{closeButtonNode:"dijitDialogCloseIcon"},attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{title:[{node:"titleNode",type:"innerHTML"},{node:"titleBar",type:"attribute"}],"aria-describedby":""}),open:false,duration:dijit.defaultDuration,refocus:true,autofocus:true,_firstFocusItem:null,_lastFocusItem:null,doLayout:false,draggable:true,"aria-describedby":"",postMixInProperties:function(){var _30f=dojo.i18n.getLocalization("dijit","common");dojo.mixin(this,_30f);this.inherited(arguments);},postCreate:function(){dojo.style(this.domNode,{display:"none",position:"absolute"});dojo.body().appendChild(this.domNode);this.inherited(arguments);this.connect(this,"onExecute","hide");this.connect(this,"onCancel","hide");this._modalconnects=[];},onLoad:function(){this._position();if(this.autofocus&&dijit._DialogLevelManager.isTop(this)){this._getFocusItems(this.domNode);dijit.focus(this._firstFocusItem);}this.inherited(arguments);},_endDrag:function(e){if(e&&e.node&&e.node===this.domNode){this._relativePosition=dojo.position(e.node);}},_setup:function(){var node=this.domNode;if(this.titleBar&&this.draggable){this._moveable=(dojo.isIE==6)?new dojo.dnd.TimedMoveable(node,{handle:this.titleBar}):new dojo.dnd.Moveable(node,{handle:this.titleBar,timeout:0});this._dndListener=dojo.subscribe("/dnd/move/stop",this,"_endDrag");}else{dojo.addClass(node,"dijitDialogFixed");}this.underlayAttrs={dialogId:this.id,"class":dojo.map(this["class"].split(/\s/),function(s){return s+"_underlay";}).join(" ")};},_size:function(){this._checkIfSingleChild();if(this._singleChild){if(this._singleChildOriginalStyle){this._singleChild.domNode.style.cssText=this._singleChildOriginalStyle;}delete this._singleChildOriginalStyle;}else{dojo.style(this.containerNode,{width:"auto",height:"auto"});}var mb=dojo._getMarginSize(this.domNode);var _310=dojo.window.getBox();if(mb.w>=_310.w||mb.h>=_310.h){var w=Math.min(mb.w,Math.floor(_310.w*0.75)),h=Math.min(mb.h,Math.floor(_310.h*0.75));if(this._singleChild&&this._singleChild.resize){this._singleChildOriginalStyle=this._singleChild.domNode.style.cssText;this._singleChild.resize({w:w,h:h});}else{dojo.style(this.containerNode,{width:w+"px",height:h+"px",overflow:"auto",position:"relative"});}}else{if(this._singleChild&&this._singleChild.resize){this._singleChild.resize();}}},_position:function(){if(!dojo.hasClass(dojo.body(),"dojoMove")){var node=this.domNode,_311=dojo.window.getBox(),p=this._relativePosition,bb=p?null:dojo._getBorderBox(node),l=Math.floor(_311.l+(p?p.x:(_311.w-bb.w)/2)),t=Math.floor(_311.t+(p?p.y:(_311.h-bb.h)/2));dojo.style(node,{left:l+"px",top:t+"px"});}},_onKey:function(evt){if(evt.charOrCode){var dk=dojo.keys;var node=evt.target;if(evt.charOrCode===dk.TAB){this._getFocusItems(this.domNode);}var _312=(this._firstFocusItem==this._lastFocusItem);if(node==this._firstFocusItem&&evt.shiftKey&&evt.charOrCode===dk.TAB){if(!_312){dijit.focus(this._lastFocusItem);}dojo.stopEvent(evt);}else{if(node==this._lastFocusItem&&evt.charOrCode===dk.TAB&&!evt.shiftKey){if(!_312){dijit.focus(this._firstFocusItem);}dojo.stopEvent(evt);}else{while(node){if(node==this.domNode||dojo.hasClass(node,"dijitPopup")){if(evt.charOrCode==dk.ESCAPE){this.onCancel();}else{return;}}node=node.parentNode;}if(evt.charOrCode!==dk.TAB){dojo.stopEvent(evt);}else{if(!dojo.isOpera){try{this._firstFocusItem.focus();}catch(e){}}}}}}},show:function(){if(this.open){return;}if(!this._started){this.startup();}if(!this._alreadyInitialized){this._setup();this._alreadyInitialized=true;}if(this._fadeOutDeferred){this._fadeOutDeferred.cancel();}this._modalconnects.push(dojo.connect(window,"onscroll",this,"layout"));this._modalconnects.push(dojo.connect(window,"onresize",this,function(){var _313=dojo.window.getBox();if(!this._oldViewport||_313.h!=this._oldViewport.h||_313.w!=this._oldViewport.w){this.layout();this._oldViewport=_313;}}));this._modalconnects.push(dojo.connect(this.domNode,"onkeypress",this,"_onKey"));dojo.style(this.domNode,{opacity:0,display:""});this._set("open",true);this._onShow();this._size();this._position();var _314;this._fadeInDeferred=new dojo.Deferred(dojo.hitch(this,function(){_314.stop();delete this._fadeInDeferred;}));_314=dojo.fadeIn({node:this.domNode,duration:this.duration,beforeBegin:dojo.hitch(this,function(){dijit._DialogLevelManager.show(this,this.underlayAttrs);}),onEnd:dojo.hitch(this,function(){if(this.autofocus&&dijit._DialogLevelManager.isTop(this)){this._getFocusItems(this.domNode);dijit.focus(this._firstFocusItem);}this._fadeInDeferred.callback(true);delete this._fadeInDeferred;})}).play();return this._fadeInDeferred;},hide:function(){if(!this._alreadyInitialized){return;}if(this._fadeInDeferred){this._fadeInDeferred.cancel();}var _315;this._fadeOutDeferred=new dojo.Deferred(dojo.hitch(this,function(){_315.stop();delete this._fadeOutDeferred;}));_315=dojo.fadeOut({node:this.domNode,duration:this.duration,onEnd:dojo.hitch(this,function(){this.domNode.style.display="none";dijit._DialogLevelManager.hide(this);this.onHide();this._fadeOutDeferred.callback(true);delete this._fadeOutDeferred;})}).play();if(this._scrollConnected){this._scrollConnected=false;}dojo.forEach(this._modalconnects,dojo.disconnect);this._modalconnects=[];if(this._relativePosition){delete this._relativePosition;}this._set("open",false);return this._fadeOutDeferred;},layout:function(){if(this.domNode.style.display!="none"){if(dijit._underlay){dijit._underlay.layout();}this._position();}},destroy:function(){if(this._fadeInDeferred){this._fadeInDeferred.cancel();}if(this._fadeOutDeferred){this._fadeOutDeferred.cancel();}if(this._moveable){this._moveable.destroy();}if(this._dndListener){dojo.unsubscribe(this._dndListener);}dojo.forEach(this._modalconnects,dojo.disconnect);dijit._DialogLevelManager.hide(this);this.inherited(arguments);}});dojo.declare("dijit.Dialog",[dijit.layout.ContentPane,dijit._DialogBase],{});dijit._DialogLevelManager={show:function(_316,_317){var ds=dijit._dialogStack;ds[ds.length-1].focus=dijit.getFocus(_316);var _318=dijit._underlay;if(!_318||_318._destroyed){_318=dijit._underlay=new dijit.DialogUnderlay(_317);}else{_318.set(_316.underlayAttrs);}var _319=ds[ds.length-1].dialog?ds[ds.length-1].zIndex+2:950;if(ds.length==1){_318.show();}dojo.style(dijit._underlay.domNode,"zIndex",_319-1);dojo.style(_316.domNode,"zIndex",_319);ds.push({dialog:_316,underlayAttrs:_317,zIndex:_319});},hide:function(_31a){var ds=dijit._dialogStack;if(ds[ds.length-1].dialog==_31a){ds.pop();var pd=ds[ds.length-1];if(ds.length==1){if(!dijit._underlay._destroyed){dijit._underlay.hide();}}else{dojo.style(dijit._underlay.domNode,"zIndex",pd.zIndex-1);dijit._underlay.set(pd.underlayAttrs);}if(_31a.refocus){var _31b=pd.focus;if(!_31b||(pd.dialog&&!dojo.isDescendant(_31b.node,pd.dialog.domNode))){pd.dialog._getFocusItems(pd.dialog.domNode);_31b=pd.dialog._firstFocusItem;}try{dijit.focus(_31b);}catch(e){}}}else{var idx=dojo.indexOf(dojo.map(ds,function(elem){return elem.dialog;}),_31a);if(idx!=-1){ds.splice(idx,1);}}},isTop:function(_31c){var ds=dijit._dialogStack;return ds[ds.length-1].dialog==_31c;}};dijit._dialogStack=[{dialog:null,focus:null,underlayAttrs:null}];}if(!dojo._hasResource["dojo.regexp"]){dojo._hasResource["dojo.regexp"]=true;dojo.provide("dojo.regexp");dojo.getObject("regexp",true,dojo);dojo.regexp.escapeString=function(str,_31d){return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(ch){if(_31d&&_31d.indexOf(ch)!=-1){return ch;}return "\\"+ch;});};dojo.regexp.buildGroupRE=function(arr,re,_31e){if(!(arr instanceof Array)){return re(arr);}var b=[];for(var i=0;i<arr.length;i++){b.push(re(arr[i]));}return dojo.regexp.group(b.join("|"),_31e);};dojo.regexp.group=function(_31f,_320){return "("+(_320?"?:":"")+_31f+")";};}if(!dojo._hasResource["dijit.form._FormWidget"]){dojo._hasResource["dijit.form._FormWidget"]=true;dojo.provide("dijit.form._FormWidget");dojo.declare("dijit.form._FormWidget",[dijit._Widget,dijit._Templated,dijit._CssStateMixin],{name:"",alt:"",value:"",type:"text",tabIndex:"0",disabled:false,intermediateChanges:false,scrollOnFocus:true,attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{value:"focusNode",id:"focusNode",tabIndex:"focusNode",alt:"focusNode",title:"focusNode"}),postMixInProperties:function(){this.nameAttrSetting=this.name?("name=\""+this.name.replace(/'/g,"&quot;")+"\""):"";this.inherited(arguments);},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,"onmousedown","_onMouseDown");},_setDisabledAttr:function(_321){this._set("disabled",_321);dojo.attr(this.focusNode,"disabled",_321);if(this.valueNode){dojo.attr(this.valueNode,"disabled",_321);}dijit.setWaiState(this.focusNode,"disabled",_321);if(_321){this._set("hovering",false);this._set("active",false);var _322="tabIndex" in this.attributeMap?this.attributeMap.tabIndex:"focusNode";dojo.forEach(dojo.isArray(_322)?_322:[_322],function(_323){var node=this[_323];if(dojo.isWebKit||dijit.hasDefaultTabStop(node)){node.setAttribute("tabIndex","-1");}else{node.removeAttribute("tabIndex");}},this);}else{if(this.tabIndex!=""){this.focusNode.setAttribute("tabIndex",this.tabIndex);}}},setDisabled:function(_324){dojo.deprecated("setDisabled("+_324+") is deprecated. Use set('disabled',"+_324+") instead.","","2.0");this.set("disabled",_324);},_onFocus:function(e){if(this.scrollOnFocus){dojo.window.scrollIntoView(this.domNode);}this.inherited(arguments);},isFocusable:function(){return !this.disabled&&this.focusNode&&(dojo.style(this.domNode,"display")!="none");},focus:function(){if(!this.disabled){dijit.focus(this.focusNode);}},compare:function(val1,val2){if(typeof val1=="number"&&typeof val2=="number"){return (isNaN(val1)&&isNaN(val2))?0:val1-val2;}else{if(val1>val2){return 1;}else{if(val1<val2){return -1;}else{return 0;}}}},onChange:function(_325){},_onChangeActive:false,_handleOnChange:function(_326,_327){if(this._lastValueReported==undefined&&(_327===null||!this._onChangeActive)){this._resetValue=this._lastValueReported=_326;}this._pendingOnChange=this._pendingOnChange||(typeof _326!=typeof this._lastValueReported)||(this.compare(_326,this._lastValueReported)!=0);if((this.intermediateChanges||_327||_327===undefined)&&this._pendingOnChange){this._lastValueReported=_326;this._pendingOnChange=false;if(this._onChangeActive){if(this._onChangeHandle){clearTimeout(this._onChangeHandle);}this._onChangeHandle=setTimeout(dojo.hitch(this,function(){this._onChangeHandle=null;this.onChange(_326);}),0);}}},create:function(){this.inherited(arguments);this._onChangeActive=true;},destroy:function(){if(this._onChangeHandle){clearTimeout(this._onChangeHandle);this.onChange(this._lastValueReported);}this.inherited(arguments);},setValue:function(_328){dojo.deprecated("dijit.form._FormWidget:setValue("+_328+") is deprecated.  Use set('value',"+_328+") instead.","","2.0");this.set("value",_328);},getValue:function(){dojo.deprecated(this.declaredClass+"::getValue() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},_onMouseDown:function(e){if(!e.ctrlKey&&dojo.mouseButtons.isLeft(e)&&this.isFocusable()){var _329=this.connect(dojo.body(),"onmouseup",function(){if(this.isFocusable()){this.focus();}this.disconnect(_329);});}}});dojo.declare("dijit.form._FormValueWidget",dijit.form._FormWidget,{readOnly:false,attributeMap:dojo.delegate(dijit.form._FormWidget.prototype.attributeMap,{value:"",readOnly:"focusNode"}),_setReadOnlyAttr:function(_32a){dojo.attr(this.focusNode,"readOnly",_32a);dijit.setWaiState(this.focusNode,"readonly",_32a);this._set("readOnly",_32a);},postCreate:function(){this.inherited(arguments);if(dojo.isIE<9||(dojo.isIE&&dojo.isQuirks)){this.connect(this.focusNode||this.domNode,"onkeydown",this._onKeyDown);}if(this._resetValue===undefined){this._lastValueReported=this._resetValue=this.value;}},_setValueAttr:function(_32b,_32c){this._handleOnChange(_32b,_32c);},_handleOnChange:function(_32d,_32e){this._set("value",_32d);this.inherited(arguments);},undo:function(){this._setValueAttr(this._lastValueReported,false);},reset:function(){this._hasBeenBlurred=false;this._setValueAttr(this._resetValue,true);},_onKeyDown:function(e){if(e.keyCode==dojo.keys.ESCAPE&&!(e.ctrlKey||e.altKey||e.metaKey)){var te;if(dojo.isIE){e.preventDefault();te=document.createEventObject();te.keyCode=dojo.keys.ESCAPE;te.shiftKey=e.shiftKey;e.srcElement.fireEvent("onkeypress",te);}}},_layoutHackIE7:function(){if(dojo.isIE==7){var _32f=this.domNode;var _330=_32f.parentNode;var _331=_32f.firstChild||_32f;var _332=_331.style.filter;var _333=this;while(_330&&_330.clientHeight==0){(function ping(){var _334=_333.connect(_330,"onscroll",function(e){_333.disconnect(_334);_331.style.filter=(new Date()).getMilliseconds();setTimeout(function(){_331.style.filter=_332;},0);});})();_330=_330.parentNode;}}}});}if(!dojo._hasResource["dijit.form.TextBox"]){dojo._hasResource["dijit.form.TextBox"]=true;dojo.provide("dijit.form.TextBox");dojo.declare("dijit.form.TextBox",dijit.form._FormValueWidget,{trim:false,uppercase:false,lowercase:false,propercase:false,maxLength:"",selectOnClick:false,placeHolder:"",templateString:dojo.cache("dijit.form","templates/TextBox.html","<div class=\"dijit dijitReset dijitInline dijitLeft\" id=\"widget_${id}\" role=\"presentation\"\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" dojoAttachPoint='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n"),_singleNodeTemplate:"<input class=\"dijit dijitReset dijitLeft dijitInputField\" dojoAttachPoint=\"textbox,focusNode\" autocomplete=\"off\" type=\"${type}\" ${!nameAttrSetting} />",_buttonInputDisabled:dojo.isIE?"disabled":"",baseClass:"dijitTextBox",attributeMap:dojo.delegate(dijit.form._FormValueWidget.prototype.attributeMap,{maxLength:"focusNode"}),postMixInProperties:function(){var type=this.type.toLowerCase();if(this.templateString&&this.templateString.toLowerCase()=="input"||((type=="hidden"||type=="file")&&this.templateString==dijit.form.TextBox.prototype.templateString)){this.templateString=this._singleNodeTemplate;}this.inherited(arguments);},_setPlaceHolderAttr:function(v){this._set("placeHolder",v);if(!this._phspan){this._attachPoints.push("_phspan");this._phspan=dojo.create("span",{className:"dijitPlaceHolder dijitInputField"},this.textbox,"after");}this._phspan.innerHTML="";this._phspan.appendChild(document.createTextNode(v));this._updatePlaceHolder();},_updatePlaceHolder:function(){if(this._phspan){this._phspan.style.display=(this.placeHolder&&!this._focused&&!this.textbox.value)?"":"none";}},_getValueAttr:function(){return this.parse(this.get("displayedValue"),this.constraints);},_setValueAttr:function(_335,_336,_337){var _338;if(_335!==undefined){_338=this.filter(_335);if(typeof _337!="string"){if(_338!==null&&((typeof _338!="number")||!isNaN(_338))){_337=this.filter(this.format(_338,this.constraints));}else{_337="";}}}if(_337!=null&&_337!=undefined&&((typeof _337)!="number"||!isNaN(_337))&&this.textbox.value!=_337){this.textbox.value=_337;this._set("displayedValue",this.get("displayedValue"));}this._updatePlaceHolder();this.inherited(arguments,[_338,_336]);},displayedValue:"",getDisplayedValue:function(){dojo.deprecated(this.declaredClass+"::getDisplayedValue() is deprecated. Use set('displayedValue') instead.","","2.0");return this.get("displayedValue");},_getDisplayedValueAttr:function(){return this.filter(this.textbox.value);},setDisplayedValue:function(_339){dojo.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.","","2.0");this.set("displayedValue",_339);},_setDisplayedValueAttr:function(_33a){if(_33a===null||_33a===undefined){_33a="";}else{if(typeof _33a!="string"){_33a=String(_33a);}}this.textbox.value=_33a;this._setValueAttr(this.get("value"),undefined);this._set("displayedValue",this.get("displayedValue"));},format:function(_33b,_33c){return ((_33b==null||_33b==undefined)?"":(_33b.toString?_33b.toString():_33b));},parse:function(_33d,_33e){return _33d;},_refreshState:function(){},_onInput:function(e){if(e&&e.type&&/key/i.test(e.type)&&e.keyCode){switch(e.keyCode){case dojo.keys.SHIFT:case dojo.keys.ALT:case dojo.keys.CTRL:case dojo.keys.TAB:return;}}if(this.intermediateChanges){var _33f=this;setTimeout(function(){_33f._handleOnChange(_33f.get("value"),false);},0);}this._refreshState();this._set("displayedValue",this.get("displayedValue"));},postCreate:function(){if(dojo.isIE){setTimeout(dojo.hitch(this,function(){var s=dojo.getComputedStyle(this.domNode);if(s){var ff=s.fontFamily;if(ff){var _340=this.domNode.getElementsByTagName("INPUT");if(_340){for(var i=0;i<_340.length;i++){_340[i].style.fontFamily=ff;}}}}}),0);}this.textbox.setAttribute("value",this.textbox.value);this.inherited(arguments);if(dojo.isMoz||dojo.isOpera){this.connect(this.textbox,"oninput","_onInput");}else{this.connect(this.textbox,"onkeydown","_onInput");this.connect(this.textbox,"onkeyup","_onInput");this.connect(this.textbox,"onpaste","_onInput");this.connect(this.textbox,"oncut","_onInput");}},_blankValue:"",filter:function(val){if(val===null){return this._blankValue;}if(typeof val!="string"){return val;}if(this.trim){val=dojo.trim(val);}if(this.uppercase){val=val.toUpperCase();}if(this.lowercase){val=val.toLowerCase();}if(this.propercase){val=val.replace(/[^\s]+/g,function(word){return word.substring(0,1).toUpperCase()+word.substring(1);});}return val;},_setBlurValue:function(){this._setValueAttr(this.get("value"),true);},_onBlur:function(e){if(this.disabled){return;}this._setBlurValue();this.inherited(arguments);if(this._selectOnClickHandle){this.disconnect(this._selectOnClickHandle);}if(this.selectOnClick&&dojo.isMoz){this.textbox.selectionStart=this.textbox.selectionEnd=undefined;}this._updatePlaceHolder();},_onFocus:function(by){if(this.disabled||this.readOnly){return;}if(this.selectOnClick&&by=="mouse"){this._selectOnClickHandle=this.connect(this.domNode,"onmouseup",function(){this.disconnect(this._selectOnClickHandle);var _341;if(dojo.isIE){var _342=dojo.doc.selection.createRange();var _343=_342.parentElement();_341=_343==this.textbox&&_342.text.length==0;}else{_341=this.textbox.selectionStart==this.textbox.selectionEnd;}if(_341){dijit.selectInputText(this.textbox);}});}this._updatePlaceHolder();this.inherited(arguments);this._refreshState();},reset:function(){this.textbox.value="";this.inherited(arguments);}});dijit.selectInputText=function(_344,_345,stop){var _346=dojo.global;var _347=dojo.doc;_344=dojo.byId(_344);if(isNaN(_345)){_345=0;}if(isNaN(stop)){stop=_344.value?_344.value.length:0;}dijit.focus(_344);if(_347["selection"]&&dojo.body()["createTextRange"]){if(_344.createTextRange){var r=_344.createTextRange();r.collapse(true);r.moveStart("character",-99999);r.moveStart("character",_345);r.moveEnd("character",stop-_345);r.select();}}else{if(_346["getSelection"]){if(_344.setSelectionRange){_344.setSelectionRange(_345,stop);}}}};}if(!dojo._hasResource["dijit.Tooltip"]){dojo._hasResource["dijit.Tooltip"]=true;dojo.provide("dijit.Tooltip");dojo.declare("dijit._MasterTooltip",[dijit._Widget,dijit._Templated],{duration:dijit.defaultDuration,templateString:dojo.cache("dijit","templates/Tooltip.html","<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\"\n\t><div class=\"dijitTooltipContainer dijitTooltipContents\" dojoAttachPoint=\"containerNode\" role='alert'></div\n\t><div class=\"dijitTooltipConnector\" dojoAttachPoint=\"connectorNode\"></div\n></div>\n"),postCreate:function(){dojo.body().appendChild(this.domNode);this.bgIframe=new dijit.BackgroundIframe(this.domNode);this.fadeIn=dojo.fadeIn({node:this.domNode,duration:this.duration,onEnd:dojo.hitch(this,"_onShow")});this.fadeOut=dojo.fadeOut({node:this.domNode,duration:this.duration,onEnd:dojo.hitch(this,"_onHide")});},show:function(_348,_349,_34a,rtl){if(this.aroundNode&&this.aroundNode===_349){return;}this.domNode.width="auto";if(this.fadeOut.status()=="playing"){this._onDeck=arguments;return;}this.containerNode.innerHTML=_348;var pos=dijit.placeOnScreenAroundElement(this.domNode,_349,dijit.getPopupAroundAlignment((_34a&&_34a.length)?_34a:dijit.Tooltip.defaultPosition,!rtl),dojo.hitch(this,"orient"));dojo.style(this.domNode,"opacity",0);this.fadeIn.play();this.isShowingNow=true;this.aroundNode=_349;},orient:function(node,_34b,_34c,_34d,_34e){this.connectorNode.style.top="";var _34f=_34d.w-this.connectorNode.offsetWidth;node.className="dijitTooltip "+{"BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[_34b+"-"+_34c];this.domNode.style.width="auto";var size=dojo.contentBox(this.domNode);var _350=Math.min((Math.max(_34f,1)),size.w);var _351=_350<size.w;this.domNode.style.width=_350+"px";if(_351){this.containerNode.style.overflow="auto";var _352=this.containerNode.scrollWidth;this.containerNode.style.overflow="visible";if(_352>_350){_352=_352+dojo.style(this.domNode,"paddingLeft")+dojo.style(this.domNode,"paddingRight");this.domNode.style.width=_352+"px";}}if(_34c.charAt(0)=="B"&&_34b.charAt(0)=="B"){var mb=dojo.marginBox(node);var _353=this.connectorNode.offsetHeight;if(mb.h>_34d.h){var _354=_34d.h-(_34e.h/2)-(_353/2);this.connectorNode.style.top=_354+"px";this.connectorNode.style.bottom="";}else{this.connectorNode.style.bottom=Math.min(Math.max(_34e.h/2-_353/2,0),mb.h-_353)+"px";this.connectorNode.style.top="";}}else{this.connectorNode.style.top="";this.connectorNode.style.bottom="";}return Math.max(0,size.w-_34f);},_onShow:function(){if(dojo.isIE){this.domNode.style.filter="";}},hide:function(_355){if(this._onDeck&&this._onDeck[1]==_355){this._onDeck=null;}else{if(this.aroundNode===_355){this.fadeIn.stop();this.isShowingNow=false;this.aroundNode=null;this.fadeOut.play();}else{}}},_onHide:function(){this.domNode.style.cssText="";this.containerNode.innerHTML="";if(this._onDeck){this.show.apply(this,this._onDeck);this._onDeck=null;}}});dijit.showTooltip=function(_356,_357,_358,rtl){if(!dijit._masterTT){dijit._masterTT=new dijit._MasterTooltip();}return dijit._masterTT.show(_356,_357,_358,rtl);};dijit.hideTooltip=function(_359){if(!dijit._masterTT){dijit._masterTT=new dijit._MasterTooltip();}return dijit._masterTT.hide(_359);};dojo.declare("dijit.Tooltip",dijit._Widget,{label:"",showDelay:400,connectId:[],position:[],_setConnectIdAttr:function(_35a){dojo.forEach(this._connections||[],function(_35b){dojo.forEach(_35b,dojo.hitch(this,"disconnect"));},this);var ary=dojo.isArrayLike(_35a)?_35a:(_35a?[_35a]:[]);this._connections=dojo.map(ary,function(id){var node=dojo.byId(id);return node?[this.connect(node,"onmouseenter","_onTargetMouseEnter"),this.connect(node,"onmouseleave","_onTargetMouseLeave"),this.connect(node,"onfocus","_onTargetFocus"),this.connect(node,"onblur","_onTargetBlur")]:[];},this);this._set("connectId",_35a);this._connectIds=ary;},addTarget:function(node){var id=node.id||node;if(dojo.indexOf(this._connectIds,id)==-1){this.set("connectId",this._connectIds.concat(id));}},removeTarget:function(node){var id=node.id||node,idx=dojo.indexOf(this._connectIds,id);if(idx>=0){this._connectIds.splice(idx,1);this.set("connectId",this._connectIds);}},buildRendering:function(){this.inherited(arguments);dojo.addClass(this.domNode,"dijitTooltipData");},startup:function(){this.inherited(arguments);var ids=this.connectId;dojo.forEach(dojo.isArrayLike(ids)?ids:[ids],this.addTarget,this);},_onTargetMouseEnter:function(e){this._onHover(e);},_onTargetMouseLeave:function(e){this._onUnHover(e);},_onTargetFocus:function(e){this._focus=true;this._onHover(e);},_onTargetBlur:function(e){this._focus=false;this._onUnHover(e);},_onHover:function(e){if(!this._showTimer){var _35c=e.target;this._showTimer=setTimeout(dojo.hitch(this,function(){this.open(_35c);}),this.showDelay);}},_onUnHover:function(e){if(this._focus){return;}if(this._showTimer){clearTimeout(this._showTimer);delete this._showTimer;}this.close();},open:function(_35d){if(this._showTimer){clearTimeout(this._showTimer);delete this._showTimer;}dijit.showTooltip(this.label||this.domNode.innerHTML,_35d,this.position,!this.isLeftToRight());this._connectNode=_35d;this.onShow(_35d,this.position);},close:function(){if(this._connectNode){dijit.hideTooltip(this._connectNode);delete this._connectNode;this.onHide();}if(this._showTimer){clearTimeout(this._showTimer);delete this._showTimer;}},onShow:function(_35e,_35f){},onHide:function(){},uninitialize:function(){this.close();this.inherited(arguments);}});dijit.Tooltip.defaultPosition=["after","before"];}if(!dojo._hasResource["dijit.form.ValidationTextBox"]){dojo._hasResource["dijit.form.ValidationTextBox"]=true;dojo.provide("dijit.form.ValidationTextBox");dojo.declare("dijit.form.ValidationTextBox",dijit.form.TextBox,{templateString:dojo.cache("dijit.form","templates/ValidationTextBox.html","<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\" role=\"presentation\"\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" dojoAttachPoint='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n"),baseClass:"dijitTextBox dijitValidationTextBox",required:false,promptMessage:"",invalidMessage:"$_unset_$",missingMessage:"$_unset_$",message:"",constraints:{},regExp:".*",regExpGen:function(_360){return this.regExp;},state:"",tooltipPosition:[],_setValueAttr:function(){this.inherited(arguments);this.validate(this._focused);},validator:function(_361,_362){return (new RegExp("^(?:"+this.regExpGen(_362)+")"+(this.required?"":"?")+"$")).test(_361)&&(!this.required||!this._isEmpty(_361))&&(this._isEmpty(_361)||this.parse(_361,_362)!==undefined);},_isValidSubset:function(){return this.textbox.value.search(this._partialre)==0;},isValid:function(_363){return this.validator(this.textbox.value,this.constraints);},_isEmpty:function(_364){return (this.trim?/^\s*$/:/^$/).test(_364);},getErrorMessage:function(_365){return (this.required&&this._isEmpty(this.textbox.value))?this.missingMessage:this.invalidMessage;},getPromptMessage:function(_366){return this.promptMessage;},_maskValidSubsetError:true,validate:function(_367){var _368="";var _369=this.disabled||this.isValid(_367);if(_369){this._maskValidSubsetError=true;}var _36a=this._isEmpty(this.textbox.value);var _36b=!_369&&_367&&this._isValidSubset();this._set("state",_369?"":(((((!this._hasBeenBlurred||_367)&&_36a)||_36b)&&this._maskValidSubsetError)?"Incomplete":"Error"));dijit.setWaiState(this.focusNode,"invalid",_369?"false":"true");if(this.state=="Error"){this._maskValidSubsetError=_367&&_36b;_368=this.getErrorMessage(_367);}else{if(this.state=="Incomplete"){_368=this.getPromptMessage(_367);this._maskValidSubsetError=!this._hasBeenBlurred||_367;}else{if(_36a){_368=this.getPromptMessage(_367);}}}this.set("message",_368);return _369;},displayMessage:function(_36c){dijit.hideTooltip(this.domNode);if(_36c&&this._focused){dijit.showTooltip(_36c,this.domNode,this.tooltipPosition,!this.isLeftToRight());}},_refreshState:function(){this.validate(this._focused);this.inherited(arguments);},constructor:function(){this.constraints={};},_setConstraintsAttr:function(_36d){if(!_36d.locale&&this.lang){_36d.locale=this.lang;}this._set("constraints",_36d);this._computePartialRE();},_computePartialRE:function(){var p=this.regExpGen(this.constraints);this.regExp=p;var _36e="";if(p!=".*"){this.regExp.replace(/\\.|\[\]|\[.*?[^\\]{1}\]|\{.*?\}|\(\?[=:!]|./g,function(re){switch(re.charAt(0)){case "{":case "+":case "?":case "*":case "^":case "$":case "|":case "(":_36e+=re;break;case ")":_36e+="|$)";break;default:_36e+="(?:"+re+"|$)";break;}});}try{"".search(_36e);}catch(e){_36e=this.regExp;console.warn("RegExp error in "+this.declaredClass+": "+this.regExp);}this._partialre="^(?:"+_36e+")$";},postMixInProperties:function(){this.inherited(arguments);this.messages=dojo.i18n.getLocalization("dijit.form","validate",this.lang);if(this.invalidMessage=="$_unset_$"){this.invalidMessage=this.messages.invalidMessage;}if(!this.invalidMessage){this.invalidMessage=this.promptMessage;}if(this.missingMessage=="$_unset_$"){this.missingMessage=this.messages.missingMessage;}if(!this.missingMessage){this.missingMessage=this.invalidMessage;}this._setConstraintsAttr(this.constraints);},_setDisabledAttr:function(_36f){this.inherited(arguments);this._refreshState();},_setRequiredAttr:function(_370){this._set("required",_370);dijit.setWaiState(this.focusNode,"required",_370);this._refreshState();},_setMessageAttr:function(_371){this._set("message",_371);this.displayMessage(_371);},reset:function(){this._maskValidSubsetError=true;this.inherited(arguments);},_onBlur:function(){this.displayMessage("");this.inherited(arguments);}});dojo.declare("dijit.form.MappedTextBox",dijit.form.ValidationTextBox,{postMixInProperties:function(){this.inherited(arguments);this.nameAttrSetting="";},serialize:function(val,_372){return val.toString?val.toString():"";},toString:function(){var val=this.filter(this.get("value"));return val!=null?(typeof val=="string"?val:this.serialize(val,this.constraints)):"";},validate:function(){this.valueNode.value=this.toString();return this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);this.valueNode=dojo.place("<input type='hidden'"+(this.name?" name='"+this.name.replace(/'/g,"&quot;")+"'":"")+"/>",this.textbox,"after");},reset:function(){this.valueNode.value="";this.inherited(arguments);}});dojo.declare("dijit.form.RangeBoundTextBox",dijit.form.MappedTextBox,{rangeMessage:"",rangeCheck:function(_373,_374){return ("min" in _374?(this.compare(_373,_374.min)>=0):true)&&("max" in _374?(this.compare(_373,_374.max)<=0):true);},isInRange:function(_375){return this.rangeCheck(this.get("value"),this.constraints);},_isDefinitelyOutOfRange:function(){var val=this.get("value");var _376=false;var _377=false;if("min" in this.constraints){var min=this.constraints.min;min=this.compare(val,((typeof min=="number")&&min>=0&&val!=0)?0:min);_376=(typeof min=="number")&&min<0;}if("max" in this.constraints){var max=this.constraints.max;max=this.compare(val,((typeof max!="number")||max>0)?max:0);_377=(typeof max=="number")&&max>0;}return _376||_377;},_isValidSubset:function(){return this.inherited(arguments)&&!this._isDefinitelyOutOfRange();},isValid:function(_378){return this.inherited(arguments)&&((this._isEmpty(this.textbox.value)&&!this.required)||this.isInRange(_378));},getErrorMessage:function(_379){var v=this.get("value");if(v!==null&&v!==""&&v!==undefined&&(typeof v!="number"||!isNaN(v))&&!this.isInRange(_379)){return this.rangeMessage;}return this.inherited(arguments);},postMixInProperties:function(){this.inherited(arguments);if(!this.rangeMessage){this.messages=dojo.i18n.getLocalization("dijit.form","validate",this.lang);this.rangeMessage=this.messages.rangeMessage;}},_setConstraintsAttr:function(_37a){this.inherited(arguments);if(this.focusNode){if(this.constraints.min!==undefined){dijit.setWaiState(this.focusNode,"valuemin",this.constraints.min);}else{dijit.removeWaiState(this.focusNode,"valuemin");}if(this.constraints.max!==undefined){dijit.setWaiState(this.focusNode,"valuemax",this.constraints.max);}else{dijit.removeWaiState(this.focusNode,"valuemax");}}},_setValueAttr:function(_37b,_37c){dijit.setWaiState(this.focusNode,"valuenow",_37b);this.inherited(arguments);}});}if(!dojo._hasResource["dijit._HasDropDown"]){dojo._hasResource["dijit._HasDropDown"]=true;dojo.provide("dijit._HasDropDown");dojo.declare("dijit._HasDropDown",null,{_buttonNode:null,_arrowWrapperNode:null,_popupStateNode:null,_aroundNode:null,dropDown:null,autoWidth:true,forceWidth:false,maxHeight:0,dropDownPosition:["below","above"],_stopClickEvents:true,_onDropDownMouseDown:function(e){if(this.disabled||this.readOnly){return;}dojo.stopEvent(e);this._docHandler=this.connect(dojo.doc,"onmouseup","_onDropDownMouseUp");this.toggleDropDown();},_onDropDownMouseUp:function(e){if(e&&this._docHandler){this.disconnect(this._docHandler);}var _37d=this.dropDown,_37e=false;if(e&&this._opened){var c=dojo.position(this._buttonNode,true);if(!(e.pageX>=c.x&&e.pageX<=c.x+c.w)||!(e.pageY>=c.y&&e.pageY<=c.y+c.h)){var t=e.target;while(t&&!_37e){if(dojo.hasClass(t,"dijitPopup")){_37e=true;}else{t=t.parentNode;}}if(_37e){t=e.target;if(_37d.onItemClick){var _37f;while(t&&!(_37f=dijit.byNode(t))){t=t.parentNode;}if(_37f&&_37f.onClick&&_37f.getParent){_37f.getParent().onItemClick(_37f,e);}}return;}}}if(this._opened&&_37d.focus&&_37d.autoFocus!==false){window.setTimeout(dojo.hitch(_37d,"focus"),1);}},_onDropDownClick:function(e){if(this._stopClickEvents){dojo.stopEvent(e);}},buildRendering:function(){this.inherited(arguments);this._buttonNode=this._buttonNode||this.focusNode||this.domNode;this._popupStateNode=this._popupStateNode||this.focusNode||this._buttonNode;var _380={"after":this.isLeftToRight()?"Right":"Left","before":this.isLeftToRight()?"Left":"Right","above":"Up","below":"Down","left":"Left","right":"Right"}[this.dropDownPosition[0]]||this.dropDownPosition[0]||"Down";dojo.addClass(this._arrowWrapperNode||this._buttonNode,"dijit"+_380+"ArrowButton");},postCreate:function(){this.inherited(arguments);this.connect(this._buttonNode,"onmousedown","_onDropDownMouseDown");this.connect(this._buttonNode,"onclick","_onDropDownClick");this.connect(this.focusNode,"onkeypress","_onKey");this.connect(this.focusNode,"onkeyup","_onKeyUp");},destroy:function(){if(this.dropDown){if(!this.dropDown._destroyed){this.dropDown.destroyRecursive();}delete this.dropDown;}this.inherited(arguments);},_onKey:function(e){if(this.disabled||this.readOnly){return;}var d=this.dropDown,_381=e.target;if(d&&this._opened&&d.handleKey){if(d.handleKey(e)===false){dojo.stopEvent(e);return;}}if(d&&this._opened&&e.charOrCode==dojo.keys.ESCAPE){this.closeDropDown();dojo.stopEvent(e);}else{if(!this._opened&&(e.charOrCode==dojo.keys.DOWN_ARROW||((e.charOrCode==dojo.keys.ENTER||e.charOrCode==" ")&&((_381.tagName||"").toLowerCase()!=="input"||(_381.type&&_381.type.toLowerCase()!=="text"))))){this._toggleOnKeyUp=true;dojo.stopEvent(e);}}},_onKeyUp:function(){if(this._toggleOnKeyUp){delete this._toggleOnKeyUp;this.toggleDropDown();var d=this.dropDown;if(d&&d.focus){setTimeout(dojo.hitch(d,"focus"),1);}}},_onBlur:function(){var _382=dijit._curFocus&&this.dropDown&&dojo.isDescendant(dijit._curFocus,this.dropDown.domNode);this.closeDropDown(_382);this.inherited(arguments);},isLoaded:function(){return true;},loadDropDown:function(_383){_383();},toggleDropDown:function(){if(this.disabled||this.readOnly){return;}if(!this._opened){if(!this.isLoaded()){this.loadDropDown(dojo.hitch(this,"openDropDown"));return;}else{this.openDropDown();}}else{this.closeDropDown();}},openDropDown:function(){var _384=this.dropDown,_385=_384.domNode,_386=this._aroundNode||this.domNode,self=this;if(!this._preparedNode){this._preparedNode=true;if(_385.style.width){this._explicitDDWidth=true;}if(_385.style.height){this._explicitDDHeight=true;}}if(this.maxHeight||this.forceWidth||this.autoWidth){var _387={display:"",visibility:"hidden"};if(!this._explicitDDWidth){_387.width="";}if(!this._explicitDDHeight){_387.height="";}dojo.style(_385,_387);var _388=this.maxHeight;if(_388==-1){var _389=dojo.window.getBox(),_38a=dojo.position(_386,false);_388=Math.floor(Math.max(_38a.y,_389.h-(_38a.y+_38a.h)));}if(_384.startup&&!_384._started){_384.startup();}dijit.popup.moveOffScreen(_384);var mb=dojo._getMarginSize(_385);var _38b=(_388&&mb.h>_388);dojo.style(_385,{overflowX:"hidden",overflowY:_38b?"auto":"hidden"});if(_38b){mb.h=_388;if("w" in mb){mb.w+=16;}}else{delete mb.h;}if(this.forceWidth){mb.w=_386.offsetWidth;}else{if(this.autoWidth){mb.w=Math.max(mb.w,_386.offsetWidth);}else{delete mb.w;}}if(dojo.isFunction(_384.resize)){_384.resize(mb);}else{dojo.marginBox(_385,mb);}}var _38c=dijit.popup.open({parent:this,popup:_384,around:_386,orient:dijit.getPopupAroundAlignment((this.dropDownPosition&&this.dropDownPosition.length)?this.dropDownPosition:["below"],this.isLeftToRight()),onExecute:function(){self.closeDropDown(true);},onCancel:function(){self.closeDropDown(true);},onClose:function(){dojo.attr(self._popupStateNode,"popupActive",false);dojo.removeClass(self._popupStateNode,"dijitHasDropDownOpen");self._opened=false;}});dojo.attr(this._popupStateNode,"popupActive","true");dojo.addClass(self._popupStateNode,"dijitHasDropDownOpen");this._opened=true;return _38c;},closeDropDown:function(_38d){if(this._opened){if(_38d){this.focus();}dijit.popup.close(this.dropDown);this._opened=false;}}});}if(!dojo._hasResource["dijit.form.ComboBox"]){dojo._hasResource["dijit.form.ComboBox"]=true;dojo.provide("dijit.form.ComboBox");dojo.declare("dijit.form.ComboBoxMixin",dijit._HasDropDown,{item:null,pageSize:Infinity,store:null,fetchProperties:{},query:{},autoComplete:true,highlightMatch:"first",searchDelay:100,searchAttr:"name",labelAttr:"",labelType:"text",queryExpr:"${0}*",ignoreCase:true,hasDownArrow:true,templateString:dojo.cache("dijit.form","templates/DropDownBox.html","<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\"\n\trole=\"combobox\"\n\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer'\n\t\tdojoAttachPoint=\"_buttonNode, _popupStateNode\" role=\"presentation\"\n\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"&#9660; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t\t\t${_buttonInputDisabled}\n\t/></div\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class='dijitReset dijitInputInner' ${!nameAttrSetting} type=\"text\" autocomplete=\"off\"\n\t\t\tdojoAttachPoint=\"textbox,focusNode\" role=\"textbox\" aria-haspopup=\"true\"\n\t/></div\n></div>\n"),baseClass:"dijitTextBox dijitComboBox",dropDownClass:"dijit.form._ComboBoxMenu",cssStateNodes:{"_buttonNode":"dijitDownArrowButton"},maxHeight:-1,_stopClickEvents:false,_getCaretPos:function(_38e){var pos=0;if(typeof (_38e.selectionStart)=="number"){pos=_38e.selectionStart;}else{if(dojo.isIE){var tr=dojo.doc.selection.createRange().duplicate();var ntr=_38e.createTextRange();tr.move("character",0);ntr.move("character",0);try{ntr.setEndPoint("EndToEnd",tr);pos=String(ntr.text).replace(/\r/g,"").length;}catch(e){}}}return pos;},_setCaretPos:function(_38f,_390){_390=parseInt(_390);dijit.selectInputText(_38f,_390,_390);},_setDisabledAttr:function(_391){this.inherited(arguments);dijit.setWaiState(this.domNode,"disabled",_391);},_abortQuery:function(){if(this.searchTimer){clearTimeout(this.searchTimer);this.searchTimer=null;}if(this._fetchHandle){if(this._fetchHandle.abort){this._fetchHandle.abort();}this._fetchHandle=null;}},_onInput:function(evt){if(!this.searchTimer&&(evt.type=="paste"||evt.type=="input")&&this._lastInput!=this.textbox.value){this.searchTimer=setTimeout(dojo.hitch(this,function(){this._onKey({charOrCode:229});}),100);}this.inherited(arguments);},_onKey:function(evt){var key=evt.charOrCode;if(evt.altKey||((evt.ctrlKey||evt.metaKey)&&(key!="x"&&key!="v"))||key==dojo.keys.SHIFT){return;}var _392=false;var pw=this.dropDown;var dk=dojo.keys;var _393=null;this._prev_key_backspace=false;this._abortQuery();this.inherited(arguments);if(this._opened){_393=pw.getHighlightedOption();}switch(key){case dk.PAGE_DOWN:case dk.DOWN_ARROW:case dk.PAGE_UP:case dk.UP_ARROW:if(this._opened){this._announceOption(_393);}dojo.stopEvent(evt);break;case dk.ENTER:if(_393){if(_393==pw.nextButton){this._nextSearch(1);dojo.stopEvent(evt);break;}else{if(_393==pw.previousButton){this._nextSearch(-1);dojo.stopEvent(evt);break;}}}else{this._setBlurValue();this._setCaretPos(this.focusNode,this.focusNode.value.length);}if(this._opened||this._fetchHandle){evt.preventDefault();}case dk.TAB:var _394=this.get("displayedValue");if(pw&&(_394==pw._messages["previousMessage"]||_394==pw._messages["nextMessage"])){break;}if(_393){this._selectOption();}if(this._opened){this._lastQuery=null;this.closeDropDown();}break;case " ":if(_393){dojo.stopEvent(evt);this._selectOption();this.closeDropDown();}else{_392=true;}break;case dk.DELETE:case dk.BACKSPACE:this._prev_key_backspace=true;_392=true;break;default:_392=typeof key=="string"||key==229;}if(_392){this.item=undefined;this.searchTimer=setTimeout(dojo.hitch(this,"_startSearchFromInput"),1);}},_autoCompleteText:function(text){var fn=this.focusNode;dijit.selectInputText(fn,fn.value.length);var _395=this.ignoreCase?"toLowerCase":"substr";if(text[_395](0).indexOf(this.focusNode.value[_395](0))==0){var cpos=this._getCaretPos(fn);if((cpos+1)>fn.value.length){fn.value=text;dijit.selectInputText(fn,cpos);}}else{fn.value=text;dijit.selectInputText(fn);}},_openResultList:function(_396,_397){this._fetchHandle=null;if(this.disabled||this.readOnly||(_397.query[this.searchAttr]!=this._lastQuery)){return;}var _398=this.dropDown._highlighted_option&&dojo.hasClass(this.dropDown._highlighted_option,"dijitMenuItemSelected");this.dropDown.clearResultList();if(!_396.length&&!this._maxOptions){this.closeDropDown();return;}_397._maxOptions=this._maxOptions;var _399=this.dropDown.createOptions(_396,_397,dojo.hitch(this,"_getMenuLabelFromItem"));this._showResultList();if(_397.direction){if(1==_397.direction){this.dropDown.highlightFirstOption();}else{if(-1==_397.direction){this.dropDown.highlightLastOption();}}if(_398){this._announceOption(this.dropDown.getHighlightedOption());}}else{if(this.autoComplete&&!this._prev_key_backspace&&!/^[*]+$/.test(_397.query[this.searchAttr])){this._announceOption(_399[1]);}}},_showResultList:function(){this.closeDropDown(true);this.displayMessage("");this.openDropDown();dijit.setWaiState(this.domNode,"expanded","true");},loadDropDown:function(_39a){this._startSearchAll();},isLoaded:function(){return false;},closeDropDown:function(){this._abortQuery();if(this._opened){this.inherited(arguments);dijit.setWaiState(this.domNode,"expanded","false");dijit.removeWaiState(this.focusNode,"activedescendant");}},_setBlurValue:function(){var _39b=this.get("displayedValue");var pw=this.dropDown;if(pw&&(_39b==pw._messages["previousMessage"]||_39b==pw._messages["nextMessage"])){this._setValueAttr(this._lastValueReported,true);}else{if(typeof this.item=="undefined"){this.item=null;this.set("displayedValue",_39b);}else{if(this.value!=this._lastValueReported){dijit.form._FormValueWidget.prototype._setValueAttr.call(this,this.value,true);}this._refreshState();}}},_onBlur:function(){this.closeDropDown();this.inherited(arguments);},_setItemAttr:function(item,_39c,_39d){if(!_39d){_39d=this.store.getValue(item,this.searchAttr);}var _39e=this._getValueField()!=this.searchAttr?this.store.getIdentity(item):_39d;this._set("item",item);dijit.form.ComboBox.superclass._setValueAttr.call(this,_39e,_39c,_39d);},_announceOption:function(node){if(!node){return;}var _39f;if(node==this.dropDown.nextButton||node==this.dropDown.previousButton){_39f=node.innerHTML;this.item=undefined;this.value="";}else{_39f=this.store.getValue(node.item,this.searchAttr).toString();this.set("item",node.item,false,_39f);}this.focusNode.value=this.focusNode.value.substring(0,this._lastInput.length);dijit.setWaiState(this.focusNode,"activedescendant",dojo.attr(node,"id"));this._autoCompleteText(_39f);},_selectOption:function(evt){if(evt){this._announceOption(evt.target);}this.closeDropDown();this._setCaretPos(this.focusNode,this.focusNode.value.length);dijit.form._FormValueWidget.prototype._setValueAttr.call(this,this.value,true);},_startSearchAll:function(){this._startSearch("");},_startSearchFromInput:function(){this._startSearch(this.focusNode.value.replace(/([\\\*\?])/g,"\\$1"));},_getQueryString:function(text){return dojo.string.substitute(this.queryExpr,[text]);},_startSearch:function(key){if(!this.dropDown){var _3a0=this.id+"_popup",_3a1=dojo.getObject(this.dropDownClass,false);this.dropDown=new _3a1({onChange:dojo.hitch(this,this._selectOption),id:_3a0,dir:this.dir});dijit.removeWaiState(this.focusNode,"activedescendant");dijit.setWaiState(this.textbox,"owns",_3a0);}var _3a2=dojo.clone(this.query);this._lastInput=key;this._lastQuery=_3a2[this.searchAttr]=this._getQueryString(key);this.searchTimer=setTimeout(dojo.hitch(this,function(_3a3,_3a4){this.searchTimer=null;var _3a5={queryOptions:{ignoreCase:this.ignoreCase,deep:true},query:_3a3,onBegin:dojo.hitch(this,"_setMaxOptions"),onComplete:dojo.hitch(this,"_openResultList"),onError:function(_3a6){_3a4._fetchHandle=null;console.error("dijit.form.ComboBox: "+_3a6);_3a4.closeDropDown();},start:0,count:this.pageSize};dojo.mixin(_3a5,_3a4.fetchProperties);this._fetchHandle=_3a4.store.fetch(_3a5);var _3a7=function(_3a8,_3a9){_3a8.start+=_3a8.count*_3a9;_3a8.direction=_3a9;this._fetchHandle=this.store.fetch(_3a8);this.focus();};this._nextSearch=this.dropDown.onPage=dojo.hitch(this,_3a7,this._fetchHandle);},_3a2,this),this.searchDelay);},_setMaxOptions:function(size,_3aa){this._maxOptions=size;},_getValueField:function(){return this.searchAttr;},constructor:function(){this.query={};this.fetchProperties={};},postMixInProperties:function(){if(!this.store){var _3ab=this.srcNodeRef;this.store=new dijit.form._ComboBoxDataStore(_3ab);if(!("value" in this.params)){var item=(this.item=this.store.fetchSelectedItem());if(item){var _3ac=this._getValueField();this.value=this.store.getValue(item,_3ac);}}}this.inherited(arguments);},postCreate:function(){var _3ad=dojo.query("label[for=\""+this.id+"\"]");if(_3ad.length){_3ad[0].id=(this.id+"_label");dijit.setWaiState(this.domNode,"labelledby",_3ad[0].id);}this.inherited(arguments);},_setHasDownArrowAttr:function(val){this.hasDownArrow=val;this._buttonNode.style.display=val?"":"none";},_getMenuLabelFromItem:function(item){var _3ae=this.labelFunc(item,this.store),_3af=this.labelType;if(this.highlightMatch!="none"&&this.labelType=="text"&&this._lastInput){_3ae=this.doHighlight(_3ae,this._escapeHtml(this._lastInput));_3af="html";}return {html:_3af=="html",label:_3ae};},doHighlight:function(_3b0,find){var _3b1=(this.ignoreCase?"i":"")+(this.highlightMatch=="all"?"g":""),i=this.queryExpr.indexOf("${0}");find=dojo.regexp.escapeString(find);return this._escapeHtml(_3b0).replace(new RegExp((i==0?"^":"")+"("+find+")"+(i==(this.queryExpr.length-4)?"$":""),_3b1),"<span class=\"dijitComboBoxHighlightMatch\">$1</span>");},_escapeHtml:function(str){str=String(str).replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");return str;},reset:function(){this.item=null;this.inherited(arguments);},labelFunc:function(item,_3b2){return _3b2.getValue(item,this.labelAttr||this.searchAttr).toString();}});dojo.declare("dijit.form._ComboBoxMenu",[dijit._Widget,dijit._Templated,dijit._CssStateMixin],{templateString:"<ul class='dijitReset dijitMenu' dojoAttachEvent='onmousedown:_onMouseDown,onmouseup:_onMouseUp,onmouseover:_onMouseOver,onmouseout:_onMouseOut' style='overflow: \"auto\"; overflow-x: \"hidden\";'>"+"<li class='dijitMenuItem dijitMenuPreviousButton' dojoAttachPoint='previousButton' role='option'></li>"+"<li class='dijitMenuItem dijitMenuNextButton' dojoAttachPoint='nextButton' role='option'></li>"+"</ul>",_messages:null,baseClass:"dijitComboBoxMenu",postMixInProperties:function(){this.inherited(arguments);this._messages=dojo.i18n.getLocalization("dijit.form","ComboBox",this.lang);},buildRendering:function(){this.inherited(arguments);this.previousButton.innerHTML=this._messages["previousMessage"];this.nextButton.innerHTML=this._messages["nextMessage"];},_setValueAttr:function(_3b3){this.value=_3b3;this.onChange(_3b3);},onChange:function(_3b4){},onPage:function(_3b5){},onClose:function(){this._blurOptionNode();},_createOption:function(item,_3b6){var _3b7=dojo.create("li",{"class":"dijitReset dijitMenuItem"+(this.isLeftToRight()?"":" dijitMenuItemRtl"),role:"option"});var _3b8=_3b6(item);if(_3b8.html){_3b7.innerHTML=_3b8.label;}else{_3b7.appendChild(dojo.doc.createTextNode(_3b8.label));}if(_3b7.innerHTML==""){_3b7.innerHTML="&nbsp;";}_3b7.item=item;return _3b7;},createOptions:function(_3b9,_3ba,_3bb){this.previousButton.style.display=(_3ba.start==0)?"none":"";dojo.attr(this.previousButton,"id",this.id+"_prev");dojo.forEach(_3b9,function(item,i){var _3bc=this._createOption(item,_3bb);dojo.attr(_3bc,"id",this.id+i);this.domNode.insertBefore(_3bc,this.nextButton);},this);var _3bd=false;if(_3ba._maxOptions&&_3ba._maxOptions!=-1){if((_3ba.start+_3ba.count)<_3ba._maxOptions){_3bd=true;}else{if((_3ba.start+_3ba.count)>_3ba._maxOptions&&_3ba.count==_3b9.length){_3bd=true;}}}else{if(_3ba.count==_3b9.length){_3bd=true;}}this.nextButton.style.display=_3bd?"":"none";dojo.attr(this.nextButton,"id",this.id+"_next");return this.domNode.childNodes;},clearResultList:function(){while(this.domNode.childNodes.length>2){this.domNode.removeChild(this.domNode.childNodes[this.domNode.childNodes.length-2]);}this._blurOptionNode();},_onMouseDown:function(evt){dojo.stopEvent(evt);},_onMouseUp:function(evt){if(evt.target===this.domNode||!this._highlighted_option){return;}else{if(evt.target==this.previousButton){this._blurOptionNode();this.onPage(-1);}else{if(evt.target==this.nextButton){this._blurOptionNode();this.onPage(1);}else{var tgt=evt.target;while(!tgt.item){tgt=tgt.parentNode;}this._setValueAttr({target:tgt},true);}}}},_onMouseOver:function(evt){if(evt.target===this.domNode){return;}var tgt=evt.target;if(!(tgt==this.previousButton||tgt==this.nextButton)){while(!tgt.item){tgt=tgt.parentNode;}}this._focusOptionNode(tgt);},_onMouseOut:function(evt){if(evt.target===this.domNode){return;}this._blurOptionNode();},_focusOptionNode:function(node){if(this._highlighted_option!=node){this._blurOptionNode();this._highlighted_option=node;dojo.addClass(this._highlighted_option,"dijitMenuItemSelected");}},_blurOptionNode:function(){if(this._highlighted_option){dojo.removeClass(this._highlighted_option,"dijitMenuItemSelected");this._highlighted_option=null;}},_highlightNextOption:function(){if(!this.getHighlightedOption()){var fc=this.domNode.firstChild;this._focusOptionNode(fc.style.display=="none"?fc.nextSibling:fc);}else{var ns=this._highlighted_option.nextSibling;if(ns&&ns.style.display!="none"){this._focusOptionNode(ns);}else{this.highlightFirstOption();}}dojo.window.scrollIntoView(this._highlighted_option);},highlightFirstOption:function(){var _3be=this.domNode.firstChild;var _3bf=_3be.nextSibling;this._focusOptionNode(_3bf.style.display=="none"?_3be:_3bf);dojo.window.scrollIntoView(this._highlighted_option);},highlightLastOption:function(){this._focusOptionNode(this.domNode.lastChild.previousSibling);dojo.window.scrollIntoView(this._highlighted_option);},_highlightPrevOption:function(){if(!this.getHighlightedOption()){var lc=this.domNode.lastChild;this._focusOptionNode(lc.style.display=="none"?lc.previousSibling:lc);}else{var ps=this._highlighted_option.previousSibling;if(ps&&ps.style.display!="none"){this._focusOptionNode(ps);}else{this.highlightLastOption();}}dojo.window.scrollIntoView(this._highlighted_option);},_page:function(up){var _3c0=0;var _3c1=this.domNode.scrollTop;var _3c2=dojo.style(this.domNode,"height");if(!this.getHighlightedOption()){this._highlightNextOption();}while(_3c0<_3c2){if(up){if(!this.getHighlightedOption().previousSibling||this._highlighted_option.previousSibling.style.display=="none"){break;}this._highlightPrevOption();}else{if(!this.getHighlightedOption().nextSibling||this._highlighted_option.nextSibling.style.display=="none"){break;}this._highlightNextOption();}var _3c3=this.domNode.scrollTop;_3c0+=(_3c3-_3c1)*(up?-1:1);_3c1=_3c3;}},pageUp:function(){this._page(true);},pageDown:function(){this._page(false);},getHighlightedOption:function(){var ho=this._highlighted_option;return (ho&&ho.parentNode)?ho:null;},handleKey:function(evt){switch(evt.charOrCode){case dojo.keys.DOWN_ARROW:this._highlightNextOption();return false;case dojo.keys.PAGE_DOWN:this.pageDown();return false;case dojo.keys.UP_ARROW:this._highlightPrevOption();return false;case dojo.keys.PAGE_UP:this.pageUp();return false;default:return true;}}});dojo.declare("dijit.form.ComboBox",[dijit.form.ValidationTextBox,dijit.form.ComboBoxMixin],{_setValueAttr:function(_3c4,_3c5,_3c6){this._set("item",null);if(!_3c4){_3c4="";}dijit.form.ValidationTextBox.prototype._setValueAttr.call(this,_3c4,_3c5,_3c6);}});dojo.declare("dijit.form._ComboBoxDataStore",null,{constructor:function(root){this.root=root;if(root.tagName!="SELECT"&&root.firstChild){root=dojo.query("select",root);if(root.length>0){root=root[0];}else{this.root.innerHTML="<SELECT>"+this.root.innerHTML+"</SELECT>";root=this.root.firstChild;}this.root=root;}dojo.query("> option",root).forEach(function(node){node.innerHTML=dojo.trim(node.innerHTML);});},getValue:function(item,_3c7,_3c8){return (_3c7=="value")?item.value:(item.innerText||item.textContent||"");},isItemLoaded:function(_3c9){return true;},getFeatures:function(){return {"dojo.data.api.Read":true,"dojo.data.api.Identity":true};},_fetchItems:function(args,_3ca,_3cb){if(!args.query){args.query={};}if(!args.query.name){args.query.name="";}if(!args.queryOptions){args.queryOptions={};}var _3cc=dojo.data.util.filter.patternToRegExp(args.query.name,args.queryOptions.ignoreCase),_3cd=dojo.query("> option",this.root).filter(function(_3ce){return (_3ce.innerText||_3ce.textContent||"").match(_3cc);});if(args.sort){_3cd.sort(dojo.data.util.sorter.createSortFunction(args.sort,this));}_3ca(_3cd,args);},close:function(_3cf){return;},getLabel:function(item){return item.innerHTML;},getIdentity:function(item){return dojo.attr(item,"value");},fetchItemByIdentity:function(args){var item=dojo.query("> option[value='"+args.identity+"']",this.root)[0];args.onItem(item);},fetchSelectedItem:function(){var root=this.root,si=root.selectedIndex;return typeof si=="number"?dojo.query("> option:nth-child("+(si!=-1?si+1:1)+")",root)[0]:null;}});dojo.extend(dijit.form._ComboBoxDataStore,dojo.data.util.simpleFetch);}if(!dojo._hasResource["dijit.form.Button"]){dojo._hasResource["dijit.form.Button"]=true;dojo.provide("dijit.form.Button");dojo.declare("dijit.form.Button",dijit.form._FormWidget,{label:"",showLabel:true,iconClass:"",type:"button",baseClass:"dijitButton",templateString:dojo.cache("dijit.form","templates/Button.html","<span class=\"dijit dijitReset dijitInline\"\n\t><span class=\"dijitReset dijitInline dijitButtonNode\"\n\t\tdojoAttachEvent=\"ondijitclick:_onButtonClick\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdojoAttachPoint=\"titleNode,focusNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\" dojoAttachPoint=\"iconNode\"></span\n\t\t\t><span class=\"dijitReset dijitToggleButtonIconChar\">&#x25CF;</span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t\tdojoAttachPoint=\"containerNode\"\n\t\t\t></span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\" tabIndex=\"-1\"\n\t\tdojoAttachPoint=\"valueNode\"\n/></span>\n"),attributeMap:dojo.delegate(dijit.form._FormWidget.prototype.attributeMap,{value:"valueNode"}),_onClick:function(e){if(this.disabled){return false;}this._clicked();return this.onClick(e);},_onButtonClick:function(e){if(this._onClick(e)===false){e.preventDefault();}else{if(this.type=="submit"&&!(this.valueNode||this.focusNode).form){for(var node=this.domNode;node.parentNode;node=node.parentNode){var _3d0=dijit.byNode(node);if(_3d0&&typeof _3d0._onSubmit=="function"){_3d0._onSubmit(e);break;}}}else{if(this.valueNode){this.valueNode.click();e.preventDefault();}}}},buildRendering:function(){this.inherited(arguments);dojo.setSelectable(this.focusNode,false);},_fillContent:function(_3d1){if(_3d1&&(!this.params||!("label" in this.params))){this.set("label",_3d1.innerHTML);}},_setShowLabelAttr:function(val){if(this.containerNode){dojo.toggleClass(this.containerNode,"dijitDisplayNone",!val);}this._set("showLabel",val);},onClick:function(e){return true;},_clicked:function(e){},setLabel:function(_3d2){dojo.deprecated("dijit.form.Button.setLabel() is deprecated.  Use set('label', ...) instead.","","2.0");this.set("label",_3d2);},_setLabelAttr:function(_3d3){this._set("label",_3d3);this.containerNode.innerHTML=_3d3;if(this.showLabel==false&&!this.params.title){this.titleNode.title=dojo.trim(this.containerNode.innerText||this.containerNode.textContent||"");}},_setIconClassAttr:function(val){var _3d4=this.iconClass||"dijitNoIcon",_3d5=val||"dijitNoIcon";dojo.replaceClass(this.iconNode,_3d5,_3d4);this._set("iconClass",val);}});dojo.declare("dijit.form.DropDownButton",[dijit.form.Button,dijit._Container,dijit._HasDropDown],{baseClass:"dijitDropDownButton",templateString:dojo.cache("dijit.form","templates/DropDownButton.html","<span class=\"dijit dijitReset dijitInline\"\n\t><span class='dijitReset dijitInline dijitButtonNode'\n\t\tdojoAttachEvent=\"ondijitclick:_onButtonClick\" dojoAttachPoint=\"_buttonNode\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdojoAttachPoint=\"focusNode,titleNode,_arrowWrapperNode\"\n\t\t\trole=\"button\" aria-haspopup=\"true\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\"\n\t\t\t\tdojoAttachPoint=\"iconNode\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tdojoAttachPoint=\"containerNode,_popupStateNode\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonInner\"></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonChar\">&#9660;</span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\" tabIndex=\"-1\"\n\t\tdojoAttachPoint=\"valueNode\"\n/></span>\n"),_fillContent:function(){if(this.srcNodeRef){var _3d6=dojo.query("*",this.srcNodeRef);dijit.form.DropDownButton.superclass._fillContent.call(this,_3d6[0]);this.dropDownContainer=this.srcNodeRef;}},startup:function(){if(this._started){return;}if(!this.dropDown&&this.dropDownContainer){var _3d7=dojo.query("[widgetId]",this.dropDownContainer)[0];this.dropDown=dijit.byNode(_3d7);delete this.dropDownContainer;}if(this.dropDown){dijit.popup.hide(this.dropDown);}this.inherited(arguments);},isLoaded:function(){var _3d8=this.dropDown;return (!!_3d8&&(!_3d8.href||_3d8.isLoaded));},loadDropDown:function(){var _3d9=this.dropDown;if(!_3d9){return;}if(!this.isLoaded()){var _3da=dojo.connect(_3d9,"onLoad",this,function(){dojo.disconnect(_3da);this.openDropDown();});_3d9.refresh();}else{this.openDropDown();}},isFocusable:function(){return this.inherited(arguments)&&!this._mouseDown;}});dojo.declare("dijit.form.ComboButton",dijit.form.DropDownButton,{templateString:dojo.cache("dijit.form","templates/ComboButton.html","<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tcellspacing='0' cellpadding='0' role=\"presentation\"\n\t><tbody role=\"presentation\"><tr role=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonNode\" dojoAttachPoint=\"buttonNode\" dojoAttachEvent=\"ondijitclick:_onButtonClick,onkeypress:_onButtonKeyPress\"\n\t\t><div id=\"${id}_button\" class=\"dijitReset dijitButtonContents\"\n\t\t\tdojoAttachPoint=\"titleNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><div class=\"dijitReset dijitInline dijitIcon\" dojoAttachPoint=\"iconNode\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitInline dijitButtonText\" id=\"${id}_label\" dojoAttachPoint=\"containerNode\" role=\"presentation\"></div\n\t\t></div\n\t\t></td\n\t\t><td id=\"${id}_arrow\" class='dijitReset dijitRight dijitButtonNode dijitArrowButton'\n\t\t\tdojoAttachPoint=\"_popupStateNode,focusNode,_buttonNode\"\n\t\t\tdojoAttachEvent=\"onkeypress:_onArrowKeyPress\"\n\t\t\ttitle=\"${optionsTitle}\"\n\t\t\trole=\"button\" aria-haspopup=\"true\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" role=\"presentation\">&#9660;</div\n\t\t></td\n\t\t><td style=\"display:none !important;\"\n\t\t\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" dojoAttachPoint=\"valueNode\"\n\t\t/></td></tr></tbody\n></table>\n"),attributeMap:dojo.mixin(dojo.clone(dijit.form.Button.prototype.attributeMap),{id:"",tabIndex:["focusNode","titleNode"],title:"titleNode"}),optionsTitle:"",baseClass:"dijitComboButton",cssStateNodes:{"buttonNode":"dijitButtonNode","titleNode":"dijitButtonContents","_popupStateNode":"dijitDownArrowButton"},_focusedNode:null,_onButtonKeyPress:function(evt){if(evt.charOrCode==dojo.keys[this.isLeftToRight()?"RIGHT_ARROW":"LEFT_ARROW"]){dijit.focus(this._popupStateNode);dojo.stopEvent(evt);}},_onArrowKeyPress:function(evt){if(evt.charOrCode==dojo.keys[this.isLeftToRight()?"LEFT_ARROW":"RIGHT_ARROW"]){dijit.focus(this.titleNode);dojo.stopEvent(evt);}},focus:function(_3db){if(!this.disabled){dijit.focus(_3db=="start"?this.titleNode:this._popupStateNode);}}});dojo.declare("dijit.form.ToggleButton",dijit.form.Button,{baseClass:"dijitToggleButton",checked:false,attributeMap:dojo.mixin(dojo.clone(dijit.form.Button.prototype.attributeMap),{checked:"focusNode"}),_clicked:function(evt){this.set("checked",!this.checked);},_setCheckedAttr:function(_3dc,_3dd){this._set("checked",_3dc);dojo.attr(this.focusNode||this.domNode,"checked",_3dc);dijit.setWaiState(this.focusNode||this.domNode,"pressed",_3dc);this._handleOnChange(_3dc,_3dd);},setChecked:function(_3de){dojo.deprecated("setChecked("+_3de+") is deprecated. Use set('checked',"+_3de+") instead.","","2.0");this.set("checked",_3de);},reset:function(){this._hasBeenBlurred=false;this.set("checked",this.params.checked||false);}});}if(!dojo._hasResource["dijit.form.ToggleButton"]){dojo._hasResource["dijit.form.ToggleButton"]=true;dojo.provide("dijit.form.ToggleButton");}if(!dojo._hasResource["dijit.form.CheckBox"]){dojo._hasResource["dijit.form.CheckBox"]=true;dojo.provide("dijit.form.CheckBox");dojo.declare("dijit.form.CheckBox",dijit.form.ToggleButton,{templateString:dojo.cache("dijit.form","templates/CheckBox.html","<div class=\"dijit dijitReset dijitInline\" role=\"presentation\"\n\t><input\n\t \t${!nameAttrSetting} type=\"${type}\" ${checkedAttrSetting}\n\t\tclass=\"dijitReset dijitCheckBoxInput\"\n\t\tdojoAttachPoint=\"focusNode\"\n\t \tdojoAttachEvent=\"onclick:_onClick\"\n/></div>\n"),baseClass:"dijitCheckBox",type:"checkbox",value:"on",readOnly:false,attributeMap:dojo.delegate(dijit.form._FormWidget.prototype.attributeMap,{readOnly:"focusNode"}),_setReadOnlyAttr:function(_3df){this._set("readOnly",_3df);dojo.attr(this.focusNode,"readOnly",_3df);dijit.setWaiState(this.focusNode,"readonly",_3df);},_setValueAttr:function(_3e0,_3e1){if(typeof _3e0=="string"){this._set("value",_3e0);dojo.attr(this.focusNode,"value",_3e0);_3e0=true;}if(this._created){this.set("checked",_3e0,_3e1);}},_getValueAttr:function(){return (this.checked?this.value:false);},_setLabelAttr:undefined,postMixInProperties:function(){if(this.value==""){this.value="on";}this.checkedAttrSetting=this.checked?"checked":"";this.inherited(arguments);},_fillContent:function(_3e2){},reset:function(){this._hasBeenBlurred=false;this.set("checked",this.params.checked||false);this._set("value",this.params.value||"on");dojo.attr(this.focusNode,"value",this.value);},_onFocus:function(){if(this.id){dojo.query("label[for='"+this.id+"']").addClass("dijitFocusedLabel");}this.inherited(arguments);},_onBlur:function(){if(this.id){dojo.query("label[for='"+this.id+"']").removeClass("dijitFocusedLabel");}this.inherited(arguments);},_onClick:function(e){if(this.readOnly){dojo.stopEvent(e);return false;}return this.inherited(arguments);}});dojo.declare("dijit.form.RadioButton",dijit.form.CheckBox,{type:"radio",baseClass:"dijitRadio",_setCheckedAttr:function(_3e3){this.inherited(arguments);if(!this._created){return;}if(_3e3){var _3e4=this;dojo.query("INPUT[type=radio]",this.focusNode.form||dojo.doc).forEach(function(_3e5){if(_3e5.name==_3e4.name&&_3e5!=_3e4.focusNode&&_3e5.form==_3e4.focusNode.form){var _3e6=dijit.getEnclosingWidget(_3e5);if(_3e6&&_3e6.checked){_3e6.set("checked",false);}}});}},_clicked:function(e){if(!this.checked){this.set("checked",true);}}});}if(!dojo._hasResource["dojo.cookie"]){dojo._hasResource["dojo.cookie"]=true;dojo.provide("dojo.cookie");dojo.cookie=function(name,_3e7,_3e8){var c=document.cookie;if(arguments.length==1){var _3e9=c.match(new RegExp("(?:^|; )"+dojo.regexp.escapeString(name)+"=([^;]*)"));return _3e9?decodeURIComponent(_3e9[1]):undefined;}else{_3e8=_3e8||{};var exp=_3e8.expires;if(typeof exp=="number"){var d=new Date();d.setTime(d.getTime()+exp*24*60*60*1000);exp=_3e8.expires=d;}if(exp&&exp.toUTCString){_3e8.expires=exp.toUTCString();}_3e7=encodeURIComponent(_3e7);var _3ea=name+"="+_3e7,_3eb;for(_3eb in _3e8){_3ea+="; "+_3eb;var _3ec=_3e8[_3eb];if(_3ec!==true){_3ea+="="+_3ec;}}document.cookie=_3ea;}};dojo.cookie.isSupported=function(){if(!("cookieEnabled" in navigator)){this("__djCookieTest__","CookiesAllowed");navigator.cookieEnabled=this("__djCookieTest__")=="CookiesAllowed";if(navigator.cookieEnabled){this("__djCookieTest__","",{expires:-1});}}return navigator.cookieEnabled;};}if(!dojo._hasResource["dijit.layout.BorderContainer"]){dojo._hasResource["dijit.layout.BorderContainer"]=true;dojo.provide("dijit.layout.BorderContainer");dojo.declare("dijit.layout.BorderContainer",dijit.layout._LayoutWidget,{design:"headline",gutters:true,liveSplitters:true,persist:false,baseClass:"dijitBorderContainer",_splitterClass:"dijit.layout._Splitter",postMixInProperties:function(){if(!this.gutters){this.baseClass+="NoGutter";}this.inherited(arguments);},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),this._setupChild,this);this.inherited(arguments);},_setupChild:function(_3ed){var _3ee=_3ed.region;if(_3ee){this.inherited(arguments);dojo.addClass(_3ed.domNode,this.baseClass+"Pane");var ltr=this.isLeftToRight();if(_3ee=="leading"){_3ee=ltr?"left":"right";}if(_3ee=="trailing"){_3ee=ltr?"right":"left";}if(_3ee!="center"&&(_3ed.splitter||this.gutters)&&!_3ed._splitterWidget){var _3ef=dojo.getObject(_3ed.splitter?this._splitterClass:"dijit.layout._Gutter");var _3f0=new _3ef({id:_3ed.id+"_splitter",container:this,child:_3ed,region:_3ee,live:this.liveSplitters});_3f0.isSplitter=true;_3ed._splitterWidget=_3f0;dojo.place(_3f0.domNode,_3ed.domNode,"after");_3f0.startup();}_3ed.region=_3ee;}},layout:function(){this._layoutChildren();},addChild:function(_3f1,_3f2){this.inherited(arguments);if(this._started){this.layout();}},removeChild:function(_3f3){var _3f4=_3f3.region;var _3f5=_3f3._splitterWidget;if(_3f5){_3f5.destroy();delete _3f3._splitterWidget;}this.inherited(arguments);if(this._started){this._layoutChildren();}dojo.removeClass(_3f3.domNode,this.baseClass+"Pane");dojo.style(_3f3.domNode,{top:"auto",bottom:"auto",left:"auto",right:"auto",position:"static"});dojo.style(_3f3.domNode,_3f4=="top"||_3f4=="bottom"?"width":"height","auto");},getChildren:function(){return dojo.filter(this.inherited(arguments),function(_3f6){return !_3f6.isSplitter;});},getSplitter:function(_3f7){return dojo.filter(this.getChildren(),function(_3f8){return _3f8.region==_3f7;})[0]._splitterWidget;},resize:function(_3f9,_3fa){if(!this.cs||!this.pe){var node=this.domNode;this.cs=dojo.getComputedStyle(node);this.pe=dojo._getPadExtents(node,this.cs);this.pe.r=dojo._toPixelValue(node,this.cs.paddingRight);this.pe.b=dojo._toPixelValue(node,this.cs.paddingBottom);dojo.style(node,"padding","0px");}this.inherited(arguments);},_layoutChildren:function(_3fb,_3fc){if(!this._borderBox||!this._borderBox.h){return;}var _3fd=dojo.map(this.getChildren(),function(_3fe,idx){return {pane:_3fe,weight:[_3fe.region=="center"?Infinity:0,_3fe.layoutPriority,(this.design=="sidebar"?1:-1)*(/top|bottom/.test(_3fe.region)?1:-1),idx]};},this);_3fd.sort(function(a,b){var aw=a.weight,bw=b.weight;for(var i=0;i<aw.length;i++){if(aw[i]!=bw[i]){return aw[i]-bw[i];}}return 0;});var _3ff=[];dojo.forEach(_3fd,function(_400){var pane=_400.pane;_3ff.push(pane);if(pane._splitterWidget){_3ff.push(pane._splitterWidget);}});var dim={l:this.pe.l,t:this.pe.t,w:this._borderBox.w-this.pe.w,h:this._borderBox.h-this.pe.h};dijit.layout.layoutChildren(this.domNode,dim,_3ff,_3fb,_3fc);},destroyRecursive:function(){dojo.forEach(this.getChildren(),function(_401){var _402=_401._splitterWidget;if(_402){_402.destroy();}delete _401._splitterWidget;});this.inherited(arguments);}});dojo.extend(dijit._Widget,{region:"",layoutPriority:0,splitter:false,minSize:0,maxSize:Infinity});dojo.declare("dijit.layout._Splitter",[dijit._Widget,dijit._Templated],{live:true,templateString:"<div class=\"dijitSplitter\" dojoAttachEvent=\"onkeypress:_onKeyPress,onmousedown:_startDrag,onmouseenter:_onMouse,onmouseleave:_onMouse\" tabIndex=\"0\" role=\"separator\"><div class=\"dijitSplitterThumb\"></div></div>",postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);this._factor=/top|left/.test(this.region)?1:-1;this._cookieName=this.container.id+"_"+this.region;},buildRendering:function(){this.inherited(arguments);dojo.addClass(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V"));if(this.container.persist){var _403=dojo.cookie(this._cookieName);if(_403){this.child.domNode.style[this.horizontal?"height":"width"]=_403;}}},_computeMaxSize:function(){var dim=this.horizontal?"h":"w",_404=dojo.marginBox(this.child.domNode)[dim],_405=dojo.filter(this.container.getChildren(),function(_406){return _406.region=="center";})[0],_407=dojo.marginBox(_405.domNode)[dim];return Math.min(this.child.maxSize,_404+_407);},_startDrag:function(e){if(!this.cover){this.cover=dojo.doc.createElement("div");dojo.addClass(this.cover,"dijitSplitterCover");dojo.place(this.cover,this.child.domNode,"after");}dojo.addClass(this.cover,"dijitSplitterCoverActive");if(this.fake){dojo.destroy(this.fake);}if(!(this._resize=this.live)){(this.fake=this.domNode.cloneNode(true)).removeAttribute("id");dojo.addClass(this.domNode,"dijitSplitterShadow");dojo.place(this.fake,this.domNode,"after");}dojo.addClass(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active");if(this.fake){dojo.removeClass(this.fake,"dijitSplitterHover dijitSplitter"+(this.horizontal?"H":"V")+"Hover");}var _408=this._factor,_409=this.horizontal,axis=_409?"pageY":"pageX",_40a=e[axis],_40b=this.domNode.style,dim=_409?"h":"w",_40c=dojo.marginBox(this.child.domNode)[dim],max=this._computeMaxSize(),min=this.child.minSize||20,_40d=this.region,_40e=_40d=="top"||_40d=="bottom"?"top":"left",_40f=parseInt(_40b[_40e],10),_410=this._resize,_411=dojo.hitch(this.container,"_layoutChildren",this.child.id),de=dojo.doc;this._handlers=(this._handlers||[]).concat([dojo.connect(de,"onmousemove",this._drag=function(e,_412){var _413=e[axis]-_40a,_414=_408*_413+_40c,_415=Math.max(Math.min(_414,max),min);if(_410||_412){_411(_415);}_40b[_40e]=_413+_40f+_408*(_415-_414)+"px";}),dojo.connect(de,"ondragstart",dojo.stopEvent),dojo.connect(dojo.body(),"onselectstart",dojo.stopEvent),dojo.connect(de,"onmouseup",this,"_stopDrag")]);dojo.stopEvent(e);},_onMouse:function(e){var o=(e.type=="mouseover"||e.type=="mouseenter");dojo.toggleClass(this.domNode,"dijitSplitterHover",o);dojo.toggleClass(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V")+"Hover",o);},_stopDrag:function(e){try{if(this.cover){dojo.removeClass(this.cover,"dijitSplitterCoverActive");}if(this.fake){dojo.destroy(this.fake);}dojo.removeClass(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active dijitSplitterShadow");this._drag(e);this._drag(e,true);}finally{this._cleanupHandlers();delete this._drag;}if(this.container.persist){dojo.cookie(this._cookieName,this.child.domNode.style[this.horizontal?"height":"width"],{expires:365});}},_cleanupHandlers:function(){dojo.forEach(this._handlers,dojo.disconnect);delete this._handlers;},_onKeyPress:function(e){this._resize=true;var _416=this.horizontal;var tick=1;var dk=dojo.keys;switch(e.charOrCode){case _416?dk.UP_ARROW:dk.LEFT_ARROW:tick*=-1;case _416?dk.DOWN_ARROW:dk.RIGHT_ARROW:break;default:return;}var _417=dojo._getMarginSize(this.child.domNode)[_416?"h":"w"]+this._factor*tick;this.container._layoutChildren(this.child.id,Math.max(Math.min(_417,this._computeMaxSize()),this.child.minSize));dojo.stopEvent(e);},destroy:function(){this._cleanupHandlers();delete this.child;delete this.container;delete this.cover;delete this.fake;this.inherited(arguments);}});dojo.declare("dijit.layout._Gutter",[dijit._Widget,dijit._Templated],{templateString:"<div class=\"dijitGutter\" role=\"presentation\"></div>",postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);},buildRendering:function(){this.inherited(arguments);dojo.addClass(this.domNode,"dijitGutter"+(this.horizontal?"H":"V"));}});}if(!dojo._hasResource["dijit.form.DropDownButton"]){dojo._hasResource["dijit.form.DropDownButton"]=true;dojo.provide("dijit.form.DropDownButton");}if(!dojo._hasResource["dijit.form.FilteringSelect"]){dojo._hasResource["dijit.form.FilteringSelect"]=true;dojo.provide("dijit.form.FilteringSelect");dojo.declare("dijit.form.FilteringSelect",[dijit.form.MappedTextBox,dijit.form.ComboBoxMixin],{required:true,_lastDisplayedValue:"",_isValidSubset:function(){return this._opened;},isValid:function(){return this.item||(!this.required&&this.get("displayedValue")=="");},_refreshState:function(){if(!this.searchTimer){this.inherited(arguments);}},_callbackSetLabel:function(_418,_419,_41a){if((_419&&_419.query[this.searchAttr]!=this._lastQuery)||(!_419&&_418.length&&this.store.getIdentity(_418[0])!=this._lastQuery)){return;}if(!_418.length){this.valueNode.value="";dijit.form.TextBox.superclass._setValueAttr.call(this,"",_41a||(_41a===undefined&&!this._focused));this._set("item",null);this.validate(this._focused);}else{this.set("item",_418[0],_41a);}},_openResultList:function(_41b,_41c){if(_41c.query[this.searchAttr]!=this._lastQuery){return;}dijit.form.ComboBoxMixin.prototype._openResultList.apply(this,arguments);if(this.item===undefined){this.validate(true);}},_getValueAttr:function(){return this.valueNode.value;},_getValueField:function(){return "value";},_setValueAttr:function(_41d,_41e){if(!this._onChangeActive){_41e=null;}this._lastQuery=_41d;if(_41d===null||_41d===""){this._setDisplayedValueAttr("",_41e);return;}var self=this;this.store.fetchItemByIdentity({identity:_41d,onItem:function(item){self._callbackSetLabel(item?[item]:[],undefined,_41e);}});},_setItemAttr:function(item,_41f,_420){this.inherited(arguments);this.valueNode.value=this.value;this._lastDisplayedValue=this.textbox.value;},_getDisplayQueryString:function(text){return text.replace(/([\\\*\?])/g,"\\$1");},_setDisplayedValueAttr:function(_421,_422){if(_421==null){_421="";}if(!this._created){if(!("displayedValue" in this.params)){return;}_422=false;}if(this.store){this.closeDropDown();var _423=dojo.clone(this.query);this._lastQuery=_423[this.searchAttr]=this._getDisplayQueryString(_421);this.textbox.value=_421;this._lastDisplayedValue=_421;this._set("displayedValue",_421);var _424=this;var _425={query:_423,queryOptions:{ignoreCase:this.ignoreCase,deep:true},onComplete:function(_426,_427){_424._fetchHandle=null;dojo.hitch(_424,"_callbackSetLabel")(_426,_427,_422);},onError:function(_428){_424._fetchHandle=null;console.error("dijit.form.FilteringSelect: "+_428);dojo.hitch(_424,"_callbackSetLabel")([],undefined,false);}};dojo.mixin(_425,this.fetchProperties);this._fetchHandle=this.store.fetch(_425);}},undo:function(){this.set("displayedValue",this._lastDisplayedValue);}});}if(!dojo._hasResource["dijit._KeyNavContainer"]){dojo._hasResource["dijit._KeyNavContainer"]=true;dojo.provide("dijit._KeyNavContainer");dojo.declare("dijit._KeyNavContainer",dijit._Container,{tabIndex:"0",_keyNavCodes:{},connectKeyNavHandlers:function(_429,_42a){var _42b=(this._keyNavCodes={});var prev=dojo.hitch(this,this.focusPrev);var next=dojo.hitch(this,this.focusNext);dojo.forEach(_429,function(code){_42b[code]=prev;});dojo.forEach(_42a,function(code){_42b[code]=next;});_42b[dojo.keys.HOME]=dojo.hitch(this,"focusFirstChild");_42b[dojo.keys.END]=dojo.hitch(this,"focusLastChild");this.connect(this.domNode,"onkeypress","_onContainerKeypress");this.connect(this.domNode,"onfocus","_onContainerFocus");},startupKeyNavChildren:function(){dojo.forEach(this.getChildren(),dojo.hitch(this,"_startupChild"));},addChild:function(_42c,_42d){dijit._KeyNavContainer.superclass.addChild.apply(this,arguments);this._startupChild(_42c);},focus:function(){this.focusFirstChild();},focusFirstChild:function(){var _42e=this._getFirstFocusableChild();if(_42e){this.focusChild(_42e);}},focusLastChild:function(){var _42f=this._getLastFocusableChild();if(_42f){this.focusChild(_42f);}},focusNext:function(){var _430=this._getNextFocusableChild(this.focusedChild,1);this.focusChild(_430);},focusPrev:function(){var _431=this._getNextFocusableChild(this.focusedChild,-1);this.focusChild(_431,true);},focusChild:function(_432,last){if(this.focusedChild&&_432!==this.focusedChild){this._onChildBlur(this.focusedChild);}_432.set("tabIndex",this.tabIndex);_432.focus(last?"end":"start");this._set("focusedChild",_432);},_startupChild:function(_433){_433.set("tabIndex","-1");this.connect(_433,"_onFocus",function(){_433.set("tabIndex",this.tabIndex);});this.connect(_433,"_onBlur",function(){_433.set("tabIndex","-1");});},_onContainerFocus:function(evt){if(evt.target!==this.domNode){return;}this.focusFirstChild();dojo.attr(this.domNode,"tabIndex","-1");},_onBlur:function(evt){if(this.tabIndex){dojo.attr(this.domNode,"tabIndex",this.tabIndex);}this.inherited(arguments);},_onContainerKeypress:function(evt){if(evt.ctrlKey||evt.altKey){return;}var func=this._keyNavCodes[evt.charOrCode];if(func){func();dojo.stopEvent(evt);}},_onChildBlur:function(_434){},_getFirstFocusableChild:function(){return this._getNextFocusableChild(null,1);},_getLastFocusableChild:function(){return this._getNextFocusableChild(null,-1);},_getNextFocusableChild:function(_435,dir){if(_435){_435=this._getSiblingOfChild(_435,dir);}var _436=this.getChildren();for(var i=0;i<_436.length;i++){if(!_435){_435=_436[(dir>0)?0:(_436.length-1)];}if(_435.isFocusable()){return _435;}_435=this._getSiblingOfChild(_435,dir);}return null;}});}if(!dojo._hasResource["dijit.MenuItem"]){dojo._hasResource["dijit.MenuItem"]=true;dojo.provide("dijit.MenuItem");dojo.declare("dijit.MenuItem",[dijit._Widget,dijit._Templated,dijit._Contained,dijit._CssStateMixin],{templateString:dojo.cache("dijit","templates/MenuItem.html","<tr class=\"dijitReset dijitMenuItem\" dojoAttachPoint=\"focusNode\" role=\"menuitem\" tabIndex=\"-1\"\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitIcon dijitMenuItemIcon\" dojoAttachPoint=\"iconNode\"/>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" dojoAttachPoint=\"containerNode\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" dojoAttachPoint=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\">\n\t\t<div dojoAttachPoint=\"arrowWrapper\" style=\"visibility: hidden\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitMenuExpand\"/>\n\t\t\t<span class=\"dijitMenuExpandA11y\">+</span>\n\t\t</div>\n\t</td>\n</tr>\n"),attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{label:{node:"containerNode",type:"innerHTML"},iconClass:{node:"iconNode",type:"class"}}),baseClass:"dijitMenuItem",label:"",iconClass:"",accelKey:"",disabled:false,_fillContent:function(_437){if(_437&&!("label" in this.params)){this.set("label",_437.innerHTML);}},buildRendering:function(){this.inherited(arguments);var _438=this.id+"_text";dojo.attr(this.containerNode,"id",_438);if(this.accelKeyNode){dojo.attr(this.accelKeyNode,"id",this.id+"_accel");_438+=" "+this.id+"_accel";}dijit.setWaiState(this.domNode,"labelledby",_438);dojo.setSelectable(this.domNode,false);},_onHover:function(){this.getParent().onItemHover(this);},_onUnhover:function(){this.getParent().onItemUnhover(this);this._set("hovering",false);},_onClick:function(evt){this.getParent().onItemClick(this,evt);dojo.stopEvent(evt);},onClick:function(evt){},focus:function(){try{if(dojo.isIE==8){this.containerNode.focus();}dijit.focus(this.focusNode);}catch(e){}},_onFocus:function(){this._setSelected(true);this.getParent()._onItemFocus(this);this.inherited(arguments);},_setSelected:function(_439){dojo.toggleClass(this.domNode,"dijitMenuItemSelected",_439);},setLabel:function(_43a){dojo.deprecated("dijit.MenuItem.setLabel() is deprecated.  Use set('label', ...) instead.","","2.0");this.set("label",_43a);},setDisabled:function(_43b){dojo.deprecated("dijit.Menu.setDisabled() is deprecated.  Use set('disabled', bool) instead.","","2.0");this.set("disabled",_43b);},_setDisabledAttr:function(_43c){dijit.setWaiState(this.focusNode,"disabled",_43c?"true":"false");this._set("disabled",_43c);},_setAccelKeyAttr:function(_43d){this.accelKeyNode.style.display=_43d?"":"none";this.accelKeyNode.innerHTML=_43d;dojo.attr(this.containerNode,"colSpan",_43d?"1":"2");this._set("accelKey",_43d);}});}if(!dojo._hasResource["dijit.PopupMenuItem"]){dojo._hasResource["dijit.PopupMenuItem"]=true;dojo.provide("dijit.PopupMenuItem");dojo.declare("dijit.PopupMenuItem",dijit.MenuItem,{_fillContent:function(){if(this.srcNodeRef){var _43e=dojo.query("*",this.srcNodeRef);dijit.PopupMenuItem.superclass._fillContent.call(this,_43e[0]);this.dropDownContainer=this.srcNodeRef;}},startup:function(){if(this._started){return;}this.inherited(arguments);if(!this.popup){var node=dojo.query("[widgetId]",this.dropDownContainer)[0];this.popup=dijit.byNode(node);}dojo.body().appendChild(this.popup.domNode);this.popup.startup();this.popup.domNode.style.display="none";if(this.arrowWrapper){dojo.style(this.arrowWrapper,"visibility","");}dijit.setWaiState(this.focusNode,"haspopup","true");},destroyDescendants:function(){if(this.popup){if(!this.popup._destroyed){this.popup.destroyRecursive();}delete this.popup;}this.inherited(arguments);}});}if(!dojo._hasResource["dijit.CheckedMenuItem"]){dojo._hasResource["dijit.CheckedMenuItem"]=true;dojo.provide("dijit.CheckedMenuItem");dojo.declare("dijit.CheckedMenuItem",dijit.MenuItem,{templateString:dojo.cache("dijit","templates/CheckedMenuItem.html","<tr class=\"dijitReset dijitMenuItem\" dojoAttachPoint=\"focusNode\" role=\"menuitemcheckbox\" tabIndex=\"-1\"\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitMenuItemIcon dijitCheckedMenuItemIcon\" dojoAttachPoint=\"iconNode\"/>\n\t\t<span class=\"dijitCheckedMenuItemIconChar\">&#10003;</span>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" dojoAttachPoint=\"containerNode,labelNode\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" dojoAttachPoint=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\">&nbsp;</td>\n</tr>\n"),checked:false,_setCheckedAttr:function(_43f){dojo.toggleClass(this.domNode,"dijitCheckedMenuItemChecked",_43f);dijit.setWaiState(this.domNode,"checked",_43f);this._set("checked",_43f);},onChange:function(_440){},_onClick:function(e){if(!this.disabled){this.set("checked",!this.checked);this.onChange(this.checked);}this.inherited(arguments);}});}if(!dojo._hasResource["dijit.MenuSeparator"]){dojo._hasResource["dijit.MenuSeparator"]=true;dojo.provide("dijit.MenuSeparator");dojo.declare("dijit.MenuSeparator",[dijit._Widget,dijit._Templated,dijit._Contained],{templateString:dojo.cache("dijit","templates/MenuSeparator.html","<tr class=\"dijitMenuSeparator\">\n\t<td class=\"dijitMenuSeparatorIconCell\">\n\t\t<div class=\"dijitMenuSeparatorTop\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n\t<td colspan=\"3\" class=\"dijitMenuSeparatorLabelCell\">\n\t\t<div class=\"dijitMenuSeparatorTop dijitMenuSeparatorLabel\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n</tr>\n"),buildRendering:function(){this.inherited(arguments);dojo.setSelectable(this.domNode,false);},isFocusable:function(){return false;}});}if(!dojo._hasResource["dijit.Menu"]){dojo._hasResource["dijit.Menu"]=true;dojo.provide("dijit.Menu");dojo.declare("dijit._MenuBase",[dijit._Widget,dijit._Templated,dijit._KeyNavContainer],{parentMenu:null,popupDelay:500,startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),function(_441){_441.startup();});this.startupKeyNavChildren();this.inherited(arguments);},onExecute:function(){},onCancel:function(_442){},_moveToPopup:function(evt){if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled){this.focusedChild._onClick(evt);}else{var _443=this._getTopMenu();if(_443&&_443._isMenuBar){_443.focusNext();}}},_onPopupHover:function(evt){if(this.currentPopup&&this.currentPopup._pendingClose_timer){var _444=this.currentPopup.parentMenu;if(_444.focusedChild){_444.focusedChild._setSelected(false);}_444.focusedChild=this.currentPopup.from_item;_444.focusedChild._setSelected(true);this._stopPendingCloseTimer(this.currentPopup);}},onItemHover:function(item){if(this.isActive){this.focusChild(item);if(this.focusedChild.popup&&!this.focusedChild.disabled&&!this.hover_timer){this.hover_timer=setTimeout(dojo.hitch(this,"_openPopup"),this.popupDelay);}}if(this.focusedChild){this.focusChild(item);}this._hoveredChild=item;},_onChildBlur:function(item){this._stopPopupTimer();item._setSelected(false);var _445=item.popup;if(_445){this._stopPendingCloseTimer(_445);_445._pendingClose_timer=setTimeout(function(){_445._pendingClose_timer=null;if(_445.parentMenu){_445.parentMenu.currentPopup=null;}dijit.popup.close(_445);},this.popupDelay);}},onItemUnhover:function(item){if(this.isActive){this._stopPopupTimer();}if(this._hoveredChild==item){this._hoveredChild=null;}},_stopPopupTimer:function(){if(this.hover_timer){clearTimeout(this.hover_timer);this.hover_timer=null;}},_stopPendingCloseTimer:function(_446){if(_446._pendingClose_timer){clearTimeout(_446._pendingClose_timer);_446._pendingClose_timer=null;}},_stopFocusTimer:function(){if(this._focus_timer){clearTimeout(this._focus_timer);this._focus_timer=null;}},_getTopMenu:function(){for(var top=this;top.parentMenu;top=top.parentMenu){}return top;},onItemClick:function(item,evt){if(typeof this.isShowingNow=="undefined"){this._markActive();}this.focusChild(item);if(item.disabled){return false;}if(item.popup){this._openPopup();}else{this.onExecute();item.onClick(evt);}},_openPopup:function(){this._stopPopupTimer();var _447=this.focusedChild;if(!_447){return;}var _448=_447.popup;if(_448.isShowingNow){return;}if(this.currentPopup){this._stopPendingCloseTimer(this.currentPopup);dijit.popup.close(this.currentPopup);}_448.parentMenu=this;_448.from_item=_447;var self=this;dijit.popup.open({parent:this,popup:_448,around:_447.domNode,orient:this._orient||(this.isLeftToRight()?{"TR":"TL","TL":"TR","BR":"BL","BL":"BR"}:{"TL":"TR","TR":"TL","BL":"BR","BR":"BL"}),onCancel:function(){self.focusChild(_447);self._cleanUp();_447._setSelected(true);self.focusedChild=_447;},onExecute:dojo.hitch(this,"_cleanUp")});this.currentPopup=_448;_448.connect(_448.domNode,"onmouseenter",dojo.hitch(self,"_onPopupHover"));if(_448.focus){_448._focus_timer=setTimeout(dojo.hitch(_448,function(){this._focus_timer=null;this.focus();}),0);}},_markActive:function(){this.isActive=true;dojo.replaceClass(this.domNode,"dijitMenuActive","dijitMenuPassive");},onOpen:function(e){this.isShowingNow=true;this._markActive();},_markInactive:function(){this.isActive=false;dojo.replaceClass(this.domNode,"dijitMenuPassive","dijitMenuActive");},onClose:function(){this._stopFocusTimer();this._markInactive();this.isShowingNow=false;this.parentMenu=null;},_closeChild:function(){this._stopPopupTimer();var _449=this.focusedChild&&this.focusedChild.from_item;if(this.currentPopup){if(dijit._curFocus&&dojo.isDescendant(dijit._curFocus,this.currentPopup.domNode)){this.focusedChild.focusNode.focus();}dijit.popup.close(this.currentPopup);this.currentPopup=null;}if(this.focusedChild){this.focusedChild._setSelected(false);this.focusedChild._onUnhover();this.focusedChild=null;}},_onItemFocus:function(item){if(this._hoveredChild&&this._hoveredChild!=item){this._hoveredChild._onUnhover();}},_onBlur:function(){this._cleanUp();this.inherited(arguments);},_cleanUp:function(){this._closeChild();if(typeof this.isShowingNow=="undefined"){this._markInactive();}}});dojo.declare("dijit.Menu",dijit._MenuBase,{constructor:function(){this._bindings=[];},templateString:dojo.cache("dijit","templates/Menu.html","<table class=\"dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable\" role=\"menu\" tabIndex=\"${tabIndex}\" dojoAttachEvent=\"onkeypress:_onKeyPress\" cellspacing=\"0\">\n\t<tbody class=\"dijitReset\" dojoAttachPoint=\"containerNode\"></tbody>\n</table>\n"),baseClass:"dijitMenu",targetNodeIds:[],contextMenuForWindow:false,leftClickToOpen:false,refocus:true,postCreate:function(){if(this.contextMenuForWindow){this.bindDomNode(dojo.body());}else{dojo.forEach(this.targetNodeIds,this.bindDomNode,this);}var k=dojo.keys,l=this.isLeftToRight();this._openSubMenuKey=l?k.RIGHT_ARROW:k.LEFT_ARROW;this._closeSubMenuKey=l?k.LEFT_ARROW:k.RIGHT_ARROW;this.connectKeyNavHandlers([k.UP_ARROW],[k.DOWN_ARROW]);},_onKeyPress:function(evt){if(evt.ctrlKey||evt.altKey){return;}switch(evt.charOrCode){case this._openSubMenuKey:this._moveToPopup(evt);dojo.stopEvent(evt);break;case this._closeSubMenuKey:if(this.parentMenu){if(this.parentMenu._isMenuBar){this.parentMenu.focusPrev();}else{this.onCancel(false);}}else{dojo.stopEvent(evt);}break;}},_iframeContentWindow:function(_44a){var win=dojo.window.get(this._iframeContentDocument(_44a))||this._iframeContentDocument(_44a)["__parent__"]||(_44a.name&&dojo.doc.frames[_44a.name])||null;return win;},_iframeContentDocument:function(_44b){var doc=_44b.contentDocument||(_44b.contentWindow&&_44b.contentWindow.document)||(_44b.name&&dojo.doc.frames[_44b.name]&&dojo.doc.frames[_44b.name].document)||null;return doc;},bindDomNode:function(node){node=dojo.byId(node);var cn;if(node.tagName.toLowerCase()=="iframe"){var _44c=node,win=this._iframeContentWindow(_44c);cn=dojo.withGlobal(win,dojo.body);}else{cn=(node==dojo.body()?dojo.doc.documentElement:node);}var _44d={node:node,iframe:_44c};dojo.attr(node,"_dijitMenu"+this.id,this._bindings.push(_44d));var _44e=dojo.hitch(this,function(cn){return [dojo.connect(cn,this.leftClickToOpen?"onclick":"oncontextmenu",this,function(evt){dojo.stopEvent(evt);this._scheduleOpen(evt.target,_44c,{x:evt.pageX,y:evt.pageY});}),dojo.connect(cn,"onkeydown",this,function(evt){if(evt.shiftKey&&evt.keyCode==dojo.keys.F10){dojo.stopEvent(evt);this._scheduleOpen(evt.target,_44c);}})];});_44d.connects=cn?_44e(cn):[];if(_44c){_44d.onloadHandler=dojo.hitch(this,function(){var win=this._iframeContentWindow(_44c);cn=dojo.withGlobal(win,dojo.body);_44d.connects=_44e(cn);});if(_44c.addEventListener){_44c.addEventListener("load",_44d.onloadHandler,false);}else{_44c.attachEvent("onload",_44d.onloadHandler);}}},unBindDomNode:function(_44f){var node;try{node=dojo.byId(_44f);}catch(e){return;}var _450="_dijitMenu"+this.id;if(node&&dojo.hasAttr(node,_450)){var bid=dojo.attr(node,_450)-1,b=this._bindings[bid];dojo.forEach(b.connects,dojo.disconnect);var _451=b.iframe;if(_451){if(_451.removeEventListener){_451.removeEventListener("load",b.onloadHandler,false);}else{_451.detachEvent("onload",b.onloadHandler);}}dojo.removeAttr(node,_450);delete this._bindings[bid];}},_scheduleOpen:function(_452,_453,_454){if(!this._openTimer){this._openTimer=setTimeout(dojo.hitch(this,function(){delete this._openTimer;this._openMyself({target:_452,iframe:_453,coords:_454});}),1);}},_openMyself:function(args){var _455=args.target,_456=args.iframe,_457=args.coords;if(_457){if(_456){var od=_455.ownerDocument,ifc=dojo.position(_456,true),win=this._iframeContentWindow(_456),_458=dojo.withGlobal(win,"_docScroll",dojo);var cs=dojo.getComputedStyle(_456),tp=dojo._toPixelValue,left=(dojo.isIE&&dojo.isQuirks?0:tp(_456,cs.paddingLeft))+(dojo.isIE&&dojo.isQuirks?tp(_456,cs.borderLeftWidth):0),top=(dojo.isIE&&dojo.isQuirks?0:tp(_456,cs.paddingTop))+(dojo.isIE&&dojo.isQuirks?tp(_456,cs.borderTopWidth):0);_457.x+=ifc.x+left-_458.x;_457.y+=ifc.y+top-_458.y;}}else{_457=dojo.position(_455,true);_457.x+=10;_457.y+=10;}var self=this;var _459=dijit.getFocus(this);function _45a(){if(self.refocus){dijit.focus(_459);}dijit.popup.close(self);};dijit.popup.open({popup:this,x:_457.x,y:_457.y,onExecute:_45a,onCancel:_45a,orient:this.isLeftToRight()?"L":"R"});this.focus();this._onBlur=function(){this.inherited("_onBlur",arguments);dijit.popup.close(this);};},uninitialize:function(){dojo.forEach(this._bindings,function(b){if(b){this.unBindDomNode(b.node);}},this);this.inherited(arguments);}});}if(!dojo._hasResource["dojo.number"]){dojo._hasResource["dojo.number"]=true;dojo.provide("dojo.number");dojo.getObject("number",true,dojo);dojo.number.format=function(_45b,_45c){_45c=dojo.mixin({},_45c||{});var _45d=dojo.i18n.normalizeLocale(_45c.locale),_45e=dojo.i18n.getLocalization("dojo.cldr","number",_45d);_45c.customs=_45e;var _45f=_45c.pattern||_45e[(_45c.type||"decimal")+"Format"];if(isNaN(_45b)||Math.abs(_45b)==Infinity){return null;}return dojo.number._applyPattern(_45b,_45f,_45c);};dojo.number._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;dojo.number._applyPattern=function(_460,_461,_462){_462=_462||{};var _463=_462.customs.group,_464=_462.customs.decimal,_465=_461.split(";"),_466=_465[0];_461=_465[(_460<0)?1:0]||("-"+_466);if(_461.indexOf("%")!=-1){_460*=100;}else{if(_461.indexOf("‰")!=-1){_460*=1000;}else{if(_461.indexOf("¤")!=-1){_463=_462.customs.currencyGroup||_463;_464=_462.customs.currencyDecimal||_464;_461=_461.replace(/\u00a4{1,3}/,function(_467){var prop=["symbol","currency","displayName"][_467.length-1];return _462[prop]||_462.currency||"";});}else{if(_461.indexOf("E")!=-1){throw new Error("exponential notation not supported");}}}}var _468=dojo.number._numberPatternRE;var _469=_466.match(_468);if(!_469){throw new Error("unable to find a number expression in pattern: "+_461);}if(_462.fractional===false){_462.places=0;}return _461.replace(_468,dojo.number._formatAbsolute(_460,_469[0],{decimal:_464,group:_463,places:_462.places,round:_462.round}));};dojo.number.round=function(_46a,_46b,_46c){var _46d=10/(_46c||10);return (_46d*+_46a).toFixed(_46b)/_46d;};if((0.9).toFixed()==0){(function(){var _46e=dojo.number.round;dojo.number.round=function(v,p,m){var d=Math.pow(10,-p||0),a=Math.abs(v);if(!v||a>=d||a*Math.pow(10,p+1)<5){d=0;}return _46e(v,p,m)+(v>0?d:-d);};})();}dojo.number._formatAbsolute=function(_46f,_470,_471){_471=_471||{};if(_471.places===true){_471.places=0;}if(_471.places===Infinity){_471.places=6;}var _472=_470.split("."),_473=typeof _471.places=="string"&&_471.places.indexOf(","),_474=_471.places;if(_473){_474=_471.places.substring(_473+1);}else{if(!(_474>=0)){_474=(_472[1]||[]).length;}}if(!(_471.round<0)){_46f=dojo.number.round(_46f,_474,_471.round);}var _475=String(Math.abs(_46f)).split("."),_476=_475[1]||"";if(_472[1]||_471.places){if(_473){_471.places=_471.places.substring(0,_473);}var pad=_471.places!==undefined?_471.places:(_472[1]&&_472[1].lastIndexOf("0")+1);if(pad>_476.length){_475[1]=dojo.string.pad(_476,pad,"0",true);}if(_474<_476.length){_475[1]=_476.substr(0,_474);}}else{if(_475[1]){_475.pop();}}var _477=_472[0].replace(",","");pad=_477.indexOf("0");if(pad!=-1){pad=_477.length-pad;if(pad>_475[0].length){_475[0]=dojo.string.pad(_475[0],pad);}if(_477.indexOf("#")==-1){_475[0]=_475[0].substr(_475[0].length-pad);}}var _478=_472[0].lastIndexOf(","),_479,_47a;if(_478!=-1){_479=_472[0].length-_478-1;var _47b=_472[0].substr(0,_478);_478=_47b.lastIndexOf(",");if(_478!=-1){_47a=_47b.length-_478-1;}}var _47c=[];for(var _47d=_475[0];_47d;){var off=_47d.length-_479;_47c.push((off>0)?_47d.substr(off):_47d);_47d=(off>0)?_47d.slice(0,off):"";if(_47a){_479=_47a;delete _47a;}}_475[0]=_47c.reverse().join(_471.group||",");return _475.join(_471.decimal||".");};dojo.number.regexp=function(_47e){return dojo.number._parseInfo(_47e).regexp;};dojo.number._parseInfo=function(_47f){_47f=_47f||{};var _480=dojo.i18n.normalizeLocale(_47f.locale),_481=dojo.i18n.getLocalization("dojo.cldr","number",_480),_482=_47f.pattern||_481[(_47f.type||"decimal")+"Format"],_483=_481.group,_484=_481.decimal,_485=1;if(_482.indexOf("%")!=-1){_485/=100;}else{if(_482.indexOf("‰")!=-1){_485/=1000;}else{var _486=_482.indexOf("¤")!=-1;if(_486){_483=_481.currencyGroup||_483;_484=_481.currencyDecimal||_484;}}}var _487=_482.split(";");if(_487.length==1){_487.push("-"+_487[0]);}var re=dojo.regexp.buildGroupRE(_487,function(_488){_488="(?:"+dojo.regexp.escapeString(_488,".")+")";return _488.replace(dojo.number._numberPatternRE,function(_489){var _48a={signed:false,separator:_47f.strict?_483:[_483,""],fractional:_47f.fractional,decimal:_484,exponent:false},_48b=_489.split("."),_48c=_47f.places;if(_48b.length==1&&_485!=1){_48b[1]="###";}if(_48b.length==1||_48c===0){_48a.fractional=false;}else{if(_48c===undefined){_48c=_47f.pattern?_48b[1].lastIndexOf("0")+1:Infinity;}if(_48c&&_47f.fractional==undefined){_48a.fractional=true;}if(!_47f.places&&(_48c<_48b[1].length)){_48c+=","+_48b[1].length;}_48a.places=_48c;}var _48d=_48b[0].split(",");if(_48d.length>1){_48a.groupSize=_48d.pop().length;if(_48d.length>1){_48a.groupSize2=_48d.pop().length;}}return "("+dojo.number._realNumberRegexp(_48a)+")";});},true);if(_486){re=re.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g,function(_48e,_48f,_490,_491){var prop=["symbol","currency","displayName"][_490.length-1],_492=dojo.regexp.escapeString(_47f[prop]||_47f.currency||"");_48f=_48f?"[\\s\\xa0]":"";_491=_491?"[\\s\\xa0]":"";if(!_47f.strict){if(_48f){_48f+="*";}if(_491){_491+="*";}return "(?:"+_48f+_492+_491+")?";}return _48f+_492+_491;});}return {regexp:re.replace(/[\xa0 ]/g,"[\\s\\xa0]"),group:_483,decimal:_484,factor:_485};};dojo.number.parse=function(_493,_494){var info=dojo.number._parseInfo(_494),_495=(new RegExp("^"+info.regexp+"$")).exec(_493);if(!_495){return NaN;}var _496=_495[1];if(!_495[1]){if(!_495[2]){return NaN;}_496=_495[2];info.factor*=-1;}_496=_496.replace(new RegExp("["+info.group+"\\s\\xa0"+"]","g"),"").replace(info.decimal,".");return _496*info.factor;};dojo.number._realNumberRegexp=function(_497){_497=_497||{};if(!("places" in _497)){_497.places=Infinity;}if(typeof _497.decimal!="string"){_497.decimal=".";}if(!("fractional" in _497)||/^0/.test(_497.places)){_497.fractional=[true,false];}if(!("exponent" in _497)){_497.exponent=[true,false];}if(!("eSigned" in _497)){_497.eSigned=[true,false];}var _498=dojo.number._integerRegexp(_497),_499=dojo.regexp.buildGroupRE(_497.fractional,function(q){var re="";if(q&&(_497.places!==0)){re="\\"+_497.decimal;if(_497.places==Infinity){re="(?:"+re+"\\d+)?";}else{re+="\\d{"+_497.places+"}";}}return re;},true);var _49a=dojo.regexp.buildGroupRE(_497.exponent,function(q){if(q){return "([eE]"+dojo.number._integerRegexp({signed:_497.eSigned})+")";}return "";});var _49b=_498+_499;if(_499){_49b="(?:(?:"+_49b+")|(?:"+_499+"))";}return _49b+_49a;};dojo.number._integerRegexp=function(_49c){_49c=_49c||{};if(!("signed" in _49c)){_49c.signed=[true,false];}if(!("separator" in _49c)){_49c.separator="";}else{if(!("groupSize" in _49c)){_49c.groupSize=3;}}var _49d=dojo.regexp.buildGroupRE(_49c.signed,function(q){return q?"[-+]":"";},true);var _49e=dojo.regexp.buildGroupRE(_49c.separator,function(sep){if(!sep){return "(?:\\d+)";}sep=dojo.regexp.escapeString(sep);if(sep==" "){sep="\\s";}else{if(sep==" "){sep="\\s\\xa0";}}var grp=_49c.groupSize,grp2=_49c.groupSize2;if(grp2){var _49f="(?:0|[1-9]\\d{0,"+(grp2-1)+"}(?:["+sep+"]\\d{"+grp2+"})*["+sep+"]\\d{"+grp+"})";return ((grp-grp2)>0)?"(?:"+_49f+"|(?:0|[1-9]\\d{0,"+(grp-1)+"}))":_49f;}return "(?:0|[1-9]\\d{0,"+(grp-1)+"}(?:["+sep+"]\\d{"+grp+"})*)";},true);return _49d+_49e;};}if(!dojo._hasResource["dijit.ProgressBar"]){dojo._hasResource["dijit.ProgressBar"]=true;dojo.provide("dijit.ProgressBar");dojo.declare("dijit.ProgressBar",[dijit._Widget,dijit._Templated],{progress:"0",value:"",maximum:100,places:0,indeterminate:false,label:"",name:"",templateString:dojo.cache("dijit","templates/ProgressBar.html","<div class=\"dijitProgressBar dijitProgressBarEmpty\" role=\"progressbar\"\n\t><div  dojoAttachPoint=\"internalProgress\" class=\"dijitProgressBarFull\"\n\t\t><div class=\"dijitProgressBarTile\" role=\"presentation\"></div\n\t\t><span style=\"visibility:hidden\">&nbsp;</span\n\t></div\n\t><div dojoAttachPoint=\"labelNode\" class=\"dijitProgressBarLabel\" id=\"${id}_label\"></div\n\t><img dojoAttachPoint=\"indeterminateHighContrastImage\" class=\"dijitProgressBarIndeterminateHighContrastImage\" alt=\"\"\n/></div>\n"),_indeterminateHighContrastImagePath:dojo.moduleUrl("dijit","themes/a11y/indeterminate_progress.gif"),postMixInProperties:function(){this.inherited(arguments);if(!("value" in this.params)){this.value=this.indeterminate?Infinity:this.progress;}},buildRendering:function(){this.inherited(arguments);this.indeterminateHighContrastImage.setAttribute("src",this._indeterminateHighContrastImagePath.toString());this.update();},update:function(_4a0){dojo.mixin(this,_4a0||{});var tip=this.internalProgress,ap=this.domNode;var _4a1=1;if(this.indeterminate){dijit.removeWaiState(ap,"valuenow");dijit.removeWaiState(ap,"valuemin");dijit.removeWaiState(ap,"valuemax");}else{if(String(this.progress).indexOf("%")!=-1){_4a1=Math.min(parseFloat(this.progress)/100,1);this.progress=_4a1*this.maximum;}else{this.progress=Math.min(this.progress,this.maximum);_4a1=this.progress/this.maximum;}dijit.setWaiState(ap,"describedby",this.labelNode.id);dijit.setWaiState(ap,"valuenow",this.progress);dijit.setWaiState(ap,"valuemin",0);dijit.setWaiState(ap,"valuemax",this.maximum);}this.labelNode.innerHTML=this.report(_4a1);dojo.toggleClass(this.domNode,"dijitProgressBarIndeterminate",this.indeterminate);tip.style.width=(_4a1*100)+"%";this.onChange();},_setValueAttr:function(v){this._set("value",v);if(v==Infinity){this.update({indeterminate:true});}else{this.update({indeterminate:false,progress:v});}},_setLabelAttr:function(_4a2){this._set("label",_4a2);this.update();},_setIndeterminateAttr:function(_4a3){this.indeterminate=_4a3;this.update();},report:function(_4a4){return this.label?this.label:(this.indeterminate?"&nbsp;":dojo.number.format(_4a4,{type:"percent",places:this.places,locale:this.lang}));},onChange:function(){}});}if(!dojo._hasResource["dijit.TitlePane"]){dojo._hasResource["dijit.TitlePane"]=true;dojo.provide("dijit.TitlePane");dojo.declare("dijit.TitlePane",[dijit.layout.ContentPane,dijit._Templated,dijit._CssStateMixin],{title:"",open:true,toggleable:true,tabIndex:"0",duration:dijit.defaultDuration,baseClass:"dijitTitlePane",templateString:dojo.cache("dijit","templates/TitlePane.html","<div>\n\t<div dojoAttachEvent=\"onclick:_onTitleClick, onkeypress:_onTitleKey\"\n\t\t\tclass=\"dijitTitlePaneTitle\" dojoAttachPoint=\"titleBarNode\">\n\t\t<div class=\"dijitTitlePaneTitleFocus\" dojoAttachPoint=\"focusNode\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"arrowNode\" class=\"dijitArrowNode\" role=\"presentation\"\n\t\t\t/><span dojoAttachPoint=\"arrowNodeInner\" class=\"dijitArrowNodeInner\"></span\n\t\t\t><span dojoAttachPoint=\"titleNode\" class=\"dijitTitlePaneTextNode\"></span>\n\t\t</div>\n\t</div>\n\t<div class=\"dijitTitlePaneContentOuter\" dojoAttachPoint=\"hideNode\" role=\"presentation\">\n\t\t<div class=\"dijitReset\" dojoAttachPoint=\"wipeNode\" role=\"presentation\">\n\t\t\t<div class=\"dijitTitlePaneContentInner\" dojoAttachPoint=\"containerNode\" role=\"region\" id=\"${id}_pane\">\n\t\t\t\t<!-- nested divs because wipeIn()/wipeOut() doesn't work right on node w/padding etc.  Put padding on inner div. -->\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n"),attributeMap:dojo.delegate(dijit.layout.ContentPane.prototype.attributeMap,{title:{node:"titleNode",type:"innerHTML"},tooltip:{node:"focusNode",type:"attribute",attribute:"title"},id:""}),buildRendering:function(){this.inherited(arguments);dojo.setSelectable(this.titleNode,false);},postCreate:function(){this.inherited(arguments);if(this.toggleable){this._trackMouseState(this.titleBarNode,"dijitTitlePaneTitle");}var _4a5=this.hideNode,_4a6=this.wipeNode;this._wipeIn=dojo.fx.wipeIn({node:this.wipeNode,duration:this.duration,beforeBegin:function(){_4a5.style.display="";}});this._wipeOut=dojo.fx.wipeOut({node:this.wipeNode,duration:this.duration,onEnd:function(){_4a5.style.display="none";}});},_setOpenAttr:function(open,_4a7){dojo.forEach([this._wipeIn,this._wipeOut],function(_4a8){if(_4a8&&_4a8.status()=="playing"){_4a8.stop();}});if(_4a7){var anim=this[open?"_wipeIn":"_wipeOut"];anim.play();}else{this.hideNode.style.display=this.wipeNode.style.display=open?"":"none";}if(this._started){if(open){this._onShow();}else{this.onHide();}}this.arrowNodeInner.innerHTML=open?"-":"+";dijit.setWaiState(this.containerNode,"hidden",open?"false":"true");dijit.setWaiState(this.focusNode,"pressed",open?"true":"false");this._set("open",open);this._setCss();},_setToggleableAttr:function(_4a9){dijit.setWaiRole(this.focusNode,_4a9?"button":"heading");if(_4a9){dijit.setWaiState(this.focusNode,"controls",this.id+"_pane");dojo.attr(this.focusNode,"tabIndex",this.tabIndex);}else{dojo.removeAttr(this.focusNode,"tabIndex");}this._set("toggleable",_4a9);this._setCss();},_setContentAttr:function(_4aa){if(!this.open||!this._wipeOut||this._wipeOut.status()=="playing"){this.inherited(arguments);}else{if(this._wipeIn&&this._wipeIn.status()=="playing"){this._wipeIn.stop();}dojo.marginBox(this.wipeNode,{h:dojo.marginBox(this.wipeNode).h});this.inherited(arguments);if(this._wipeIn){this._wipeIn.play();}else{this.hideNode.style.display="";}}},toggle:function(){this._setOpenAttr(!this.open,true);},_setCss:function(){var node=this.titleBarNode||this.focusNode;var _4ab=this._titleBarClass;this._titleBarClass="dijit"+(this.toggleable?"":"Fixed")+(this.open?"Open":"Closed");dojo.replaceClass(node,this._titleBarClass,_4ab||"");this.arrowNodeInner.innerHTML=this.open?"-":"+";},_onTitleKey:function(e){if(e.charOrCode==dojo.keys.ENTER||e.charOrCode==" "){if(this.toggleable){this.toggle();}dojo.stopEvent(e);}else{if(e.charOrCode==dojo.keys.DOWN_ARROW&&this.open){this.containerNode.focus();e.preventDefault();}}},_onTitleClick:function(){if(this.toggleable){this.toggle();}},setTitle:function(_4ac){dojo.deprecated("dijit.TitlePane.setTitle() is deprecated.  Use set('title', ...) instead.","","2.0");this.set("title",_4ac);}});}if(!dojo._hasResource["dojo.DeferredList"]){dojo._hasResource["dojo.DeferredList"]=true;dojo.provide("dojo.DeferredList");dojo.DeferredList=function(list,_4ad,_4ae,_4af,_4b0){var _4b1=[];dojo.Deferred.call(this);var self=this;if(list.length===0&&!_4ad){this.resolve([0,[]]);}var _4b2=0;dojo.forEach(list,function(item,i){item.then(function(_4b3){if(_4ad){self.resolve([i,_4b3]);}else{_4b4(true,_4b3);}},function(_4b5){if(_4ae){self.reject(_4b5);}else{_4b4(false,_4b5);}if(_4af){return null;}throw _4b5;});function _4b4(_4b6,_4b7){_4b1[i]=[_4b6,_4b7];_4b2++;if(_4b2===list.length){self.resolve(_4b1);}};});};dojo.DeferredList.prototype=new dojo.Deferred();dojo.DeferredList.prototype.gatherResults=function(_4b8){var d=new dojo.DeferredList(_4b8,false,true,false);d.addCallback(function(_4b9){var ret=[];dojo.forEach(_4b9,function(_4ba){ret.push(_4ba[1]);});return ret;});return d;};}if(!dojo._hasResource["dijit.tree.TreeStoreModel"]){dojo._hasResource["dijit.tree.TreeStoreModel"]=true;dojo.provide("dijit.tree.TreeStoreModel");dojo.declare("dijit.tree.TreeStoreModel",null,{store:null,childrenAttrs:["children"],newItemIdAttr:"id",labelAttr:"",root:null,query:null,deferItemLoadingUntilExpand:false,constructor:function(args){dojo.mixin(this,args);this.connects=[];var _4bb=this.store;if(!_4bb.getFeatures()["dojo.data.api.Identity"]){throw new Error("dijit.Tree: store must support dojo.data.Identity");}if(_4bb.getFeatures()["dojo.data.api.Notification"]){this.connects=this.connects.concat([dojo.connect(_4bb,"onNew",this,"onNewItem"),dojo.connect(_4bb,"onDelete",this,"onDeleteItem"),dojo.connect(_4bb,"onSet",this,"onSetItem")]);}},destroy:function(){dojo.forEach(this.connects,dojo.disconnect);},getRoot:function(_4bc,_4bd){if(this.root){_4bc(this.root);}else{this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_4be){if(_4be.length!=1){throw new Error(this.declaredClass+": query "+dojo.toJson(this.query)+" returned "+_4be.length+" items, but must return exactly one item");}this.root=_4be[0];_4bc(this.root);}),onError:_4bd});}},mayHaveChildren:function(item){return dojo.some(this.childrenAttrs,function(attr){return this.store.hasAttribute(item,attr);},this);},getChildren:function(_4bf,_4c0,_4c1){var _4c2=this.store;if(!_4c2.isItemLoaded(_4bf)){var _4c3=dojo.hitch(this,arguments.callee);_4c2.loadItem({item:_4bf,onItem:function(_4c4){_4c3(_4c4,_4c0,_4c1);},onError:_4c1});return;}var _4c5=[];for(var i=0;i<this.childrenAttrs.length;i++){var vals=_4c2.getValues(_4bf,this.childrenAttrs[i]);_4c5=_4c5.concat(vals);}var _4c6=0;if(!this.deferItemLoadingUntilExpand){dojo.forEach(_4c5,function(item){if(!_4c2.isItemLoaded(item)){_4c6++;}});}if(_4c6==0){_4c0(_4c5);}else{dojo.forEach(_4c5,function(item,idx){if(!_4c2.isItemLoaded(item)){_4c2.loadItem({item:item,onItem:function(item){_4c5[idx]=item;if(--_4c6==0){_4c0(_4c5);}},onError:_4c1});}});}},isItem:function(_4c7){return this.store.isItem(_4c7);},fetchItemByIdentity:function(_4c8){this.store.fetchItemByIdentity(_4c8);},getIdentity:function(item){return this.store.getIdentity(item);},getLabel:function(item){if(this.labelAttr){return this.store.getValue(item,this.labelAttr);}else{return this.store.getLabel(item);}},newItem:function(args,_4c9,_4ca){var _4cb={parent:_4c9,attribute:this.childrenAttrs[0]},_4cc;if(this.newItemIdAttr&&args[this.newItemIdAttr]){this.fetchItemByIdentity({identity:args[this.newItemIdAttr],scope:this,onItem:function(item){if(item){this.pasteItem(item,null,_4c9,true,_4ca);}else{_4cc=this.store.newItem(args,_4cb);if(_4cc&&(_4ca!=undefined)){this.pasteItem(_4cc,_4c9,_4c9,false,_4ca);}}}});}else{_4cc=this.store.newItem(args,_4cb);if(_4cc&&(_4ca!=undefined)){this.pasteItem(_4cc,_4c9,_4c9,false,_4ca);}}},pasteItem:function(_4cd,_4ce,_4cf,_4d0,_4d1){var _4d2=this.store,_4d3=this.childrenAttrs[0];if(_4ce){dojo.forEach(this.childrenAttrs,function(attr){if(_4d2.containsValue(_4ce,attr,_4cd)){if(!_4d0){var _4d4=dojo.filter(_4d2.getValues(_4ce,attr),function(x){return x!=_4cd;});_4d2.setValues(_4ce,attr,_4d4);}_4d3=attr;}});}if(_4cf){if(typeof _4d1=="number"){var _4d5=_4d2.getValues(_4cf,_4d3).slice();_4d5.splice(_4d1,0,_4cd);_4d2.setValues(_4cf,_4d3,_4d5);}else{_4d2.setValues(_4cf,_4d3,_4d2.getValues(_4cf,_4d3).concat(_4cd));}}},onChange:function(item){},onChildrenChange:function(_4d6,_4d7){},onDelete:function(_4d8,_4d9){},onNewItem:function(item,_4da){if(!_4da){return;}this.getChildren(_4da.item,dojo.hitch(this,function(_4db){this.onChildrenChange(_4da.item,_4db);}));},onDeleteItem:function(item){this.onDelete(item);},onSetItem:function(item,_4dc,_4dd,_4de){if(dojo.indexOf(this.childrenAttrs,_4dc)!=-1){this.getChildren(item,dojo.hitch(this,function(_4df){this.onChildrenChange(item,_4df);}));}else{this.onChange(item);}}});}if(!dojo._hasResource["dijit.tree.ForestStoreModel"]){dojo._hasResource["dijit.tree.ForestStoreModel"]=true;dojo.provide("dijit.tree.ForestStoreModel");dojo.declare("dijit.tree.ForestStoreModel",dijit.tree.TreeStoreModel,{rootId:"$root$",rootLabel:"ROOT",query:null,constructor:function(_4e0){this.root={store:this,root:true,id:_4e0.rootId,label:_4e0.rootLabel,children:_4e0.rootChildren};},mayHaveChildren:function(item){return item===this.root||this.inherited(arguments);},getChildren:function(_4e1,_4e2,_4e3){if(_4e1===this.root){if(this.root.children){_4e2(this.root.children);}else{this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_4e4){this.root.children=_4e4;_4e2(_4e4);}),onError:_4e3});}}else{this.inherited(arguments);}},isItem:function(_4e5){return (_4e5===this.root)?true:this.inherited(arguments);},fetchItemByIdentity:function(_4e6){if(_4e6.identity==this.root.id){var _4e7=_4e6.scope?_4e6.scope:dojo.global;if(_4e6.onItem){_4e6.onItem.call(_4e7,this.root);}}else{this.inherited(arguments);}},getIdentity:function(item){return (item===this.root)?this.root.id:this.inherited(arguments);},getLabel:function(item){return (item===this.root)?this.root.label:this.inherited(arguments);},newItem:function(args,_4e8,_4e9){if(_4e8===this.root){this.onNewRootItem(args);return this.store.newItem(args);}else{return this.inherited(arguments);}},onNewRootItem:function(args){},pasteItem:function(_4ea,_4eb,_4ec,_4ed,_4ee){if(_4eb===this.root){if(!_4ed){this.onLeaveRoot(_4ea);}}dijit.tree.TreeStoreModel.prototype.pasteItem.call(this,_4ea,_4eb===this.root?null:_4eb,_4ec===this.root?null:_4ec,_4ed,_4ee);if(_4ec===this.root){this.onAddToRoot(_4ea);}},onAddToRoot:function(item){console.log(this,": item ",item," added to root");},onLeaveRoot:function(item){console.log(this,": item ",item," removed from root");},_requeryTop:function(){var _4ef=this.root.children||[];this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_4f0){this.root.children=_4f0;if(_4ef.length!=_4f0.length||dojo.some(_4ef,function(item,idx){return _4f0[idx]!=item;})){this.onChildrenChange(this.root,_4f0);}})});},onNewItem:function(item,_4f1){this._requeryTop();this.inherited(arguments);},onDeleteItem:function(item){if(dojo.indexOf(this.root.children,item)!=-1){this._requeryTop();}this.inherited(arguments);},onSetItem:function(item,_4f2,_4f3,_4f4){this._requeryTop();this.inherited(arguments);}});}if(!dojo._hasResource["dojo.dnd.Container"]){dojo._hasResource["dojo.dnd.Container"]=true;dojo.provide("dojo.dnd.Container");dojo.declare("dojo.dnd.Container",null,{skipForm:false,constructor:function(node,_4f5){this.node=dojo.byId(node);if(!_4f5){_4f5={};}this.creator=_4f5.creator||null;this.skipForm=_4f5.skipForm;this.parent=_4f5.dropParent&&dojo.byId(_4f5.dropParent);this.map={};this.current=null;this.containerState="";dojo.addClass(this.node,"dojoDndContainer");if(!(_4f5&&_4f5._skipStartup)){this.startup();}this.events=[dojo.connect(this.node,"onmouseover",this,"onMouseOver"),dojo.connect(this.node,"onmouseout",this,"onMouseOut"),dojo.connect(this.node,"ondragstart",this,"onSelectStart"),dojo.connect(this.node,"onselectstart",this,"onSelectStart")];},creator:function(){},getItem:function(key){return this.map[key];},setItem:function(key,data){this.map[key]=data;},delItem:function(key){delete this.map[key];},forInItems:function(f,o){o=o||dojo.global;var m=this.map,e=dojo.dnd._empty;for(var i in m){if(i in e){continue;}f.call(o,m[i],i,this);}return o;},clearItems:function(){this.map={};},getAllNodes:function(){return dojo.query("> .dojoDndItem",this.parent);},sync:function(){var map={};this.getAllNodes().forEach(function(node){if(node.id){var item=this.getItem(node.id);if(item){map[node.id]=item;return;}}else{node.id=dojo.dnd.getUniqueId();}var type=node.getAttribute("dndType"),data=node.getAttribute("dndData");map[node.id]={data:data||node.innerHTML,type:type?type.split(/\s*,\s*/):["text"]};},this);this.map=map;return this;},insertNodes:function(data,_4f6,_4f7){if(!this.parent.firstChild){_4f7=null;}else{if(_4f6){if(!_4f7){_4f7=this.parent.firstChild;}}else{if(_4f7){_4f7=_4f7.nextSibling;}}}if(_4f7){for(var i=0;i<data.length;++i){var t=this._normalizedCreator(data[i]);this.setItem(t.node.id,{data:t.data,type:t.type});this.parent.insertBefore(t.node,_4f7);}}else{for(var i=0;i<data.length;++i){var t=this._normalizedCreator(data[i]);this.setItem(t.node.id,{data:t.data,type:t.type});this.parent.appendChild(t.node);}}return this;},destroy:function(){dojo.forEach(this.events,dojo.disconnect);this.clearItems();this.node=this.parent=this.current=null;},markupFactory:function(_4f8,node){_4f8._skipStartup=true;return new dojo.dnd.Container(node,_4f8);},startup:function(){if(!this.parent){this.parent=this.node;if(this.parent.tagName.toLowerCase()=="table"){var c=this.parent.getElementsByTagName("tbody");if(c&&c.length){this.parent=c[0];}}}this.defaultCreator=dojo.dnd._defaultCreator(this.parent);this.sync();},onMouseOver:function(e){var n=e.relatedTarget;while(n){if(n==this.node){break;}try{n=n.parentNode;}catch(x){n=null;}}if(!n){this._changeState("Container","Over");this.onOverEvent();}n=this._getChildByEvent(e);if(this.current==n){return;}if(this.current){this._removeItemClass(this.current,"Over");}if(n){this._addItemClass(n,"Over");}this.current=n;},onMouseOut:function(e){for(var n=e.relatedTarget;n;){if(n==this.node){return;}try{n=n.parentNode;}catch(x){n=null;}}if(this.current){this._removeItemClass(this.current,"Over");this.current=null;}this._changeState("Container","");this.onOutEvent();},onSelectStart:function(e){if(!this.skipForm||!dojo.dnd.isFormElement(e)){dojo.stopEvent(e);}},onOverEvent:function(){},onOutEvent:function(){},_changeState:function(type,_4f9){var _4fa="dojoDnd"+type;var _4fb=type.toLowerCase()+"State";dojo.replaceClass(this.node,_4fa+_4f9,_4fa+this[_4fb]);this[_4fb]=_4f9;},_addItemClass:function(node,type){dojo.addClass(node,"dojoDndItem"+type);},_removeItemClass:function(node,type){dojo.removeClass(node,"dojoDndItem"+type);},_getChildByEvent:function(e){var node=e.target;if(node){for(var _4fc=node.parentNode;_4fc;node=_4fc,_4fc=node.parentNode){if(_4fc==this.parent&&dojo.hasClass(node,"dojoDndItem")){return node;}}}return null;},_normalizedCreator:function(item,hint){var t=(this.creator||this.defaultCreator).call(this,item,hint);if(!dojo.isArray(t.type)){t.type=["text"];}if(!t.node.id){t.node.id=dojo.dnd.getUniqueId();}dojo.addClass(t.node,"dojoDndItem");return t;}});dojo.dnd._createNode=function(tag){if(!tag){return dojo.dnd._createSpan;}return function(text){return dojo.create(tag,{innerHTML:text});};};dojo.dnd._createTrTd=function(text){var tr=dojo.create("tr");dojo.create("td",{innerHTML:text},tr);return tr;};dojo.dnd._createSpan=function(text){return dojo.create("span",{innerHTML:text});};dojo.dnd._defaultCreatorNodes={ul:"li",ol:"li",div:"div",p:"div"};dojo.dnd._defaultCreator=function(node){var tag=node.tagName.toLowerCase();var c=tag=="tbody"||tag=="thead"?dojo.dnd._createTrTd:dojo.dnd._createNode(dojo.dnd._defaultCreatorNodes[tag]);return function(item,hint){var _4fd=item&&dojo.isObject(item),data,type,n;if(_4fd&&item.tagName&&item.nodeType&&item.getAttribute){data=item.getAttribute("dndData")||item.innerHTML;type=item.getAttribute("dndType");type=type?type.split(/\s*,\s*/):["text"];n=item;}else{data=(_4fd&&item.data)?item.data:item;type=(_4fd&&item.type)?item.type:["text"];n=(hint=="avatar"?dojo.dnd._createSpan:c)(String(data));}if(!n.id){n.id=dojo.dnd.getUniqueId();}return {node:n,data:data,type:type};};};}if(!dojo._hasResource["dijit.tree._dndContainer"]){dojo._hasResource["dijit.tree._dndContainer"]=true;dojo.provide("dijit.tree._dndContainer");dojo.getObject("tree",true,dojo);dijit.tree._compareNodes=function(n1,n2){if(n1===n2){return 0;}if("sourceIndex" in document.documentElement){return n1.sourceIndex-n2.sourceIndex;}else{if("compareDocumentPosition" in document.documentElement){return n1.compareDocumentPosition(n2)&2?1:-1;}else{if(document.createRange){var r1=doc.createRange();r1.setStartBefore(n1);var r2=doc.createRange();r2.setStartBefore(n2);return r1.compareBoundaryPoints(r1.END_TO_END,r2);}else{throw Error("dijit.tree._compareNodes don't know how to compare two different nodes in this browser");}}}};dojo.declare("dijit.tree._dndContainer",null,{constructor:function(tree,_4fe){this.tree=tree;this.node=tree.domNode;dojo.mixin(this,_4fe);this.map={};this.current=null;this.containerState="";dojo.addClass(this.node,"dojoDndContainer");this.events=[dojo.connect(this.node,"onmouseenter",this,"onOverEvent"),dojo.connect(this.node,"onmouseleave",this,"onOutEvent"),dojo.connect(this.tree,"_onNodeMouseEnter",this,"onMouseOver"),dojo.connect(this.tree,"_onNodeMouseLeave",this,"onMouseOut"),dojo.connect(this.node,"ondragstart",dojo,"stopEvent"),dojo.connect(this.node,"onselectstart",dojo,"stopEvent")];},getItem:function(key){var _4ff=this.selection[key],ret={data:_4ff,type:["treeNode"]};return ret;},destroy:function(){dojo.forEach(this.events,dojo.disconnect);this.node=this.parent=null;},onMouseOver:function(_500,evt){this.current=_500;},onMouseOut:function(_501,evt){this.current=null;},_changeState:function(type,_502){var _503="dojoDnd"+type;var _504=type.toLowerCase()+"State";dojo.replaceClass(this.node,_503+_502,_503+this[_504]);this[_504]=_502;},_addItemClass:function(node,type){dojo.addClass(node,"dojoDndItem"+type);},_removeItemClass:function(node,type){dojo.removeClass(node,"dojoDndItem"+type);},onOverEvent:function(){this._changeState("Container","Over");},onOutEvent:function(){this._changeState("Container","");}});}if(!dojo._hasResource["dijit.tree._dndSelector"]){dojo._hasResource["dijit.tree._dndSelector"]=true;dojo.provide("dijit.tree._dndSelector");dojo.declare("dijit.tree._dndSelector",dijit.tree._dndContainer,{constructor:function(tree,_505){this.selection={};this.anchor=null;dijit.setWaiState(this.tree.domNode,"multiselect",!this.singular);this.events.push(dojo.connect(this.tree.domNode,"onmousedown",this,"onMouseDown"),dojo.connect(this.tree.domNode,"onmouseup",this,"onMouseUp"),dojo.connect(this.tree.domNode,"onmousemove",this,"onMouseMove"));},singular:false,getSelectedTreeNodes:function(){var _506=[],sel=this.selection;for(var i in sel){_506.push(sel[i]);}return _506;},selectNone:function(){this.setSelection([]);return this;},destroy:function(){this.inherited(arguments);this.selection=this.anchor=null;},addTreeNode:function(node,_507){this.setSelection(this.getSelectedTreeNodes().concat([node]));if(_507){this.anchor=node;}return node;},removeTreeNode:function(node){this.setSelection(this._setDifference(this.getSelectedTreeNodes(),[node]));return node;},isTreeNodeSelected:function(node){return node.id&&!!this.selection[node.id];},setSelection:function(_508){var _509=this.getSelectedTreeNodes();dojo.forEach(this._setDifference(_509,_508),dojo.hitch(this,function(node){node.setSelected(false);if(this.anchor==node){delete this.anchor;}delete this.selection[node.id];}));dojo.forEach(this._setDifference(_508,_509),dojo.hitch(this,function(node){node.setSelected(true);this.selection[node.id]=node;}));this._updateSelectionProperties();},_setDifference:function(xs,ys){dojo.forEach(ys,function(y){y.__exclude__=true;});var ret=dojo.filter(xs,function(x){return !x.__exclude__;});dojo.forEach(ys,function(y){delete y["__exclude__"];});return ret;},_updateSelectionProperties:function(){var _50a=this.getSelectedTreeNodes();var _50b=[],_50c=[];dojo.forEach(_50a,function(node){_50c.push(node);_50b.push(node.getTreePath());});var _50d=dojo.map(_50c,function(node){return node.item;});this.tree._set("paths",_50b);this.tree._set("path",_50b[0]||[]);this.tree._set("selectedNodes",_50c);this.tree._set("selectedNode",_50c[0]||null);this.tree._set("selectedItems",_50d);this.tree._set("selectedItem",_50d[0]||null);},onMouseDown:function(e){if(!this.current||this.tree.isExpandoNode(e.target,this.current)){return;}if(e.button==dojo.mouseButtons.RIGHT){return;}dojo.stopEvent(e);var _50e=this.current,copy=dojo.isCopyKey(e),id=_50e.id;if(!this.singular&&!e.shiftKey&&this.selection[id]){this._doDeselect=true;return;}else{this._doDeselect=false;}this.userSelect(_50e,copy,e.shiftKey);},onMouseUp:function(e){if(!this._doDeselect){return;}this._doDeselect=false;this.userSelect(this.current,dojo.isCopyKey(e),e.shiftKey);},onMouseMove:function(e){this._doDeselect=false;},userSelect:function(node,_50f,_510){if(this.singular){if(this.anchor==node&&_50f){this.selectNone();}else{this.setSelection([node]);this.anchor=node;}}else{if(_510&&this.anchor){var cr=dijit.tree._compareNodes(this.anchor.rowNode,node.rowNode),_511,end,_512=this.anchor;if(cr<0){_511=_512;end=node;}else{_511=node;end=_512;}nodes=[];while(_511!=end){nodes.push(_511);_511=this.tree._getNextNode(_511);}nodes.push(end);this.setSelection(nodes);}else{if(this.selection[node.id]&&_50f){this.removeTreeNode(node);}else{if(_50f){this.addTreeNode(node,true);}else{this.setSelection([node]);this.anchor=node;}}}}},forInSelectedItems:function(f,o){o=o||dojo.global;for(var id in this.selection){f.call(o,this.getItem(id),id,this);}}});}if(!dojo._hasResource["dijit.Tree"]){dojo._hasResource["dijit.Tree"]=true;dojo.provide("dijit.Tree");dojo.declare("dijit._TreeNode",[dijit._Widget,dijit._Templated,dijit._Container,dijit._Contained,dijit._CssStateMixin],{item:null,isTreeNode:true,label:"",isExpandable:null,isExpanded:false,state:"UNCHECKED",templateString:dojo.cache("dijit","templates/TreeNode.html","<div class=\"dijitTreeNode\" role=\"presentation\"\n\t><div dojoAttachPoint=\"rowNode\" class=\"dijitTreeRow\" role=\"presentation\" dojoAttachEvent=\"onmouseenter:_onMouseEnter, onmouseleave:_onMouseLeave, onclick:_onClick, ondblclick:_onDblClick\"\n\t\t><img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"expandoNode\" class=\"dijitTreeExpando\" role=\"presentation\"\n\t\t/><span dojoAttachPoint=\"expandoNodeText\" class=\"dijitExpandoText\" role=\"presentation\"\n\t\t></span\n\t\t><span dojoAttachPoint=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" role=\"presentation\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"iconNode\" class=\"dijitIcon dijitTreeIcon\" role=\"presentation\"\n\t\t\t/><span dojoAttachPoint=\"labelNode\" class=\"dijitTreeLabel\" role=\"treeitem\" tabindex=\"-1\" aria-selected=\"false\" dojoAttachEvent=\"onfocus:_onLabelFocus\"></span>\n\t\t</span\n\t></div>\n\t<div dojoAttachPoint=\"containerNode\" class=\"dijitTreeContainer\" role=\"presentation\" style=\"display: none;\"></div>\n</div>\n"),baseClass:"dijitTreeNode",cssStateNodes:{rowNode:"dijitTreeRow",labelNode:"dijitTreeLabel"},attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{label:{node:"labelNode",type:"innerText"},tooltip:{node:"rowNode",type:"attribute",attribute:"title"}}),buildRendering:function(){this.inherited(arguments);this._setExpando();this._updateItemClasses(this.item);if(this.isExpandable){dijit.setWaiState(this.labelNode,"expanded",this.isExpanded);}this.setSelected(false);},_setIndentAttr:function(_513){var _514=(Math.max(_513,0)*this.tree._nodePixelIndent)+"px";dojo.style(this.domNode,"backgroundPosition",_514+" 0px");dojo.style(this.rowNode,this.isLeftToRight()?"paddingLeft":"paddingRight",_514);dojo.forEach(this.getChildren(),function(_515){_515.set("indent",_513+1);});this._set("indent",_513);},markProcessing:function(){this.state="LOADING";this._setExpando(true);},unmarkProcessing:function(){this._setExpando(false);},_updateItemClasses:function(item){var tree=this.tree,_516=tree.model;if(tree._v10Compat&&item===_516.root){item=null;}this._applyClassAndStyle(item,"icon","Icon");this._applyClassAndStyle(item,"label","Label");this._applyClassAndStyle(item,"row","Row");},_applyClassAndStyle:function(item,_517,_518){var _519="_"+_517+"Class";var _51a=_517+"Node";var _51b=this[_519];this[_519]=this.tree["get"+_518+"Class"](item,this.isExpanded);dojo.replaceClass(this[_51a],this[_519]||"",_51b||"");dojo.style(this[_51a],this.tree["get"+_518+"Style"](item,this.isExpanded)||{});},_updateLayout:function(){var _51c=this.getParent();if(!_51c||_51c.rowNode.style.display=="none"){dojo.addClass(this.domNode,"dijitTreeIsRoot");}else{dojo.toggleClass(this.domNode,"dijitTreeIsLast",!this.getNextSibling());}},_setExpando:function(_51d){var _51e=["dijitTreeExpandoLoading","dijitTreeExpandoOpened","dijitTreeExpandoClosed","dijitTreeExpandoLeaf"],_51f=["*","-","+","*"],idx=_51d?0:(this.isExpandable?(this.isExpanded?1:2):3);dojo.replaceClass(this.expandoNode,_51e[idx],_51e);this.expandoNodeText.innerHTML=_51f[idx];},expand:function(){if(this._expandDeferred){return this._expandDeferred;}this._wipeOut&&this._wipeOut.stop();this.isExpanded=true;dijit.setWaiState(this.labelNode,"expanded","true");if(this.tree.showRoot||this!==this.tree.rootNode){dijit.setWaiRole(this.containerNode,"group");}dojo.addClass(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);if(this==this.tree.rootNode){dijit.setWaiState(this.tree.domNode,"expanded","true");}var def,_520=dojo.fx.wipeIn({node:this.containerNode,duration:dijit.defaultDuration,onEnd:function(){def.callback(true);}});def=(this._expandDeferred=new dojo.Deferred(function(){_520.stop();}));_520.play();return def;},collapse:function(){if(!this.isExpanded){return;}if(this._expandDeferred){this._expandDeferred.cancel();delete this._expandDeferred;}this.isExpanded=false;dijit.setWaiState(this.labelNode,"expanded","false");if(this==this.tree.rootNode){dijit.setWaiState(this.tree.domNode,"expanded","false");}dojo.removeClass(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);if(!this._wipeOut){this._wipeOut=dojo.fx.wipeOut({node:this.containerNode,duration:dijit.defaultDuration});}this._wipeOut.play();},indent:0,setChildItems:function(_521){var tree=this.tree,_522=tree.model,defs=[];dojo.forEach(this.getChildren(),function(_523){dijit._Container.prototype.removeChild.call(this,_523);},this);this.state="LOADED";if(_521&&_521.length>0){this.isExpandable=true;dojo.forEach(_521,function(item){var id=_522.getIdentity(item),_524=tree._itemNodesMap[id],node;if(_524){for(var i=0;i<_524.length;i++){if(_524[i]&&!_524[i].getParent()){node=_524[i];node.set("indent",this.indent+1);break;}}}if(!node){node=this.tree._createTreeNode({item:item,tree:tree,isExpandable:_522.mayHaveChildren(item),label:tree.getLabel(item),tooltip:tree.getTooltip(item),dir:tree.dir,lang:tree.lang,indent:this.indent+1});if(_524){_524.push(node);}else{tree._itemNodesMap[id]=[node];}}this.addChild(node);if(this.tree.autoExpand||this.tree._state(item)){defs.push(tree._expandNode(node));}},this);dojo.forEach(this.getChildren(),function(_525,idx){_525._updateLayout();});}else{this.isExpandable=false;}if(this._setExpando){this._setExpando(false);}this._updateItemClasses(this.item);if(this==tree.rootNode){var fc=this.tree.showRoot?this:this.getChildren()[0];if(fc){fc.setFocusable(true);tree.lastFocused=fc;}else{tree.domNode.setAttribute("tabIndex","0");}}return new dojo.DeferredList(defs);},getTreePath:function(){var node=this;var path=[];while(node&&node!==this.tree.rootNode){path.unshift(node.item);node=node.getParent();}path.unshift(this.tree.rootNode.item);return path;},getIdentity:function(){return this.tree.model.getIdentity(this.item);},removeChild:function(node){this.inherited(arguments);var _526=this.getChildren();if(_526.length==0){this.isExpandable=false;this.collapse();}dojo.forEach(_526,function(_527){_527._updateLayout();});},makeExpandable:function(){this.isExpandable=true;this._setExpando(false);},_onLabelFocus:function(evt){this.tree._onNodeFocus(this);},setSelected:function(_528){dijit.setWaiState(this.labelNode,"selected",_528);dojo.toggleClass(this.rowNode,"dijitTreeRowSelected",_528);},setFocusable:function(_529){this.labelNode.setAttribute("tabIndex",_529?"0":"-1");},_onClick:function(evt){this.tree._onClick(this,evt);},_onDblClick:function(evt){this.tree._onDblClick(this,evt);},_onMouseEnter:function(evt){this.tree._onNodeMouseEnter(this,evt);},_onMouseLeave:function(evt){this.tree._onNodeMouseLeave(this,evt);}});dojo.declare("dijit.Tree",[dijit._Widget,dijit._Templated],{store:null,model:null,query:null,label:"",showRoot:true,childrenAttr:["children"],paths:[],path:[],selectedItems:null,selectedItem:null,openOnClick:false,openOnDblClick:false,templateString:dojo.cache("dijit","templates/Tree.html","<div class=\"dijitTree dijitTreeContainer\" role=\"tree\"\n\tdojoAttachEvent=\"onkeypress:_onKeyPress\">\n\t<div class=\"dijitInline dijitTreeIndent\" style=\"position: absolute; top: -9999px\" dojoAttachPoint=\"indentDetector\"></div>\n</div>\n"),persist:true,autoExpand:false,dndController:"dijit.tree._dndSelector",dndParams:["onDndDrop","itemCreator","onDndCancel","checkAcceptance","checkItemAcceptance","dragThreshold","betweenThreshold"],onDndDrop:null,itemCreator:null,onDndCancel:null,checkAcceptance:null,checkItemAcceptance:null,dragThreshold:5,betweenThreshold:0,_nodePixelIndent:19,_publish:function(_52a,_52b){dojo.publish(this.id,[dojo.mixin({tree:this,event:_52a},_52b||{})]);},postMixInProperties:function(){this.tree=this;if(this.autoExpand){this.persist=false;}this._itemNodesMap={};if(!this.cookieName){this.cookieName=this.id+"SaveStateCookie";}this._loadDeferred=new dojo.Deferred();this.inherited(arguments);},postCreate:function(){this._initState();if(!this.model){this._store2model();}this.connect(this.model,"onChange","_onItemChange");this.connect(this.model,"onChildrenChange","_onItemChildrenChange");this.connect(this.model,"onDelete","_onItemDelete");this._load();this.inherited(arguments);if(this.dndController){if(dojo.isString(this.dndController)){this.dndController=dojo.getObject(this.dndController);}var _52c={};for(var i=0;i<this.dndParams.length;i++){if(this[this.dndParams[i]]){_52c[this.dndParams[i]]=this[this.dndParams[i]];}}this.dndController=new this.dndController(this,_52c);}},_store2model:function(){this._v10Compat=true;dojo.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query");var _52d={id:this.id+"_ForestStoreModel",store:this.store,query:this.query,childrenAttrs:this.childrenAttr};if(this.params.mayHaveChildren){_52d.mayHaveChildren=dojo.hitch(this,"mayHaveChildren");}if(this.params.getItemChildren){_52d.getChildren=dojo.hitch(this,function(item,_52e,_52f){this.getItemChildren((this._v10Compat&&item===this.model.root)?null:item,_52e,_52f);});}this.model=new dijit.tree.ForestStoreModel(_52d);this.showRoot=Boolean(this.label);},onLoad:function(){},_load:function(){this.model.getRoot(dojo.hitch(this,function(item){var rn=(this.rootNode=this.tree._createTreeNode({item:item,tree:this,isExpandable:true,label:this.label||this.getLabel(item),indent:this.showRoot?0:-1}));if(!this.showRoot){rn.rowNode.style.display="none";dijit.setWaiRole(this.domNode,"presentation");dijit.setWaiRole(rn.labelNode,"presentation");dijit.setWaiRole(rn.containerNode,"tree");}this.domNode.appendChild(rn.domNode);var _530=this.model.getIdentity(item);if(this._itemNodesMap[_530]){this._itemNodesMap[_530].push(rn);}else{this._itemNodesMap[_530]=[rn];}rn._updateLayout();this._expandNode(rn).addCallback(dojo.hitch(this,function(){this._loadDeferred.callback(true);this.onLoad();}));}),function(err){console.error(this,": error loading root: ",err);});},getNodesByItem:function(item){if(!item){return [];}var _531=dojo.isString(item)?item:this.model.getIdentity(item);return [].concat(this._itemNodesMap[_531]);},_setSelectedItemAttr:function(item){this.set("selectedItems",[item]);},_setSelectedItemsAttr:function(_532){var tree=this;this._loadDeferred.addCallback(dojo.hitch(this,function(){var _533=dojo.map(_532,function(item){return (!item||dojo.isString(item))?item:tree.model.getIdentity(item);});var _534=[];dojo.forEach(_533,function(id){_534=_534.concat(tree._itemNodesMap[id]||[]);});this.set("selectedNodes",_534);}));},_setPathAttr:function(path){if(path.length){return this.set("paths",[path]);}else{return this.set("paths",[]);}},_setPathsAttr:function(_535){var tree=this;return new dojo.DeferredList(dojo.map(_535,function(path){var d=new dojo.Deferred();path=dojo.map(path,function(item){return dojo.isString(item)?item:tree.model.getIdentity(item);});if(path.length){tree._loadDeferred.addCallback(function(){_536(path,[tree.rootNode],d);});}else{d.errback("Empty path");}return d;})).addCallback(_537);function _536(path,_538,def){var _539=path.shift();var _53a=dojo.filter(_538,function(node){return node.getIdentity()==_539;})[0];if(!!_53a){if(path.length){tree._expandNode(_53a).addCallback(function(){_536(path,_53a.getChildren(),def);});}else{def.callback(_53a);}}else{def.errback("Could not expand path at "+_539);}};function _537(_53b){tree.set("selectedNodes",dojo.map(dojo.filter(_53b,function(x){return x[0];}),function(x){return x[1];}));};},_setSelectedNodeAttr:function(node){this.set("selectedNodes",[node]);},_setSelectedNodesAttr:function(_53c){this._loadDeferred.addCallback(dojo.hitch(this,function(){this.dndController.setSelection(_53c);}));},mayHaveChildren:function(item){},getItemChildren:function(_53d,_53e){},getLabel:function(item){return this.model.getLabel(item);},getIconClass:function(item,_53f){return (!item||this.model.mayHaveChildren(item))?(_53f?"dijitFolderOpened":"dijitFolderClosed"):"dijitLeaf";},getLabelClass:function(item,_540){},getRowClass:function(item,_541){},getIconStyle:function(item,_542){},getLabelStyle:function(item,_543){},getRowStyle:function(item,_544){},getTooltip:function(item){return "";},_onKeyPress:function(e){if(e.altKey){return;}var dk=dojo.keys;var _545=dijit.getEnclosingWidget(e.target);if(!_545){return;}var key=e.charOrCode;if(typeof key=="string"&&key!=" "){if(!e.altKey&&!e.ctrlKey&&!e.shiftKey&&!e.metaKey){this._onLetterKeyNav({node:_545,key:key.toLowerCase()});dojo.stopEvent(e);}}else{if(this._curSearch){clearTimeout(this._curSearch.timer);delete this._curSearch;}var map=this._keyHandlerMap;if(!map){map={};map[dk.ENTER]="_onEnterKey";map[dk.SPACE]=map[" "]="_onEnterKey";map[this.isLeftToRight()?dk.LEFT_ARROW:dk.RIGHT_ARROW]="_onLeftArrow";map[this.isLeftToRight()?dk.RIGHT_ARROW:dk.LEFT_ARROW]="_onRightArrow";map[dk.UP_ARROW]="_onUpArrow";map[dk.DOWN_ARROW]="_onDownArrow";map[dk.HOME]="_onHomeKey";map[dk.END]="_onEndKey";this._keyHandlerMap=map;}if(this._keyHandlerMap[key]){this[this._keyHandlerMap[key]]({node:_545,item:_545.item,evt:e});dojo.stopEvent(e);}}},_onEnterKey:function(_546){this._publish("execute",{item:_546.item,node:_546.node});this.dndController.userSelect(_546.node,dojo.isCopyKey(_546.evt),_546.evt.shiftKey);this.onClick(_546.item,_546.node,_546.evt);},_onDownArrow:function(_547){var node=this._getNextNode(_547.node);if(node&&node.isTreeNode){this.focusNode(node);}},_onUpArrow:function(_548){var node=_548.node;var _549=node.getPreviousSibling();if(_549){node=_549;while(node.isExpandable&&node.isExpanded&&node.hasChildren()){var _54a=node.getChildren();node=_54a[_54a.length-1];}}else{var _54b=node.getParent();if(!(!this.showRoot&&_54b===this.rootNode)){node=_54b;}}if(node&&node.isTreeNode){this.focusNode(node);}},_onRightArrow:function(_54c){var node=_54c.node;if(node.isExpandable&&!node.isExpanded){this._expandNode(node);}else{if(node.hasChildren()){node=node.getChildren()[0];if(node&&node.isTreeNode){this.focusNode(node);}}}},_onLeftArrow:function(_54d){var node=_54d.node;if(node.isExpandable&&node.isExpanded){this._collapseNode(node);}else{var _54e=node.getParent();if(_54e&&_54e.isTreeNode&&!(!this.showRoot&&_54e===this.rootNode)){this.focusNode(_54e);}}},_onHomeKey:function(){var node=this._getRootOrFirstNode();if(node){this.focusNode(node);}},_onEndKey:function(_54f){var node=this.rootNode;while(node.isExpanded){var c=node.getChildren();node=c[c.length-1];}if(node&&node.isTreeNode){this.focusNode(node);}},multiCharSearchDuration:250,_onLetterKeyNav:function(_550){var cs=this._curSearch;if(cs){cs.pattern=cs.pattern+_550.key;clearTimeout(cs.timer);}else{cs=this._curSearch={pattern:_550.key,startNode:_550.node};}var self=this;cs.timer=setTimeout(function(){delete self._curSearch;},this.multiCharSearchDuration);var node=cs.startNode;do{node=this._getNextNode(node);if(!node){node=this._getRootOrFirstNode();}}while(node!==cs.startNode&&(node.label.toLowerCase().substr(0,cs.pattern.length)!=cs.pattern));if(node&&node.isTreeNode){if(node!==cs.startNode){this.focusNode(node);}}},isExpandoNode:function(node,_551){return dojo.isDescendant(node,_551.expandoNode);},_onClick:function(_552,e){var _553=e.target,_554=this.isExpandoNode(_553,_552);if((this.openOnClick&&_552.isExpandable)||_554){if(_552.isExpandable){this._onExpandoClick({node:_552});}}else{this._publish("execute",{item:_552.item,node:_552,evt:e});this.onClick(_552.item,_552,e);this.focusNode(_552);}dojo.stopEvent(e);},_onDblClick:function(_555,e){var _556=e.target,_557=(_556==_555.expandoNode||_556==_555.expandoNodeText);if((this.openOnDblClick&&_555.isExpandable)||_557){if(_555.isExpandable){this._onExpandoClick({node:_555});}}else{this._publish("execute",{item:_555.item,node:_555,evt:e});this.onDblClick(_555.item,_555,e);this.focusNode(_555);}dojo.stopEvent(e);},_onExpandoClick:function(_558){var node=_558.node;this.focusNode(node);if(node.isExpanded){this._collapseNode(node);}else{this._expandNode(node);}},onClick:function(item,node,evt){},onDblClick:function(item,node,evt){},onOpen:function(item,node){},onClose:function(item,node){},_getNextNode:function(node){if(node.isExpandable&&node.isExpanded&&node.hasChildren()){return node.getChildren()[0];}else{while(node&&node.isTreeNode){var _559=node.getNextSibling();if(_559){return _559;}node=node.getParent();}return null;}},_getRootOrFirstNode:function(){return this.showRoot?this.rootNode:this.rootNode.getChildren()[0];},_collapseNode:function(node){if(node._expandNodeDeferred){delete node._expandNodeDeferred;}if(node.isExpandable){if(node.state=="LOADING"){return;}node.collapse();this.onClose(node.item,node);if(node.item){this._state(node.item,false);this._saveState();}}},_expandNode:function(node,_55a){if(node._expandNodeDeferred&&!_55a){return node._expandNodeDeferred;}var _55b=this.model,item=node.item,_55c=this;switch(node.state){case "UNCHECKED":node.markProcessing();var def=(node._expandNodeDeferred=new dojo.Deferred());_55b.getChildren(item,function(_55d){node.unmarkProcessing();var scid=node.setChildItems(_55d);var ed=_55c._expandNode(node,true);scid.addCallback(function(){ed.addCallback(function(){def.callback();});});},function(err){console.error(_55c,": error loading root children: ",err);});break;default:def=(node._expandNodeDeferred=node.expand());this.onOpen(node.item,node);if(item){this._state(item,true);this._saveState();}}return def;},focusNode:function(node){dijit.focus(node.labelNode);},_onNodeFocus:function(node){if(node&&node!=this.lastFocused){if(this.lastFocused&&!this.lastFocused._destroyed){this.lastFocused.setFocusable(false);}node.setFocusable(true);this.lastFocused=node;}},_onNodeMouseEnter:function(node){},_onNodeMouseLeave:function(node){},_onItemChange:function(item){var _55e=this.model,_55f=_55e.getIdentity(item),_560=this._itemNodesMap[_55f];if(_560){var _561=this.getLabel(item),_562=this.getTooltip(item);dojo.forEach(_560,function(node){node.set({item:item,label:_561,tooltip:_562});node._updateItemClasses(item);});}},_onItemChildrenChange:function(_563,_564){var _565=this.model,_566=_565.getIdentity(_563),_567=this._itemNodesMap[_566];if(_567){dojo.forEach(_567,function(_568){_568.setChildItems(_564);});}},_onItemDelete:function(item){var _569=this.model,_56a=_569.getIdentity(item),_56b=this._itemNodesMap[_56a];if(_56b){dojo.forEach(_56b,function(node){this.dndController.removeTreeNode(node);var _56c=node.getParent();if(_56c){_56c.removeChild(node);}node.destroyRecursive();},this);delete this._itemNodesMap[_56a];}},_initState:function(){if(this.persist){var _56d=dojo.cookie(this.cookieName);this._openedItemIds={};if(_56d){dojo.forEach(_56d.split(","),function(item){this._openedItemIds[item]=true;},this);}}},_state:function(item,_56e){if(!this.persist){return false;}var id=this.model.getIdentity(item);if(arguments.length===1){return this._openedItemIds[id];}if(_56e){this._openedItemIds[id]=true;}else{delete this._openedItemIds[id];}},_saveState:function(){if(!this.persist){return;}var ary=[];for(var id in this._openedItemIds){ary.push(id);}dojo.cookie(this.cookieName,ary.join(","),{expires:365});},destroy:function(){if(this._curSearch){clearTimeout(this._curSearch.timer);delete this._curSearch;}if(this.rootNode){this.rootNode.destroyRecursive();}if(this.dndController&&!dojo.isString(this.dndController)){this.dndController.destroy();}this.rootNode=null;this.inherited(arguments);},destroyRecursive:function(){this.destroy();},resize:function(_56f){if(_56f){dojo.marginBox(this.domNode,_56f);}this._nodePixelIndent=dojo._getMarginSize(this.tree.indentDetector).w;if(this.tree.rootNode){this.tree.rootNode.set("indent",this.showRoot?0:-1);}},_createTreeNode:function(args){return new dijit._TreeNode(args);}});}if(!dojo._hasResource["dojox.layout.ToggleSplitter"]){dojo._hasResource["dojox.layout.ToggleSplitter"]=true;dojo.provide("dojox.layout.ToggleSplitter");dojo.experimental("dojox.layout.ToggleSplitter");dojo.declare("dojox.layout.ToggleSplitter",[dijit.layout._Splitter],{open:true,closedThreshold:5,openSize:"",_closedSize:"0",templateString:"<div class=\"dijitSplitter dojoxToggleSplitter\" dojoAttachEvent=\"onkeypress:_onKeyPress,onmousedown:_onMouseDown\" tabIndex=\"0\" role=\"separator\"><div dojoAttachPoint=\"toggleNode\" class=\"dijitSplitterThumb dojoxToggleSplitterIcon\"></div></div>",postCreate:function(){this._started=false;this.inherited(arguments);var _570=this.region;dojo.addClass(this.domNode,"dojoxToggleSplitter"+_570.charAt(0).toUpperCase()+_570.substring(1));this.connect(this,"onDblClick","_toggleMe");},startup:function(){this.inherited(arguments);var _571=this.child.domNode,_572=dojo.style(_571,(this.horizontal?"height":"width"));dojo.forEach(["toggleSplitterOpen","toggleSplitterClosedThreshold","toggleSplitterOpenSize"],function(name){var _573=name.substring("toggleSplitter".length);_573=_573.charAt(0).toLowerCase()+_573.substring(1);if(name in this.child){this[_573]=this.child[name];}},this);if(!this.openSize){this.openSize=(this.open)?_572+"px":"75px";}this._openStyleProps=this._getStyleProps(_571,true);this._started=true;this.set("open",this.open);return this;},_onMouseUp:function(evt){dojo.disconnect(this._onMoveHandle);dojo.disconnect(this._onUpHandle);delete this._onMoveHandle;delete this._onUpHandle;delete this._startPosn;},_onPrelimMouseMove:function(evt){var _574=this._startPosn||0;var _575=3;var _576=Math.abs(_574-(this.horizontal?evt.clientY:evt.clientX));if(_576>=_575){dojo.disconnect(this._onMoveHandle);this._startDrag(evt);}},_onMouseDown:function(evt){if(!this.open){return;}if(!this._onUpHandle){this._onUpHandle=dojo.connect(dojo.body(),"onmouseup",this,"_onMouseUp");}if(!this._onMoveHandle){this._startPosn=this.horizontal?evt.clientY:evt.clientX;this._onMoveHandle=dojo.connect(dojo.body(),"onmousemove",this,"_onPrelimMouseMove");}},_handleOnChange:function(){var _577=this.child.domNode,_578,dim=this.horizontal?"height":"width";if(this.open){var _579=dojo.mixin({display:"block",overflow:"auto",visibility:"visible"},this._openStyleProps);_579[dim]=(this._openStyleProps&&this._openStyleProps[dim])?this._openStyleProps[dim]:this.openSize;dojo.style(_577,_579);this.connect(this.domNode,"onmousedown","_onMouseDown");}else{var _57a=dojo.getComputedStyle(_577);_578=this._getStyleProps(_577,true,_57a);var _57b=this._getStyleProps(_577,false,_57a);this._openStyleProps=_578;dojo.style(_577,_57b);}this._setStateClass();if(this.container._started){this.container._layoutChildren(this.region);}},_getStyleProps:function(_57c,open,_57d){if(!_57d){_57d=dojo.getComputedStyle(_57c);}var _57e={},dim=this.horizontal?"height":"width";_57e["overflow"]=(open)?_57d["overflow"]:"hidden";_57e["visibility"]=(open)?_57d["visibility"]:"hidden";_57e[dim]=(open)?_57c.style[dim]||_57d[dim]:this._closedSize;var _57f=["Top","Right","Bottom","Left"];dojo.forEach(["padding","margin","border"],function(_580){for(var i=0;i<_57f.length;i++){var _581=_580+_57f[i];if(_580=="border"){_580+="Width";}if(undefined!==_57d[_581]){_57e[_581]=(open)?_57d[_581]:0;}}});return _57e;},_setStateClass:function(){if(this.open){dojo.removeClass(this.domNode,"dojoxToggleSplitterClosed");dojo.addClass(this.domNode,"dojoxToggleSplitterOpen");dojo.removeClass(this.toggleNode,"dojoxToggleSplitterIconClosed");dojo.addClass(this.toggleNode,"dojoxToggleSplitterIconOpen");}else{dojo.addClass(this.domNode,"dojoxToggleSplitterClosed");dojo.removeClass(this.domNode,"dojoxToggleSplitterOpen");dojo.addClass(this.toggleNode,"dojoxToggleSplitterIconClosed");dojo.removeClass(this.toggleNode,"dojoxToggleSplitterIconOpen");}},_setOpenAttr:function(_582){if(!this._started){return;}this.open=_582;this._handleOnChange(_582,true);var evt=this.open?"onOpen":"onClose";this[evt](this.child);},onOpen:function(){},onClose:function(){},_toggleMe:function(evt){if(evt){dojo.stopEvent(evt);}this.set("open",!this.open);},_onKeyPress:function(e){this.inherited(arguments);}});dojo.extend(dijit._Widget,{toggleSplitterOpen:true,toggleSplitterClosedThreshold:5,toggleSplitterOpenSize:""});}if(!dojo._hasResource["dojox.embed.Flash"]){dojo._hasResource["dojox.embed.Flash"]=true;dojo.provide("dojox.embed.Flash");(function(){var _583,_584;var _585=9;var _586="dojox-embed-flash-",_587=0;var _588={expressInstall:false,width:320,height:240,swLiveConnect:"true",allowScriptAccess:"sameDomain",allowNetworking:"all",style:null,redirect:null};function prep(_589){_589=dojo.delegate(_588,_589);if(!("path" in _589)){console.error("dojox.embed.Flash(ctor):: no path reference to a Flash movie was provided.");return null;}if(!("id" in _589)){_589.id=(_586+_587++);}return _589;};if(dojo.isIE){_583=function(_58a){_58a=prep(_58a);if(!_58a){return null;}var p;var path=_58a.path;if(_58a.vars){var a=[];for(p in _58a.vars){a.push(p+"="+_58a.vars[p]);}_58a.params.FlashVars=a.join("&");delete _58a.vars;}var s="<object id=\""+_58a.id+"\" "+"classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" "+"width=\""+_58a.width+"\" "+"height=\""+_58a.height+"\""+((_58a.style)?" style=\""+_58a.style+"\"":"")+">"+"<param name=\"movie\" value=\""+path+"\" />";if(_58a.params){for(p in _58a.params){s+="<param name=\""+p+"\" value=\""+_58a.params[p]+"\" />";}}s+="</object>";return {id:_58a.id,markup:s};};_584=(function(){var _58b=10,_58c=null;while(!_58c&&_58b>7){try{_58c=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_58b--);}catch(e){}}if(_58c){var v=_58c.GetVariable("$version").split(" ")[1].split(",");return {major:(v[0]!=null)?parseInt(v[0]):0,minor:(v[1]!=null)?parseInt(v[1]):0,rev:(v[2]!=null)?parseInt(v[2]):0};}return {major:0,minor:0,rev:0};})();dojo.addOnUnload(function(){var _58d=function(){};var objs=dojo.query("object").reverse().style("display","none").forEach(function(i){for(var p in i){if((p!="FlashVars")&&dojo.isFunction(i[p])){try{i[p]=_58d;}catch(e){}}}});});}else{_583=function(_58e){_58e=prep(_58e);if(!_58e){return null;}var p;var path=_58e.path;if(_58e.vars){var a=[];for(p in _58e.vars){a.push(p+"="+_58e.vars[p]);}_58e.params.flashVars=a.join("&");delete _58e.vars;}var s="<embed type=\"application/x-shockwave-flash\" "+"src=\""+path+"\" "+"id=\""+_58e.id+"\" "+"width=\""+_58e.width+"\" "+"height=\""+_58e.height+"\""+((_58e.style)?" style=\""+_58e.style+"\" ":"")+"pluginspage=\""+window.location.protocol+"//www.adobe.com/go/getflashplayer\" ";if(_58e.params){for(p in _58e.params){s+=" "+p+"=\""+_58e.params[p]+"\"";}}s+=" />";return {id:_58e.id,markup:s};};_584=(function(){var _58f=navigator.plugins["Shockwave Flash"];if(_58f&&_58f.description){var v=_58f.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split(".");return {major:(v[0]!=null)?parseInt(v[0]):0,minor:(v[1]!=null)?parseInt(v[1]):0,rev:(v[2]!=null)?parseInt(v[2]):0};}return {major:0,minor:0,rev:0};})();}dojox.embed.Flash=function(_590,node){if(location.href.toLowerCase().indexOf("file://")>-1){throw new Error("dojox.embed.Flash can't be run directly from a file. To instatiate the required SWF correctly it must be run from a server, like localHost.");}this.available=dojox.embed.Flash.available;this.minimumVersion=_590.minimumVersion||_585;this.id=null;this.movie=null;this.domNode=null;if(node){node=dojo.byId(node);}setTimeout(dojo.hitch(this,function(){if(_590.expressInstall||this.available&&this.available>=this.minimumVersion){if(_590&&node){this.init(_590,node);}else{this.onError("embed.Flash was not provided with the proper arguments.");}}else{if(!this.available){this.onError("Flash is not installed.");}else{this.onError("Flash version detected: "+this.available+" is out of date. Minimum required: "+this.minimumVersion);}}}),100);};dojo.extend(dojox.embed.Flash,{onReady:function(_591){console.warn("embed.Flash.movie.onReady:",_591);},onLoad:function(_592){console.warn("embed.Flash.movie.onLoad:",_592);},onError:function(msg){},_onload:function(){clearInterval(this._poller);delete this._poller;delete this._pollCount;delete this._pollMax;this.onLoad(this.movie);},init:function(_593,node){console.log("embed.Flash.movie.init");this.destroy();node=dojo.byId(node||this.domNode);if(!node){throw new Error("dojox.embed.Flash: no domNode reference has been passed.");}var p=0,_594=false;this._poller=null;this._pollCount=0;this._pollMax=15;this.pollTime=100;if(dojox.embed.Flash.initialized){this.id=dojox.embed.Flash.place(_593,node);this.domNode=node;setTimeout(dojo.hitch(this,function(){this.movie=this.byId(this.id,_593.doc);this.onReady(this.movie);this._poller=setInterval(dojo.hitch(this,function(){try{p=this.movie.PercentLoaded();}catch(e){console.warn("this.movie.PercentLoaded() failed");}if(p==100){this._onload();}else{if(p==0&&this._pollCount++>this._pollMax){clearInterval(this._poller);throw new Error("Building SWF failed.");}}}),this.pollTime);}),1);}},_destroy:function(){try{this.domNode.removeChild(this.movie);}catch(e){}this.id=this.movie=this.domNode=null;},destroy:function(){if(!this.movie){return;}var test=dojo.delegate({id:true,movie:true,domNode:true,onReady:true,onLoad:true});for(var p in this){if(!test[p]){delete this[p];}}if(this._poller){dojo.connect(this,"onLoad",this,"_destroy");}else{this._destroy();}},byId:function(_595,doc){doc=doc||document;if(doc.embeds[_595]){return doc.embeds[_595];}if(doc[_595]){return doc[_595];}if(window[_595]){return window[_595];}if(document[_595]){return document[_595];}return null;}});dojo.mixin(dojox.embed.Flash,{minSupported:8,available:_584.major,supported:(_584.major>=_584.required),minimumRequired:_584.required,version:_584,initialized:false,onInitialize:function(){dojox.embed.Flash.initialized=true;},__ie_markup__:function(_596){return _583(_596);},proxy:function(obj,_597){dojo.forEach((dojo.isArray(_597)?_597:[_597]),function(item){this[item]=dojo.hitch(this,function(){return (function(){return eval(this.movie.CallFunction("<invoke name=\""+item+"\" returntype=\"javascript\">"+"<arguments>"+dojo.map(arguments,function(item){return __flash__toXML(item);}).join("")+"</arguments>"+"</invoke>"));}).apply(this,arguments||[]);});},obj);}});dojox.embed.Flash.place=function(_598,node){var o=_583(_598);node=dojo.byId(node);if(!node){node=dojo.doc.createElement("div");node.id=o.id+"-container";dojo.body().appendChild(node);}if(o){node.innerHTML=o.markup;return o.id;}return null;};dojox.embed.Flash.onInitialize();})();}if(!dojo._hasResource["dojox.html.styles"]){dojo._hasResource["dojox.html.styles"]=true;dojo.provide("dojox.html.styles");(function(){var _599={};var _59a={};var _59b=[];var _59c=[];dojox.html.insertCssRule=function(_59d,_59e,_59f){var ss=dojox.html.getDynamicStyleSheet(_59f);var _5a0=_59d+" {"+_59e+"}";console.log("insertRule:",_5a0);if(dojo.isIE){ss.cssText+=_5a0;console.log("ss.cssText:",ss.cssText);}else{if(ss.sheet){ss.sheet.insertRule(_5a0,ss._indicies.length);}else{ss.appendChild(dojo.doc.createTextNode(_5a0));}}ss._indicies.push(_59d+" "+_59e);return _59d;};dojox.html.removeCssRule=function(_5a1,_5a2,_5a3){var ss;var _5a4=-1;for(var nm in _599){if(_5a3&&_5a3!=nm){continue;}ss=_599[nm];for(var i=0;i<ss._indicies.length;i++){if(_5a1+" "+_5a2==ss._indicies[i]){_5a4=i;break;}}if(_5a4>-1){break;}}if(!ss){console.log("No dynamic style sheet has been created from which to remove a rule.");return false;}if(_5a4==-1){console.log("The css rule was not found and could not be removed.");return false;}ss._indicies.splice(_5a4,1);if(dojo.isIE){ss.removeRule(_5a4);}else{if(ss.sheet){ss.sheet.deleteRule(_5a4);}else{if(document.styleSheets[0]){console.log("what browser hath useth thith?");}}}return true;};dojox.html.getStyleSheet=function(_5a5){if(_599[_5a5||"default"]){return _599[_5a5||"default"];}if(!_5a5){return false;}var _5a6=dojox.html.getStyleSheets();if(_5a6[_5a5]){return dojox.html.getStyleSheets()[_5a5];}for(var nm in _5a6){if(_5a6[nm].href&&_5a6[nm].href.indexOf(_5a5)>-1){return _5a6[nm];}}return false;};dojox.html.getDynamicStyleSheet=function(_5a7){if(!_5a7){_5a7="default";}if(!_599[_5a7]){if(dojo.doc.createStyleSheet){_599[_5a7]=dojo.doc.createStyleSheet();if(dojo.isIE<9){_599[_5a7].title=_5a7;}}else{_599[_5a7]=dojo.doc.createElement("style");_599[_5a7].setAttribute("type","text/css");dojo.doc.getElementsByTagName("head")[0].appendChild(_599[_5a7]);console.log(_5a7," ss created: ",_599[_5a7].sheet);}_599[_5a7]._indicies=[];}return _599[_5a7];};dojox.html.enableStyleSheet=function(_5a8){var ss=dojox.html.getStyleSheet(_5a8);if(ss){if(ss.sheet){ss.sheet.disabled=false;}else{ss.disabled=false;}}};dojox.html.disableStyleSheet=function(_5a9){var ss=dojox.html.getStyleSheet(_5a9);if(ss){if(ss.sheet){ss.sheet.disabled=true;}else{ss.disabled=true;}}};dojox.html.activeStyleSheet=function(_5aa){var _5ab=dojox.html.getToggledStyleSheets();if(arguments.length==1){dojo.forEach(_5ab,function(s){s.disabled=(s.title==_5aa)?false:true;});}else{for(var i=0;i<_5ab.length;i++){if(_5ab[i].disabled==false){return _5ab[i];}}}return true;};dojox.html.getPreferredStyleSheet=function(){};dojox.html.getToggledStyleSheets=function(){if(!_59b.length){var _5ac=dojox.html.getStyleSheets();for(var nm in _5ac){if(_5ac[nm].title){_59b.push(_5ac[nm]);}}}return _59b;};dojox.html.getStyleSheets=function(){if(_59a.collected){return _59a;}var _5ad=dojo.doc.styleSheets;dojo.forEach(_5ad,function(n){var s=(n.sheet)?n.sheet:n;var name=s.title||s.href;if(dojo.isIE){if(s.cssText.indexOf("#default#VML")==-1){if(s.href){_59a[name]=s;}else{if(s.imports.length){dojo.forEach(s.imports,function(si){_59a[si.title||si.href]=si;});}else{_59a[name]=s;}}}}else{_59a[name]=s;_59a[name].id=s.ownerNode.id;dojo.forEach(s.cssRules,function(r){if(r.href){_59a[r.href]=r.styleSheet;_59a[r.href].id=s.ownerNode.id;}});}});_59a.collected=true;return _59a;};})();}if(!dojo._hasResource["dojox.embed.flashVars"]){dojo._hasResource["dojox.embed.flashVars"]=true;dojo.provide("dojox.embed.flashVars");dojo.mixin(dojox.embed.flashVars,{serialize:function(n,o){var esc=function(val){if(typeof val=="string"){val=val.replace(/;/g,"_sc_");val=val.replace(/\./g,"_pr_");val=val.replace(/\:/g,"_cl_");}return val;};var df=dojox.embed.flashVars.serialize;var txt="";if(dojo.isArray(o)){for(var i=0;i<o.length;i++){txt+=df(n+"."+i,esc(o[i]))+";";}return txt.replace(/;{2,}/g,";");}else{if(dojo.isObject(o)){for(var nm in o){txt+=df(n+"."+nm,esc(o[nm]))+";";}return txt.replace(/;{2,}/g,";");}}return n+":"+o;}});}if(!dojo._hasResource["dojox.form.FileUploader"]){dojo._hasResource["dojox.form.FileUploader"]=true;dojo.provide("dojox.form.FileUploader");console.warn("DEPRECATED: dojox.form.FileUploader is no longer supported and will be removed in 2.0. Suggested that you use dojox.form.Uploader instead.");dojo.declare("dojox.form.FileUploader",[dijit._Widget,dijit._Templated,dijit._Contained],{swfPath:dojo.config.uploaderPath||dojo.moduleUrl("dojox.form","resources/fileuploader.swf"),templateString:"<div><div dojoAttachPoint=\"progNode\"><div dojoAttachPoint=\"progTextNode\"></div></div><div dojoAttachPoint=\"insideNode\" class=\"uploaderInsideNode\"></div></div>",uploadUrl:"",isDebug:false,devMode:false,baseClass:"dojoxUploaderNorm",hoverClass:"dojoxUploaderHover",activeClass:"dojoxUploaderActive",disabledClass:"dojoxUploaderDisabled",force:"",uploaderType:"",flashObject:null,flashMovie:null,insideNode:null,deferredUploading:1,fileListId:"",uploadOnChange:false,selectMultipleFiles:true,htmlFieldName:"uploadedfile",flashFieldName:"flashUploadFiles",fileMask:null,minFlashVersion:9,tabIndex:-1,showProgress:false,progressMessage:"Loading",progressBackgroundUrl:dojo.moduleUrl("dijit","themes/tundra/images/buttonActive.png"),progressBackgroundColor:"#ededed",progressWidgetId:"",skipServerCheck:false,serverTimeout:5000,log:function(){if(this.isDebug){console["log"](Array.prototype.slice.call(arguments).join(" "));}},constructor:function(){this._subs=[];},postMixInProperties:function(){this.fileList=[];this._cons=[];this.fileMask=this.fileMask||[];this.fileInputs=[];this.fileCount=0;this.flashReady=false;this._disabled=false;this.force=this.force.toLowerCase();this.uploaderType=((dojox.embed.Flash.available>=this.minFlashVersion||this.force=="flash")&&this.force!="html")?"flash":"html";this.deferredUploading=this.deferredUploading===true?1:this.deferredUploading;this._refNode=this.srcNodeRef;this.getButtonStyle();},startup:function(){},postCreate:function(){this.inherited(arguments);this.setButtonStyle();var _5ae;if(this.uploaderType=="flash"){_5ae="createFlashUploader";}else{this.uploaderType="html";_5ae="createHtmlUploader";}this[_5ae]();if(this.fileListId){this.connect(dojo.byId(this.fileListId),"click",function(evt){var p=evt.target.parentNode.parentNode.parentNode;if(p.id&&p.id.indexOf("file_")>-1){this.removeFile(p.id.split("file_")[1]);}});}dojo.addOnUnload(this,this.destroy);},getHiddenWidget:function(){var node=this.domNode.parentNode;while(node){var id=node.getAttribute&&node.getAttribute("widgetId");if(id&&dijit.byId(id).onShow){return dijit.byId(id);}node=node.parentNode;}return null;},getHiddenNode:function(node){if(!node){return null;}var _5af=null;var p=node.parentNode;while(p&&p.tagName.toLowerCase()!="body"){var d=dojo.style(p,"display");if(d=="none"){_5af=p;break;}p=p.parentNode;}return _5af;},getButtonStyle:function(){var _5b0=this.srcNodeRef;this._hiddenNode=this.getHiddenNode(_5b0);if(this._hiddenNode){dojo.style(this._hiddenNode,"display","block");}if(!_5b0&&this.button&&this.button.domNode){var _5b1=true;var cls=this.button.domNode.className+" dijitButtonNode";var txt=this.getText(dojo.query(".dijitButtonText",this.button.domNode)[0]);var _5b2="<button id=\""+this.button.id+"\" class=\""+cls+"\">"+txt+"</button>";_5b0=dojo.place(_5b2,this.button.domNode,"after");this.srcNodeRef=_5b0;this.button.destroy();this.baseClass="dijitButton";this.hoverClass="dijitButtonHover";this.pressClass="dijitButtonActive";this.disabledClass="dijitButtonDisabled";}else{if(!this.srcNodeRef&&this.button){_5b0=this.button;}}if(dojo.attr(_5b0,"class")){this.baseClass+=" "+dojo.attr(_5b0,"class");}dojo.attr(_5b0,"class",this.baseClass);this.norm=this.getStyle(_5b0);this.width=this.norm.w;this.height=this.norm.h;if(this.uploaderType=="flash"){this.over=this.getTempNodeStyle(_5b0,this.baseClass+" "+this.hoverClass,_5b1);this.down=this.getTempNodeStyle(_5b0,this.baseClass+" "+this.activeClass,_5b1);this.dsbl=this.getTempNodeStyle(_5b0,this.baseClass+" "+this.disabledClass,_5b1);this.fhtml={cn:this.getText(_5b0),nr:this.norm,ov:this.over,dn:this.down,ds:this.dsbl};}else{this.fhtml={cn:this.getText(_5b0),nr:this.norm};if(this.norm.va=="middle"){this.norm.lh=this.norm.h;}}if(this.devMode){this.log("classes - base:",this.baseClass," hover:",this.hoverClass,"active:",this.activeClass);this.log("fhtml:",this.fhtml);this.log("norm:",this.norm);this.log("over:",this.over);this.log("down:",this.down);}},setButtonStyle:function(){dojo.style(this.domNode,{width:this.fhtml.nr.w+"px",height:(this.fhtml.nr.h)+"px",padding:"0px",lineHeight:"normal",position:"relative"});if(this.uploaderType=="html"&&this.norm.va=="middle"){dojo.style(this.domNode,"lineHeight",this.norm.lh+"px");}if(this.showProgress){this.progTextNode.innerHTML=this.progressMessage;dojo.style(this.progTextNode,{width:this.fhtml.nr.w+"px",height:(this.fhtml.nr.h+0)+"px",padding:"0px",margin:"0px",left:"0px",lineHeight:(this.fhtml.nr.h+0)+"px",position:"absolute"});dojo.style(this.progNode,{width:this.fhtml.nr.w+"px",height:(this.fhtml.nr.h+0)+"px",padding:"0px",margin:"0px",left:"0px",position:"absolute",display:"none",backgroundImage:"url("+this.progressBackgroundUrl+")",backgroundPosition:"bottom",backgroundRepeat:"repeat-x",backgroundColor:this.progressBackgroundColor});}else{dojo.destroy(this.progNode);}dojo.style(this.insideNode,{position:"absolute",top:"0px",left:"0px",display:""});dojo.addClass(this.domNode,this.srcNodeRef.className);if(this.fhtml.nr.d.indexOf("inline")>-1){dojo.addClass(this.domNode,"dijitInline");}try{this.insideNode.innerHTML=this.fhtml.cn;}catch(e){if(this.uploaderType=="flash"){this.insideNode=this.insideNode.parentNode.removeChild(this.insideNode);dojo.body().appendChild(this.insideNode);this.insideNode.innerHTML=this.fhtml.cn;var c=dojo.connect(this,"onReady",this,function(){dojo.disconnect(c);this.insideNode=this.insideNode.parentNode.removeChild(this.insideNode);this.domNode.appendChild(this.insideNode);});}else{this.insideNode.appendChild(document.createTextNode(this.fhtml.cn));}}if(this._hiddenNode){dojo.style(this._hiddenNode,"display","none");}},onChange:function(_5b3){},onProgress:function(_5b4){},onComplete:function(_5b5){},onCancel:function(){},onError:function(_5b6){},onReady:function(_5b7){},onLoad:function(_5b8){},submit:function(form){var data=form?dojo.formToObject(form):null;this.upload(data);return false;},upload:function(data){if(!this.fileList.length){return false;}if(!this.uploadUrl){console.warn("uploadUrl not provided. Aborting.");return false;}if(!this.showProgress){this.set("disabled",true);}if(this.progressWidgetId){var node=dijit.byId(this.progressWidgetId).domNode;if(dojo.style(node,"display")=="none"){this.restoreProgDisplay="none";dojo.style(node,"display","block");}if(dojo.style(node,"visibility")=="hidden"){this.restoreProgDisplay="hidden";dojo.style(node,"visibility","visible");}}if(data&&!data.target){this.postData=data;}this.log("upload type:",this.uploaderType," - postData:",this.postData);for(var i=0;i<this.fileList.length;i++){var f=this.fileList[i];f.bytesLoaded=0;f.bytesTotal=f.size||100000;f.percent=0;}if(this.uploaderType=="flash"){this.uploadFlash();}else{this.uploadHTML();}return false;},removeFile:function(name,_5b9){var i;for(i=0;i<this.fileList.length;i++){if(this.fileList[i].name==name){if(!_5b9){this.fileList.splice(i,1);}break;}}if(this.uploaderType=="flash"){this.flashMovie.removeFile(name);}else{if(!_5b9){dojo.destroy(this.fileInputs[i]);this.fileInputs.splice(i,1);this._renumberInputs();}}if(this.fileListId){dojo.destroy("file_"+name);}},destroy:function(){if(this.uploaderType=="flash"&&!this.flashMovie){this._cons.push(dojo.connect(this,"onLoad",this,"destroy"));return;}dojo.forEach(this._subs,dojo.unsubscribe,dojo);dojo.forEach(this._cons,dojo.disconnect,dojo);if(this.scrollConnect){dojo.disconnect(this.scrollConnect);}if(this.uploaderType=="flash"){this.flashObject.destroy();delete this.flashObject;}else{dojo.destroy(this._fileInput);dojo.destroy(this._formNode);}this.inherited(arguments);},_displayProgress:function(_5ba){if(_5ba===true){if(this.uploaderType=="flash"){dojo.style(this.insideNode,"top","-2500px");}else{dojo.style(this.insideNode,"display","none");}dojo.style(this.progNode,"display","");}else{if(_5ba===false){dojo.style(this.insideNode,{display:"",left:"0px"});dojo.style(this.progNode,"display","none");}else{var w=_5ba*this.fhtml.nr.w;dojo.style(this.progNode,"width",w+"px");}}},_animateProgress:function(){this._displayProgress(true);var _5bb=false;var c=dojo.connect(this,"_complete",function(){dojo.disconnect(c);_5bb=true;});var w=0;var _5bc=setInterval(dojo.hitch(this,function(){w+=5;if(w>this.fhtml.nr.w){w=0;_5bb=true;}this._displayProgress(w/this.fhtml.nr.w);if(_5bb){clearInterval(_5bc);setTimeout(dojo.hitch(this,function(){this._displayProgress(false);}),500);}}),50);},_error:function(evt){if(typeof (evt)=="string"){evt=new Error(evt);}this.onError(evt);},_addToFileList:function(){if(this.fileListId){var str="";dojo.forEach(this.fileList,function(d){str+="<table id=\"file_"+d.name+"\" class=\"fileToUpload\"><tr><td class=\"fileToUploadClose\"></td><td class=\"fileToUploadName\">"+d.name+"</td><td class=\"fileToUploadSize\">"+(d.size?Math.ceil(d.size*0.001)+"kb":"")+"</td></tr></table>";},this);dojo.byId(this.fileListId).innerHTML=str;}},_change:function(_5bd){if(dojo.isIE){dojo.forEach(_5bd,function(f){f.name=f.name.split("\\")[f.name.split("\\").length-1];});}if(this.selectMultipleFiles){this.fileList=this.fileList.concat(_5bd);}else{if(this.fileList[0]){this.removeFile(this.fileList[0].name,true);}this.fileList=_5bd;}this._addToFileList();this.onChange(_5bd);if(this.uploadOnChange){if(this.uploaderType=="html"){this._buildFileInput();}this.upload();}else{if(this.uploaderType=="html"&&this.selectMultipleFiles){this._buildFileInput();this._connectInput();}}},_complete:function(_5be){_5be=dojo.isArray(_5be)?_5be:[_5be];dojo.forEach(_5be,function(f){if(f.ERROR){this._error(f.ERROR);}},this);dojo.forEach(this.fileList,function(f){f.bytesLoaded=1;f.bytesTotal=1;f.percent=100;this._progress(f);},this);dojo.forEach(this.fileList,function(f){this.removeFile(f.name,true);},this);this.onComplete(_5be);this.fileList=[];this._resetHTML();this.set("disabled",false);if(this.restoreProgDisplay){setTimeout(dojo.hitch(this,function(){dojo.style(dijit.byId(this.progressWidgetId).domNode,this.restoreProgDisplay=="none"?"display":"visibility",this.restoreProgDisplay);}),500);}},_progress:function(_5bf){var _5c0=0;var _5c1=0;for(var i=0;i<this.fileList.length;i++){var f=this.fileList[i];if(f.name==_5bf.name){f.bytesLoaded=_5bf.bytesLoaded;f.bytesTotal=_5bf.bytesTotal;f.percent=Math.ceil(f.bytesLoaded/f.bytesTotal*100);this.log(f.name,"percent:",f.percent);}_5c1+=Math.ceil(0.001*f.bytesLoaded);_5c0+=Math.ceil(0.001*f.bytesTotal);}var _5c2=Math.ceil(_5c1/_5c0*100);if(this.progressWidgetId){dijit.byId(this.progressWidgetId).update({progress:_5c2+"%"});}if(this.showProgress){this._displayProgress(_5c2*0.01);}this.onProgress(this.fileList);},_getDisabledAttr:function(){return this._disabled;},_setDisabledAttr:function(_5c3){if(this._disabled==_5c3){return;}if(this.uploaderType=="flash"){if(!this.flashReady){var _5c4=dojo.connect(this,"onLoad",this,function(){dojo.disconnect(_5c4);this._setDisabledAttr(_5c3);});return;}this._disabled=_5c3;this.flashMovie.doDisable(_5c3);}else{this._disabled=_5c3;dojo.style(this._fileInput,"display",this._disabled?"none":"");}dojo.toggleClass(this.domNode,this.disabledClass,_5c3);},_onFlashBlur:function(){this.flashMovie.blur();if(!this.nextFocusObject&&this.tabIndex){var _5c5=dojo.query("[tabIndex]");for(var i=0;i<_5c5.length;i++){if(_5c5[i].tabIndex>=Number(this.tabIndex)+1){this.nextFocusObject=_5c5[i];break;}}}this.nextFocusObject.focus();},_disconnect:function(){dojo.forEach(this._cons,dojo.disconnect,dojo);},uploadHTML:function(){if(this.selectMultipleFiles){dojo.destroy(this._fileInput);}this._setHtmlPostData();if(this.showProgress){this._animateProgress();}var dfd=dojo.io.iframe.send({url:this.uploadUrl.toString(),form:this._formNode,handleAs:"json",error:dojo.hitch(this,function(err){this._error("HTML Upload Error:"+err.message);}),load:dojo.hitch(this,function(data,_5c6,_5c7){this._complete(data);})});},createHtmlUploader:function(){this._buildForm();this._setFormStyle();this._buildFileInput();this._connectInput();this._styleContent();dojo.style(this.insideNode,"visibility","visible");this.onReady();},_connectInput:function(){this._disconnect();this._cons.push(dojo.connect(this._fileInput,"mouseover",this,function(evt){dojo.addClass(this.domNode,this.hoverClass);this.onMouseOver(evt);}));this._cons.push(dojo.connect(this._fileInput,"mouseout",this,function(evt){setTimeout(dojo.hitch(this,function(){dojo.removeClass(this.domNode,this.activeClass);dojo.removeClass(this.domNode,this.hoverClass);this.onMouseOut(evt);this._checkHtmlCancel("off");}),0);}));this._cons.push(dojo.connect(this._fileInput,"mousedown",this,function(evt){dojo.addClass(this.domNode,this.activeClass);dojo.removeClass(this.domNode,this.hoverClass);this.onMouseDown(evt);}));this._cons.push(dojo.connect(this._fileInput,"mouseup",this,function(evt){dojo.removeClass(this.domNode,this.activeClass);this.onMouseUp(evt);this.onClick(evt);this._checkHtmlCancel("up");}));this._cons.push(dojo.connect(this._fileInput,"change",this,function(){this._checkHtmlCancel("change");this._change([{name:this._fileInput.value,type:"",size:0}]);}));if(this.tabIndex>=0){dojo.attr(this.domNode,"tabIndex",this.tabIndex);}},_checkHtmlCancel:function(_5c8){if(_5c8=="change"){this.dialogIsOpen=false;}if(_5c8=="up"){this.dialogIsOpen=true;}if(_5c8=="off"){if(this.dialogIsOpen){this.onCancel();}this.dialogIsOpen=false;}},_styleContent:function(){var o=this.fhtml.nr;dojo.style(this.insideNode,{width:o.w+"px",height:o.va=="middle"?o.h+"px":"auto",textAlign:o.ta,paddingTop:o.p[0]+"px",paddingRight:o.p[1]+"px",paddingBottom:o.p[2]+"px",paddingLeft:o.p[3]+"px"});try{dojo.style(this.insideNode,"lineHeight","inherit");}catch(e){}},_resetHTML:function(){if(this.uploaderType=="html"&&this._formNode){this.fileInputs=[];dojo.query("*",this._formNode).forEach(function(n){dojo.destroy(n);});this.fileCount=0;this._buildFileInput();this._connectInput();}},_buildForm:function(){if(this._formNode){return;}if(dojo.isIE<9||(dojo.isIE&&dojo.isQuirks)){this._formNode=document.createElement("<form enctype=\"multipart/form-data\" method=\"post\">");this._formNode.encoding="multipart/form-data";this._formNode.id=dijit.getUniqueId("FileUploaderForm");this.domNode.appendChild(this._formNode);}else{this._formNode=dojo.create("form",{enctype:"multipart/form-data",method:"post",id:dijit.getUniqueId("FileUploaderForm")},this.domNode);}},_buildFileInput:function(){if(this._fileInput){this._disconnect();this._fileInput.id=this._fileInput.id+this.fileCount;dojo.style(this._fileInput,"display","none");}this._fileInput=document.createElement("input");this.fileInputs.push(this._fileInput);var nm=this.htmlFieldName;var _5c9=this.id;if(this.selectMultipleFiles){nm+=this.fileCount;_5c9+=this.fileCount;this.fileCount++;}dojo.attr(this._fileInput,{id:this.id,name:nm,type:"file"});dojo.addClass(this._fileInput,"dijitFileInputReal");this._formNode.appendChild(this._fileInput);var real=dojo.marginBox(this._fileInput);dojo.style(this._fileInput,{position:"relative",left:(this.fhtml.nr.w-real.w)+"px",opacity:0});},_renumberInputs:function(){if(!this.selectMultipleFiles){return;}var nm;this.fileCount=0;dojo.forEach(this.fileInputs,function(inp){nm=this.htmlFieldName+this.fileCount;this.fileCount++;dojo.attr(inp,"name",nm);},this);},_setFormStyle:function(){var size=Math.max(2,Math.max(Math.ceil(this.fhtml.nr.w/60),Math.ceil(this.fhtml.nr.h/15)));dojox.html.insertCssRule("#"+this._formNode.id+" input","font-size:"+size+"em");dojo.style(this.domNode,{overflow:"hidden",position:"relative"});dojo.style(this.insideNode,"position","absolute");},_setHtmlPostData:function(){if(this.postData){for(var nm in this.postData){dojo.create("input",{type:"hidden",name:nm,value:this.postData[nm]},this._formNode);}}},uploadFlash:function(){try{if(this.showProgress){this._displayProgress(true);var c=dojo.connect(this,"_complete",this,function(){dojo.disconnect(c);this._displayProgress(false);});}var o={};for(var nm in this.postData){o[nm]=this.postData[nm];}this.flashMovie.doUpload(o);}catch(err){this._error("FileUploader - Sorry, the SWF failed to initialize."+err);}},createFlashUploader:function(){this.uploadUrl=this.uploadUrl.toString();if(this.uploadUrl){if(this.uploadUrl.toLowerCase().indexOf("http")<0&&this.uploadUrl.indexOf("/")!=0){var loc=window.location.href.split("/");loc.pop();loc=loc.join("/")+"/";this.uploadUrl=loc+this.uploadUrl;this.log("SWF Fixed - Relative loc:",loc," abs loc:",this.uploadUrl);}else{this.log("SWF URL unmodified:",this.uploadUrl);}}else{console.warn("Warning: no uploadUrl provided.");}var w=this.fhtml.nr.w;var h=this.fhtml.nr.h;var args={expressInstall:true,path:this.swfPath.uri||this.swfPath,width:w,height:h,allowScriptAccess:"always",allowNetworking:"all",vars:{uploadDataFieldName:this.flashFieldName,uploadUrl:this.uploadUrl,uploadOnSelect:this.uploadOnChange,deferredUploading:this.deferredUploading||0,selectMultipleFiles:this.selectMultipleFiles,id:this.id,isDebug:this.isDebug,devMode:this.devMode,flashButton:dojox.embed.flashVars.serialize("fh",this.fhtml),fileMask:dojox.embed.flashVars.serialize("fm",this.fileMask),noReturnCheck:this.skipServerCheck,serverTimeout:this.serverTimeout},params:{scale:"noscale",wmode:"opaque",allowScriptAccess:"always",allowNetworking:"all"}};this.flashObject=new dojox.embed.Flash(args,this.insideNode);this.flashObject.onError=dojo.hitch(function(msg){this._error("Flash Error: "+msg);});this.flashObject.onReady=dojo.hitch(this,function(){dojo.style(this.insideNode,"visibility","visible");this.log("FileUploader flash object ready");this.onReady(this);});this.flashObject.onLoad=dojo.hitch(this,function(mov){this.flashMovie=mov;this.flashReady=true;this.onLoad(this);});this._connectFlash();},_connectFlash:function(){this._doSub("/filesSelected","_change");this._doSub("/filesUploaded","_complete");this._doSub("/filesProgress","_progress");this._doSub("/filesError","_error");this._doSub("/filesCanceled","onCancel");this._doSub("/stageBlur","_onFlashBlur");this._doSub("/up","onMouseUp");this._doSub("/down","onMouseDown");this._doSub("/over","onMouseOver");this._doSub("/out","onMouseOut");this.connect(this.domNode,"focus",function(){this.flashMovie.focus();this.flashMovie.doFocus();});if(this.tabIndex>=0){dojo.attr(this.domNode,"tabIndex",this.tabIndex);}},_doSub:function(_5ca,_5cb){this._subs.push(dojo.subscribe(this.id+_5ca,this,_5cb));},urlencode:function(url){if(!url||url=="none"){return false;}return url.replace(/:/g,"||").replace(/\./g,"^^").replace("url(","").replace(")","").replace(/'/g,"").replace(/"/g,"");},isButton:function(node){var tn=node.tagName.toLowerCase();return tn=="button"||tn=="input";},getTextStyle:function(node){var o={};o.ff=dojo.style(node,"fontFamily");if(o.ff){o.ff=o.ff.replace(", ",",");o.ff=o.ff.replace(/\"|\'/g,"");o.ff=o.ff=="sans-serif"?"Arial":o.ff;o.fw=dojo.style(node,"fontWeight");o.fi=dojo.style(node,"fontStyle");o.fs=parseInt(dojo.style(node,"fontSize"),10);if(dojo.style(node,"fontSize").indexOf("%")>-1){var n=node;while(n.tagName){if(dojo.style(n,"fontSize").indexOf("%")==-1){o.fs=parseInt(dojo.style(n,"fontSize"),10);break;}if(n.tagName.toLowerCase()=="body"){o.fs=16*0.01*parseInt(dojo.style(n,"fontSize"),10);}n=n.parentNode;}}o.fc=new dojo.Color(dojo.style(node,"color")).toHex();o.fc=parseInt(o.fc.substring(1,Infinity),16);}o.lh=dojo.style(node,"lineHeight");o.ta=dojo.style(node,"textAlign");o.ta=o.ta=="start"||!o.ta?"left":o.ta;o.va=this.isButton(node)?"middle":o.lh==o.h?"middle":dojo.style(node,"verticalAlign");return o;},getText:function(node){var cn=dojo.trim(node.innerHTML);if(cn.indexOf("<")>-1){cn=escape(cn);}return cn;},getStyle:function(node){var o={};var dim=dojo.contentBox(node);var pad=dojo._getPadExtents(node);o.p=[pad.t,pad.w-pad.l,pad.h-pad.t,pad.l];o.w=dim.w+pad.w;o.h=dim.h+pad.h;o.d=dojo.style(node,"display");var clr=new dojo.Color(dojo.style(node,"backgroundColor"));o.bc=clr.a==0?"#ffffff":clr.toHex();o.bc=parseInt(o.bc.substring(1,Infinity),16);var url=this.urlencode(dojo.style(node,"backgroundImage"));if(url){o.bi={url:url,rp:dojo.style(node,"backgroundRepeat"),pos:escape(dojo.style(node,"backgroundPosition"))};if(!o.bi.pos){var rx=dojo.style(node,"backgroundPositionX");var ry=dojo.style(node,"backgroundPositionY");rx=(rx=="left")?"0%":(rx=="right")?"100%":rx;ry=(ry=="top")?"0%":(ry=="bottom")?"100%":ry;o.bi.pos=escape(rx+" "+ry);}}return dojo.mixin(o,this.getTextStyle(node));},getTempNodeStyle:function(node,_5cc,_5cd){var temp,_5ce;if(_5cd){temp=dojo.place("<"+node.tagName+"><span>"+node.innerHTML+"</span></"+node.tagName+">",node.parentNode);var _5cf=temp.firstChild;dojo.addClass(_5cf,node.className);dojo.addClass(temp,_5cc);_5ce=this.getStyle(_5cf);}else{temp=dojo.place("<"+node.tagName+">"+node.innerHTML+"</"+node.tagName+">",node.parentNode);dojo.addClass(temp,node.className);dojo.addClass(temp,_5cc);temp.id=node.id;_5ce=this.getStyle(temp);}dojo.destroy(temp);return _5ce;}});}if(!dojo._hasResource["orion.dojo"]){dojo._hasResource["orion.dojo"]=true;dojo.provide("orion.dojo");}dojo.i18n._preloadLocalizations("orion.nls.orion",["ROOT","ar","ca","cs","da","de","de-de","el","en","en-gb","en-us","es","es-es","fi","fi-fi","fr","fr-fr","he","he-il","hu","it","it-it","ja","ja-jp","ko","ko-kr","nb","nl","nl-nl","pl","pt","pt-br","pt-pt","ru","sk","sl","sv","th","tr","xx","zh","zh-cn","zh-tw"]);
diff --git a/bundles/org.eclipse.orion.dojo/static/orion.js.uncompressed.js b/bundles/org.eclipse.orion.dojo/static/orion.js.uncompressed.js
deleted file mode 100644
index ac55343..0000000
--- a/bundles/org.eclipse.orion.dojo/static/orion.js.uncompressed.js
+++ /dev/null
@@ -1,24961 +0,0 @@
-/*
-	Copyright (c) 2004-2011, 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 an optimized version of Dojo, built for deployment and not for
-	development. To get sources and documentation, please visit:
-
-		http://dojotoolkit.org
-*/
-
-dojo.provide("orion.dojo");
-if(!dojo._hasResource["dojo.io.iframe"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.io.iframe"] = true;
-dojo.provide("dojo.io.iframe");
-
-dojo.getObject("io", true, dojo);
-
-/*=====
-dojo.declare("dojo.io.iframe.__ioArgs", dojo.__IoArgs, {
-	constructor: function(){
-		//	summary:
-		//		All the properties described in the dojo.__ioArgs type, apply
-		//		to this type. The following additional properties are allowed
-		//		for dojo.io.iframe.send():
-		//	method: String?
-		//		The HTTP method to use. "GET" or "POST" are the only supported
-		//		values.  It will try to read the value from the form node's
-		//		method, then try this argument. If neither one exists, then it
-		//		defaults to POST.
-		//	handleAs: String?
-		//		Specifies what format the result data should be given to the
-		//		load/handle callback. Valid values are: text, html, xml, json,
-		//		javascript. IMPORTANT: For all values EXCEPT html and xml, The
-		//		server response should be an HTML file with a textarea element.
-		//		The response data should be inside the textarea element. Using an
-		//		HTML document the only reliable, cross-browser way this
-		//		transport can know when the response has loaded. For the html
-		//		handleAs value, just return a normal HTML document.  NOTE: xml
-		//		is now supported with this transport (as of 1.1+); a known issue
-		//		is if the XML document in question is malformed, Internet Explorer
-		//		will throw an uncatchable error.
-		//	content: Object?
-		//		If "form" is one of the other args properties, then the content
-		//		object properties become hidden form form elements. For
-		//		instance, a content object of {name1 : "value1"} is converted
-		//		to a hidden form element with a name of "name1" and a value of
-		//		"value1". If there is not a "form" property, then the content
-		//		object is converted into a name=value&name=value string, by
-		//		using dojo.objectToQuery().
-		this.method = method;
-		this.handleAs = handleAs;
-		this.content = content;
-	}
-});
-=====*/
-
-dojo.io.iframe = {
-	// summary:
-	//		Sends an Ajax I/O call using and Iframe (for instance, to upload files)
-	
-	create: function(/*String*/fname, /*String*/onloadstr, /*String?*/uri){
-		//	summary:
-		//		Creates a hidden iframe in the page. Used mostly for IO
-		//		transports.  You do not need to call this to start a
-		//		dojo.io.iframe request. Just call send().
-		//	fname: String
-		//		The name of the iframe. Used for the name attribute on the
-		//		iframe.
-		//	onloadstr: String
-		//		A string of JavaScript that will be executed when the content
-		//		in the iframe loads.
-		//	uri: String
-		//		The value of the src attribute on the iframe element. If a
-		//		value is not given, then dojo/resources/blank.html will be
-		//		used.
-		if(window[fname]){ return window[fname]; }
-		if(window.frames[fname]){ return window.frames[fname]; }
-		var cframe = null;
-		var turi = uri;
-		if(!turi){
-			if(dojo.config["useXDomain"] && !dojo.config["dojoBlankHtmlUrl"]){
-				console.warn("dojo.io.iframe.create: When using cross-domain Dojo builds,"
-					+ " please save dojo/resources/blank.html to your domain and set djConfig.dojoBlankHtmlUrl"
-					+ " to the path on your domain to blank.html");
-			}
-			turi = (dojo.config["dojoBlankHtmlUrl"]||dojo.moduleUrl("dojo", "resources/blank.html"));
-		}
-		var cframe = dojo.place(
-			'<iframe id="'+fname+'" name="'+fname+'" src="'+turi+'" onload="'+onloadstr+
-			'" style="position: absolute; left: 1px; top: 1px; height: 1px; width: 1px; visibility: hidden">',
-		dojo.body());
-
-		window[fname] = cframe;
-
-		return cframe;
-	},
-
-	setSrc: function(/*DOMNode*/iframe, /*String*/src, /*Boolean*/replace){
-		//summary:
-		//		Sets the URL that is loaded in an IFrame. The replace parameter
-		//		indicates whether location.replace() should be used when
-		//		changing the location of the iframe.
-		try{
-			if(!replace){
-				if(dojo.isWebKit){
-					iframe.location = src;
-				}else{
-					frames[iframe.name].location = src;
-				}
-			}else{
-				// Fun with DOM 0 incompatibilities!
-				var idoc;
-				if(dojo.isIE || dojo.isWebKit){
-					idoc = iframe.contentWindow.document;
-				}else{ //  if(d.isMozilla){
-					idoc = iframe.contentWindow;
-				}
-	
-				//For Safari (at least 2.0.3) and Opera, if the iframe
-				//has just been created but it doesn't have content
-				//yet, then iframe.document may be null. In that case,
-				//use iframe.location and return.
-				if(!idoc){
-					iframe.location = src;
-					return;
-				}else{
-					idoc.location.replace(src);
-				}
-			}
-		}catch(e){
-			console.log("dojo.io.iframe.setSrc: ", e);
-		}
-	},
-
-	doc: function(/*DOMNode*/iframeNode){
-		//summary: Returns the document object associated with the iframe DOM Node argument.
-		var doc = iframeNode.contentDocument || // W3
-			(
-				(
-					(iframeNode.name) && (iframeNode.document) &&
-					(dojo.doc.getElementsByTagName("iframe")[iframeNode.name].contentWindow) &&
-					(dojo.doc.getElementsByTagName("iframe")[iframeNode.name].contentWindow.document)
-				)
-			) ||  // IE
-			(
-				(iframeNode.name)&&(dojo.doc.frames[iframeNode.name])&&
-				(dojo.doc.frames[iframeNode.name].document)
-			) || null;
-		return doc;
-	},
-
-	send: function(/*dojo.io.iframe.__ioArgs*/args){
-		//summary:
-		//		Function that sends the request to the server.
-		//		This transport can only process one send() request at a time, so if send() is called
-		//multiple times, it will queue up the calls and only process one at a time.
-		if(!this["_frame"]){
-			this._frame = this.create(this._iframeName, dojo._scopeName + ".io.iframe._iframeOnload();");
-		}
-
-		//Set up the deferred.
-		var dfd = dojo._ioSetArgs(
-			args,
-			function(/*Deferred*/dfd){
-				//summary: canceller function for dojo._ioSetArgs call.
-				dfd.canceled = true;
-				dfd.ioArgs._callNext();
-			},
-			function(/*Deferred*/dfd){
-				//summary: okHandler function for dojo._ioSetArgs call.
-				var value = null;
-				try{
-					var ioArgs = dfd.ioArgs;
-					var dii = dojo.io.iframe;
-					var ifd = dii.doc(dii._frame);
-					var handleAs = ioArgs.handleAs;
-
-					//Assign correct value based on handleAs value.
-					value = ifd; //html
-					if(handleAs != "html"){
-						if(handleAs == "xml"){
-							//	FF, Saf 3+ and Opera all seem to be fine with ifd being xml.  We have to
-							//	do it manually for IE6-8.  Refs #6334.
-							if(dojo.isIE < 9 || (dojo.isIE && dojo.isQuirks)){
-								dojo.query("a", dii._frame.contentWindow.document.documentElement).orphan();
-								var xmlText=(dii._frame.contentWindow.document).documentElement.innerText;
-								xmlText=xmlText.replace(/>\s+</g, "><");
-								xmlText=dojo.trim(xmlText);
-								//Reusing some code in base dojo for handling XML content.  Simpler and keeps
-								//Core from duplicating the effort needed to locate the XML Parser on IE.
-								var fauxXhr = { responseText: xmlText };
-								value = dojo._contentHandlers["xml"](fauxXhr); // DOMDocument
-							}
-						}else{
-							value = ifd.getElementsByTagName("textarea")[0].value; //text
-							if(handleAs == "json"){
-								value = dojo.fromJson(value); //json
-							}else if(handleAs == "javascript"){
-								value = dojo.eval(value); //javascript
-							}
-						}
-					}
-				}catch(e){
-					value = e;
-				}finally{
-					ioArgs._callNext();
-				}
-				return value;
-			},
-			function(/*Error*/error, /*Deferred*/dfd){
-				//summary: errHandler function for dojo._ioSetArgs call.
-				dfd.ioArgs._hasError = true;
-				dfd.ioArgs._callNext();
-				return error;
-			}
-		);
-
-		//Set up a function that will fire the next iframe request. Make sure it only
-		//happens once per deferred.
-		dfd.ioArgs._callNext = function(){
-			if(!this["_calledNext"]){
-				this._calledNext = true;
-				dojo.io.iframe._currentDfd = null;
-				dojo.io.iframe._fireNextRequest();
-			}
-		};
-
-		this._dfdQueue.push(dfd);
-		this._fireNextRequest();
-		
-		//Add it the IO watch queue, to get things like timeout support.
-		dojo._ioWatch(
-			dfd,
-			function(/*Deferred*/dfd){
-				//validCheck
-				return !dfd.ioArgs["_hasError"];
-			},
-			function(dfd){
-				//ioCheck
-				return (!!dfd.ioArgs["_finished"]);
-			},
-			function(dfd){
-				//resHandle
-				if(dfd.ioArgs._finished){
-					dfd.callback(dfd);
-				}else{
-					dfd.errback(new Error("Invalid dojo.io.iframe request state"));
-				}
-			}
-		);
-
-		return dfd;
-	},
-
-	_currentDfd: null,
-	_dfdQueue: [],
-	_iframeName: dojo._scopeName + "IoIframe",
-
-	_fireNextRequest: function(){
-		//summary: Internal method used to fire the next request in the bind queue.
-		try{
-			if((this._currentDfd)||(this._dfdQueue.length == 0)){ return; }
-			//Find next deferred, skip the canceled ones.
-			do{
-				var dfd = this._currentDfd = this._dfdQueue.shift();
-			} while(dfd && dfd.canceled && this._dfdQueue.length);
-
-			//If no more dfds, cancel.
-			if(!dfd || dfd.canceled){
-				this._currentDfd =  null;
-				return;
-			}
-
-			var ioArgs = dfd.ioArgs;
-			var args = ioArgs.args;
-
-			ioArgs._contentToClean = [];
-			var fn = dojo.byId(args["form"]);
-			var content = args["content"] || {};
-			if(fn){
-				if(content){
-					// if we have things in content, we need to add them to the form
-					// before submission
-					var pHandler = function(name, value) {
-						dojo.create("input", {type: "hidden", name: name, value: value}, fn);
-						ioArgs._contentToClean.push(name);
-					};
-					for(var x in content){
-						var val = content[x];
-						if(dojo.isArray(val) && val.length > 1){
-							var i;
-							for (i = 0; i < val.length; i++) {
-								pHandler(x,val[i]);
-							}
-						}else{
-							if(!fn[x]){
-								pHandler(x,val);
-							}else{
-								fn[x].value = val;
-							}
-						}
-					}
-				}
-				//IE requires going through getAttributeNode instead of just getAttribute in some form cases,
-				//so use it for all.  See #2844
-				var actnNode = fn.getAttributeNode("action");
-				var mthdNode = fn.getAttributeNode("method");
-				var trgtNode = fn.getAttributeNode("target");
-				if(args["url"]){
-					ioArgs._originalAction = actnNode ? actnNode.value : null;
-					if(actnNode){
-						actnNode.value = args.url;
-					}else{
-						fn.setAttribute("action",args.url);
-					}
-				}
-				if(!mthdNode || !mthdNode.value){
-					if(mthdNode){
-						mthdNode.value= (args["method"]) ? args["method"] : "post";
-					}else{
-						fn.setAttribute("method", (args["method"]) ? args["method"] : "post");
-					}
-				}
-				ioArgs._originalTarget = trgtNode ? trgtNode.value: null;
-				if(trgtNode){
-					trgtNode.value = this._iframeName;
-				}else{
-					fn.setAttribute("target", this._iframeName);
-				}
-				fn.target = this._iframeName;
-				dojo._ioNotifyStart(dfd);
-				fn.submit();
-			}else{
-				// otherwise we post a GET string by changing URL location for the
-				// iframe
-				var tmpUrl = args.url + (args.url.indexOf("?") > -1 ? "&" : "?") + ioArgs.query;
-				dojo._ioNotifyStart(dfd);
-				this.setSrc(this._frame, tmpUrl, true);
-			}
-		}catch(e){
-			dfd.errback(e);
-		}
-	},
-
-	_iframeOnload: function(){
-		var dfd = this._currentDfd;
-		if(!dfd){
-			this._fireNextRequest();
-			return;
-		}
-
-		var ioArgs = dfd.ioArgs;
-		var args = ioArgs.args;
-		var fNode = dojo.byId(args.form);
-	
-		if(fNode){
-			// remove all the hidden content inputs
-			var toClean = ioArgs._contentToClean;
-			for(var i = 0; i < toClean.length; i++) {
-				var key = toClean[i];
-				//Need to cycle over all nodes since we may have added
-				//an array value which means that more than one node could
-				//have the same .name value.
-				for(var j = 0; j < fNode.childNodes.length; j++){
-					var chNode = fNode.childNodes[j];
-					if(chNode.name == key){
-						dojo.destroy(chNode);
-						break;
-					}
-				}
-			}
-
-			// restore original action + target
-			if(ioArgs["_originalAction"]){
-				fNode.setAttribute("action", ioArgs._originalAction);
-			}
-			if(ioArgs["_originalTarget"]){
-				fNode.setAttribute("target", ioArgs._originalTarget);
-				fNode.target = ioArgs._originalTarget;
-			}
-		}
-
-		ioArgs._finished = true;
-	}
-};
-
-}
-
-if(!dojo._hasResource["dojo.hash"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.hash"] = true;
-dojo.provide("dojo.hash");
-
-
-//TODOC: where does this go?
-// summary:
-//		Methods for monitoring and updating the hash in the browser URL.
-//
-// example:
-//		dojo.subscribe("/dojo/hashchange", context, callback);
-//
-//		function callback (hashValue){
-//			// do something based on the hash value.
-// 		}
-
-(function(){
-	dojo.hash = function(/* String? */ hash, /* Boolean? */ replace){
-		//	summary:
-		//		Gets or sets the hash string.
-		//	description:
-		//		Handles getting and setting of location.hash.
-		//		 - If no arguments are passed, acts as a getter.
-		//		 - If a string is passed, acts as a setter.
-		//	hash:
-		//		the hash is set - #string.
-		//	replace:
-		//		If true, updates the hash value in the current history
-		//		state instead of creating a new history state.
-		//	returns:
-		//		when used as a getter, returns the current hash string.
-		//		when used as a setter, returns the new hash string.
-		
-		// getter
-		if(!arguments.length){
-			return _getHash();
-		}
-		// setter
-		if(hash.charAt(0) == "#"){
-			hash = hash.substring(1);
-		}
-		if(replace){
-			_replace(hash);
-		}else{
-			location.href = "#" + hash;
-		}
-		return hash; // String
-	};
-
-	// Global vars
-	var _recentHash, _ieUriMonitor, _connect,
-		_pollFrequency = dojo.config.hashPollFrequency || 100;
-
-	//Internal functions
-	function _getSegment(str, delimiter){
-		var i = str.indexOf(delimiter);
-		return (i >= 0) ? str.substring(i+1) : "";
-	}
-	
-	function _getHash(){
-		return _getSegment(location.href, "#");
-	}
-
-	function _dispatchEvent(){
-		dojo.publish("/dojo/hashchange", [_getHash()]);
-	}
-
-	function _pollLocation(){
-		if(_getHash() === _recentHash){
-			return;
-		}
-		_recentHash = _getHash();
-		_dispatchEvent();
-	}
-	
-	function _replace(hash){
-		if(_ieUriMonitor){
-			if(_ieUriMonitor.isTransitioning()){
-				setTimeout(dojo.hitch(null,_replace,hash), _pollFrequency);
-				return;
-			}
-			var href = _ieUriMonitor.iframe.location.href;
-			var index = href.indexOf('?');
-			// main frame will detect and update itself
-			_ieUriMonitor.iframe.location.replace(href.substring(0, index) + "?" + hash);
-			return;
-		}
-		location.replace("#"+hash);
-		!_connect && _pollLocation();
-	}
-
-	function IEUriMonitor(){
-		// summary:
-		//		Determine if the browser's URI has changed or if the user has pressed the
-		//		back or forward button. If so, call _dispatchEvent.
-		//
-		//	description:
-		//		IE doesn't add changes to the URI's hash into the history unless the hash
-		//		value corresponds to an actual named anchor in the document. To get around
-		//      this IE difference, we use a background IFrame to maintain a back-forward
-		//		history, by updating the IFrame's query string to correspond to the
-		//		value of the main browser location's hash value.
-		//
-		//		E.g. if the value of the browser window's location changes to
-		//
-		//		#action=someAction
-		//
-		//		... then we'd update the IFrame's source to:
-		//
-		//		?action=someAction
-		//
-		//		This design leads to a somewhat complex state machine, which is
-		//		described below:
-		//
-		//		s1: Stable state - neither the window's location has changed nor
-		//			has the IFrame's location. Note that this is the 99.9% case, so
-		//			we optimize for it.
-		//			Transitions: s1, s2, s3
-		//		s2: Window's location changed - when a user clicks a hyperlink or
-		//			code programmatically changes the window's URI.
-		//			Transitions: s4
-		//		s3: Iframe's location changed as a result of user pressing back or
-		//			forward - when the user presses back or forward, the location of
-		//			the background's iframe changes to the previous or next value in
-		//			its history.
-		//			Transitions: s1
-		//		s4: IEUriMonitor has programmatically changed the location of the
-		//			background iframe, but it's location hasn't yet changed. In this
-		//			case we do nothing because we need to wait for the iframe's
-		//			location to reflect its actual state.
-		//			Transitions: s4, s5
-		//		s5:	IEUriMonitor has programmatically changed the location of the
-		//			background iframe, and the iframe's location has caught up with
-		//			reality. In this case we need to transition to s1.
-		//			Transitions: s1
-		//
-		//		The hashchange event is always dispatched on the transition back to s1.
-		//
-
-		// create and append iframe
-		var ifr = document.createElement("iframe"),
-			IFRAME_ID = "dojo-hash-iframe",
-			ifrSrc = dojo.config.dojoBlankHtmlUrl || dojo.moduleUrl("dojo", "resources/blank.html");
-
-		if(dojo.config.useXDomain && !dojo.config.dojoBlankHtmlUrl){
-			console.warn("dojo.hash: When using cross-domain Dojo builds,"
-				+ " please save dojo/resources/blank.html to your domain and set djConfig.dojoBlankHtmlUrl"
-				+ " to the path on your domain to blank.html");
-		}
-
-		ifr.id = IFRAME_ID;
-		ifr.src = ifrSrc + "?" + _getHash();
-		ifr.style.display = "none";
-		document.body.appendChild(ifr);
-
-		this.iframe = dojo.global[IFRAME_ID];
-		var recentIframeQuery, transitioning, expectedIFrameQuery, docTitle, ifrOffline,
-			iframeLoc = this.iframe.location;
-
-		function resetState(){
-			_recentHash = _getHash();
-			recentIframeQuery = ifrOffline ? _recentHash : _getSegment(iframeLoc.href, "?");
-			transitioning = false;
-			expectedIFrameQuery = null;
-		}
-
-		this.isTransitioning = function(){
-			return transitioning;
-		};
-		
-		this.pollLocation = function(){
-			if(!ifrOffline) {
-				try{
-					//see if we can access the iframe's location without a permission denied error
-					var iframeSearch = _getSegment(iframeLoc.href, "?");
-					//good, the iframe is same origin (no thrown exception)
-					if(document.title != docTitle){ //sync title of main window with title of iframe.
-						docTitle = this.iframe.document.title = document.title;
-					}
-				}catch(e){
-					//permission denied - server cannot be reached.
-					ifrOffline = true;
-					console.error("dojo.hash: Error adding history entry. Server unreachable.");
-				}
-			}
-			var hash = _getHash();
-			if(transitioning && _recentHash === hash){
-				// we're in an iframe transition (s4 or s5)
-				if(ifrOffline || iframeSearch === expectedIFrameQuery){
-					// s5 (iframe caught up to main window or iframe offline), transition back to s1
-					resetState();
-					_dispatchEvent();
-				}else{
-					// s4 (waiting for iframe to catch up to main window)
-					setTimeout(dojo.hitch(this,this.pollLocation),0);
-					return;
-				}
-			}else if(_recentHash === hash && (ifrOffline || recentIframeQuery === iframeSearch)){
-				// we're in stable state (s1, iframe query == main window hash), do nothing
-			}else{
-				// the user has initiated a URL change somehow.
-				// sync iframe query <-> main window hash
-				if(_recentHash !== hash){
-					// s2 (main window location changed), set iframe url and transition to s4
-					_recentHash = hash;
-					transitioning = true;
-					expectedIFrameQuery = hash;
-					ifr.src = ifrSrc + "?" + expectedIFrameQuery;
-					ifrOffline = false;	//we're updating the iframe src - set offline to false so we can check again on next poll.
-					setTimeout(dojo.hitch(this,this.pollLocation),0); //yielded transition to s4 while iframe reloads.
-					return;
-				}else if(!ifrOffline){
-					// s3 (iframe location changed via back/forward button), set main window url and transition to s1.
-					location.href = "#" + iframeLoc.search.substring(1);
-					resetState();
-					_dispatchEvent();
-				}
-			}
-			setTimeout(dojo.hitch(this,this.pollLocation), _pollFrequency);
-		};
-		resetState(); // initialize state (transition to s1)
-		setTimeout(dojo.hitch(this,this.pollLocation), _pollFrequency);
-	}
-	dojo.addOnLoad(function(){
-		if("onhashchange" in dojo.global && (!dojo.isIE || (dojo.isIE >= 8 && document.compatMode != "BackCompat"))){	//need this IE browser test because "onhashchange" exists in IE8 in IE7 mode
-			_connect = dojo.connect(dojo.global,"onhashchange",_dispatchEvent);
-		}else{
-			if(document.addEventListener){ // Non-IE
-				_recentHash = _getHash();
-				setInterval(_pollLocation, _pollFrequency); //Poll the window location for changes
-			}else if(document.attachEvent){ // IE7-
-				//Use hidden iframe in versions of IE that don't have onhashchange event
-				_ieUriMonitor = new IEUriMonitor();
-			}
-			// else non-supported browser, do nothing.
-		}
-	});
-})();
-
-}
-
-if(!dojo._hasResource["dojo.data.util.filter"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.data.util.filter"] = true;
-dojo.provide("dojo.data.util.filter");
-
-dojo.getObject("data.util.filter", true, dojo);
-
-dojo.data.util.filter.patternToRegExp = function(/*String*/pattern, /*boolean?*/ ignoreCase){
-	//	summary:
-	//		Helper function to convert a simple pattern to a regular expression for matching.
-	//	description:
-	//		Returns a regular expression object that conforms to the defined conversion rules.
-	//		For example:
-	//			ca*   -> /^ca.*$/
-	//			*ca*  -> /^.*ca.*$/
-	//			*c\*a*  -> /^.*c\*a.*$/
-	//			*c\*a?*  -> /^.*c\*a..*$/
-	//			and so on.
-	//
-	//	pattern: string
-	//		A simple matching pattern to convert that follows basic rules:
-	//			* Means match anything, so ca* means match anything starting with ca
-	//			? Means match single character.  So, b?b will match to bob and bab, and so on.
-	//      	\ is an escape character.  So for example, \* means do not treat * as a match, but literal character *.
-	//				To use a \ as a character in the string, it must be escaped.  So in the pattern it should be
-	//				represented by \\ to be treated as an ordinary \ character instead of an escape.
-	//
-	//	ignoreCase:
-	//		An optional flag to indicate if the pattern matching should be treated as case-sensitive or not when comparing
-	//		By default, it is assumed case sensitive.
-
-	var rxp = "^";
-	var c = null;
-	for(var i = 0; i < pattern.length; i++){
-		c = pattern.charAt(i);
-		switch(c){
-			case '\\':
-				rxp += c;
-				i++;
-				rxp += pattern.charAt(i);
-				break;
-			case '*':
-				rxp += ".*"; break;
-			case '?':
-				rxp += "."; break;
-			case '$':
-			case '^':
-			case '/':
-			case '+':
-			case '.':
-			case '|':
-			case '(':
-			case ')':
-			case '{':
-			case '}':
-			case '[':
-			case ']':
-				rxp += "\\"; //fallthrough
-			default:
-				rxp += c;
-		}
-	}
-	rxp += "$";
-	if(ignoreCase){
-		return new RegExp(rxp,"mi"); //RegExp
-	}else{
-		return new RegExp(rxp,"m"); //RegExp
-	}
-	
-};
-
-}
-
-if(!dojo._hasResource["dojo.data.util.sorter"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.data.util.sorter"] = true;
-dojo.provide("dojo.data.util.sorter");
-
-dojo.getObject("data.util.sorter", true, dojo);
-
-dojo.data.util.sorter.basicComparator = function(	/*anything*/ a,
-													/*anything*/ b){
-	//	summary:
-	//		Basic comparision function that compares if an item is greater or less than another item
-	//	description:
-	//		returns 1 if a > b, -1 if a < b, 0 if equal.
-	//		'null' values (null, undefined) are treated as larger values so that they're pushed to the end of the list.
-	//		And compared to each other, null is equivalent to undefined.
-	
-	//null is a problematic compare, so if null, we set to undefined.
-	//Makes the check logic simple, compact, and consistent
-	//And (null == undefined) === true, so the check later against null
-	//works for undefined and is less bytes.
-	var r = -1;
-	if(a === null){
-		a = undefined;
-	}
-	if(b === null){
-		b = undefined;
-	}
-	if(a == b){
-		r = 0;
-	}else if(a > b || a == null){
-		r = 1;
-	}
-	return r; //int {-1,0,1}
-};
-
-dojo.data.util.sorter.createSortFunction = function(	/* attributes array */sortSpec,
-														/*dojo.data.core.Read*/ store){
-	//	summary:
-	//		Helper function to generate the sorting function based off the list of sort attributes.
-	//	description:
-	//		The sort function creation will look for a property on the store called 'comparatorMap'.  If it exists
-	//		it will look in the mapping for comparisons function for the attributes.  If one is found, it will
-	//		use it instead of the basic comparator, which is typically used for strings, ints, booleans, and dates.
-	//		Returns the sorting function for this particular list of attributes and sorting directions.
-	//
-	//	sortSpec: array
-	//		A JS object that array that defines out what attribute names to sort on and whether it should be descenting or asending.
-	//		The objects should be formatted as follows:
-	//		{
-	//			attribute: "attributeName-string" || attribute,
-	//			descending: true|false;   // Default is false.
-	//		}
-	//	store: object
-	//		The datastore object to look up item values from.
-	//
-	var sortFunctions=[];
-
-	function createSortFunction(attr, dir, comp, s){
-		//Passing in comp and s (comparator and store), makes this
-		//function much faster.
-		return function(itemA, itemB){
-			var a = s.getValue(itemA, attr);
-			var b = s.getValue(itemB, attr);
-			return dir * comp(a,b); //int
-		};
-	}
-	var sortAttribute;
-	var map = store.comparatorMap;
-	var bc = dojo.data.util.sorter.basicComparator;
-	for(var i = 0; i < sortSpec.length; i++){
-		sortAttribute = sortSpec[i];
-		var attr = sortAttribute.attribute;
-		if(attr){
-			var dir = (sortAttribute.descending) ? -1 : 1;
-			var comp = bc;
-			if(map){
-				if(typeof attr !== "string" && ("toString" in attr)){
-					 attr = attr.toString();
-				}
-				comp = map[attr] || bc;
-			}
-			sortFunctions.push(createSortFunction(attr,
-				dir, comp, store));
-		}
-	}
-	return function(rowA, rowB){
-		var i=0;
-		while(i < sortFunctions.length){
-			var ret = sortFunctions[i++](rowA, rowB);
-			if(ret !== 0){
-				return ret;//int
-			}
-		}
-		return 0; //int
-	}; // Function
-};
-
-}
-
-if(!dojo._hasResource["dojo.data.util.simpleFetch"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.data.util.simpleFetch"] = true;
-dojo.provide("dojo.data.util.simpleFetch");
-
-
-dojo.getObject("data.util.simpleFetch", true, dojo);
-
-dojo.data.util.simpleFetch.fetch = function(/* Object? */ request){
-	//	summary:
-	//		The simpleFetch mixin is designed to serve as a set of function(s) that can
-	//		be mixed into other datastore implementations to accelerate their development.
-	//		The simpleFetch mixin should work well for any datastore that can respond to a _fetchItems()
-	//		call by returning an array of all the found items that matched the query.  The simpleFetch mixin
-	//		is not designed to work for datastores that respond to a fetch() call by incrementally
-	//		loading items, or sequentially loading partial batches of the result
-	//		set.  For datastores that mixin simpleFetch, simpleFetch
-	//		implements a fetch method that automatically handles eight of the fetch()
-	//		arguments -- onBegin, onItem, onComplete, onError, start, count, sort and scope
-	//		The class mixing in simpleFetch should not implement fetch(),
-	//		but should instead implement a _fetchItems() method.  The _fetchItems()
-	//		method takes three arguments, the keywordArgs object that was passed
-	//		to fetch(), a callback function to be called when the result array is
-	//		available, and an error callback to be called if something goes wrong.
-	//		The _fetchItems() method should ignore any keywordArgs parameters for
-	//		start, count, onBegin, onItem, onComplete, onError, sort, and scope.
-	//		The _fetchItems() method needs to correctly handle any other keywordArgs
-	//		parameters, including the query parameter and any optional parameters
-	//		(such as includeChildren).  The _fetchItems() method should create an array of
-	//		result items and pass it to the fetchHandler along with the original request object
-	//		-- or, the _fetchItems() method may, if it wants to, create an new request object
-	//		with other specifics about the request that are specific to the datastore and pass
-	//		that as the request object to the handler.
-	//
-	//		For more information on this specific function, see dojo.data.api.Read.fetch()
-	request = request || {};
-	if(!request.store){
-		request.store = this;
-	}
-	var self = this;
-
-	var _errorHandler = function(errorData, requestObject){
-		if(requestObject.onError){
-			var scope = requestObject.scope || dojo.global;
-			requestObject.onError.call(scope, errorData, requestObject);
-		}
-	};
-
-	var _fetchHandler = function(items, requestObject){
-		var oldAbortFunction = requestObject.abort || null;
-		var aborted = false;
-
-		var startIndex = requestObject.start?requestObject.start:0;
-		var endIndex = (requestObject.count && (requestObject.count !== Infinity))?(startIndex + requestObject.count):items.length;
-
-		requestObject.abort = function(){
-			aborted = true;
-			if(oldAbortFunction){
-				oldAbortFunction.call(requestObject);
-			}
-		};
-
-		var scope = requestObject.scope || dojo.global;
-		if(!requestObject.store){
-			requestObject.store = self;
-		}
-		if(requestObject.onBegin){
-			requestObject.onBegin.call(scope, items.length, requestObject);
-		}
-		if(requestObject.sort){
-			items.sort(dojo.data.util.sorter.createSortFunction(requestObject.sort, self));
-		}
-		if(requestObject.onItem){
-			for(var i = startIndex; (i < items.length) && (i < endIndex); ++i){
-				var item = items[i];
-				if(!aborted){
-					requestObject.onItem.call(scope, item, requestObject);
-				}
-			}
-		}
-		if(requestObject.onComplete && !aborted){
-			var subset = null;
-			if(!requestObject.onItem){
-				subset = items.slice(startIndex, endIndex);
-			}
-			requestObject.onComplete.call(scope, subset, requestObject);
-		}
-	};
-	this._fetchItems(request, _fetchHandler, _errorHandler);
-	return request;	// Object
-};
-
-}
-
-if(!dojo._hasResource["dojo.date.stamp"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.date.stamp"] = true;
-dojo.provide("dojo.date.stamp");
-
-dojo.getObject("date.stamp", true, dojo);
-
-// Methods to convert dates to or from a wire (string) format using well-known conventions
-
-dojo.date.stamp.fromISOString = function(/*String*/formattedString, /*Number?*/defaultTime){
-	//	summary:
-	//		Returns a Date object given a string formatted according to a subset of the ISO-8601 standard.
-	//
-	//	description:
-	//		Accepts a string formatted according to a profile of ISO8601 as defined by
-	//		[RFC3339](http://www.ietf.org/rfc/rfc3339.txt), except that partial input is allowed.
-	//		Can also process dates as specified [by the W3C](http://www.w3.org/TR/NOTE-datetime)
-	//		The following combinations are valid:
-	//
-	//			* dates only
-	//			|	* yyyy
-	//			|	* yyyy-MM
-	//			|	* yyyy-MM-dd
-	// 			* times only, with an optional time zone appended
-	//			|	* THH:mm
-	//			|	* THH:mm:ss
-	//			|	* THH:mm:ss.SSS
-	// 			* and "datetimes" which could be any combination of the above
-	//
-	//		timezones may be specified as Z (for UTC) or +/- followed by a time expression HH:mm
-	//		Assumes the local time zone if not specified.  Does not validate.  Improperly formatted
-	//		input may return null.  Arguments which are out of bounds will be handled
-	// 		by the Date constructor (e.g. January 32nd typically gets resolved to February 1st)
-	//		Only years between 100 and 9999 are supported.
-	//
-  	//	formattedString:
-	//		A string such as 2005-06-30T08:05:00-07:00 or 2005-06-30 or T08:05:00
-	//
-	//	defaultTime:
-	//		Used for defaults for fields omitted in the formattedString.
-	//		Uses 1970-01-01T00:00:00.0Z by default.
-
-	if(!dojo.date.stamp._isoRegExp){
-		dojo.date.stamp._isoRegExp =
-//TODO: could be more restrictive and check for 00-59, etc.
-			/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;
-	}
-
-	var match = dojo.date.stamp._isoRegExp.exec(formattedString),
-		result = null;
-
-	if(match){
-		match.shift();
-		if(match[1]){match[1]--;} // Javascript Date months are 0-based
-		if(match[6]){match[6] *= 1000;} // Javascript Date expects fractional seconds as milliseconds
-
-		if(defaultTime){
-			// mix in defaultTime.  Relatively expensive, so use || operators for the fast path of defaultTime === 0
-			defaultTime = new Date(defaultTime);
-			dojo.forEach(dojo.map(["FullYear", "Month", "Date", "Hours", "Minutes", "Seconds", "Milliseconds"], function(prop){
-				return defaultTime["get" + prop]();
-			}), function(value, index){
-				match[index] = match[index] || value;
-			});
-		}
-		result = new Date(match[0]||1970, match[1]||0, match[2]||1, match[3]||0, match[4]||0, match[5]||0, match[6]||0); //TODO: UTC defaults
-		if(match[0] < 100){
-			result.setFullYear(match[0] || 1970);
-		}
-
-		var offset = 0,
-			zoneSign = match[7] && match[7].charAt(0);
-		if(zoneSign != 'Z'){
-			offset = ((match[8] || 0) * 60) + (Number(match[9]) || 0);
-			if(zoneSign != '-'){ offset *= -1; }
-		}
-		if(zoneSign){
-			offset -= result.getTimezoneOffset();
-		}
-		if(offset){
-			result.setTime(result.getTime() + offset * 60000);
-		}
-	}
-
-	return result; // Date or null
-};
-
-/*=====
-	dojo.date.stamp.__Options = function(){
-		//	selector: String
-		//		"date" or "time" for partial formatting of the Date object.
-		//		Both date and time will be formatted by default.
-		//	zulu: Boolean
-		//		if true, UTC/GMT is used for a timezone
-		//	milliseconds: Boolean
-		//		if true, output milliseconds
-		this.selector = selector;
-		this.zulu = zulu;
-		this.milliseconds = milliseconds;
-	}
-=====*/
-
-dojo.date.stamp.toISOString = function(/*Date*/dateObject, /*dojo.date.stamp.__Options?*/options){
-	//	summary:
-	//		Format a Date object as a string according a subset of the ISO-8601 standard
-	//
-	//	description:
-	//		When options.selector is omitted, output follows [RFC3339](http://www.ietf.org/rfc/rfc3339.txt)
-	//		The local time zone is included as an offset from GMT, except when selector=='time' (time without a date)
-	//		Does not check bounds.  Only years between 100 and 9999 are supported.
-	//
-	//	dateObject:
-	//		A Date object
-
-	var _ = function(n){ return (n < 10) ? "0" + n : n; };
-	options = options || {};
-	var formattedDate = [],
-		getter = options.zulu ? "getUTC" : "get",
-		date = "";
-	if(options.selector != "time"){
-		var year = dateObject[getter+"FullYear"]();
-		date = ["0000".substr((year+"").length)+year, _(dateObject[getter+"Month"]()+1), _(dateObject[getter+"Date"]())].join('-');
-	}
-	formattedDate.push(date);
-	if(options.selector != "date"){
-		var time = [_(dateObject[getter+"Hours"]()), _(dateObject[getter+"Minutes"]()), _(dateObject[getter+"Seconds"]())].join(':');
-		var millis = dateObject[getter+"Milliseconds"]();
-		if(options.milliseconds){
-			time += "."+ (millis < 100 ? "0" : "") + _(millis);
-		}
-		if(options.zulu){
-			time += "Z";
-		}else if(options.selector != "time"){
-			var timezoneOffset = dateObject.getTimezoneOffset();
-			var absOffset = Math.abs(timezoneOffset);
-			time += (timezoneOffset > 0 ? "-" : "+") +
-				_(Math.floor(absOffset/60)) + ":" + _(absOffset%60);
-		}
-		formattedDate.push(time);
-	}
-	return formattedDate.join('T'); // String
-};
-
-}
-
-if(!dojo._hasResource["dojo.data.ItemFileReadStore"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.data.ItemFileReadStore"] = true;
-dojo.provide("dojo.data.ItemFileReadStore");
-
-
-
-
-
-dojo.declare("dojo.data.ItemFileReadStore", null,{
-	//	summary:
-	//		The ItemFileReadStore implements the dojo.data.api.Read API and reads
-	//		data from JSON files that have contents in this format --
-	//		{ items: [
-	//			{ name:'Kermit', color:'green', age:12, friends:['Gonzo', {_reference:{name:'Fozzie Bear'}}]},
-	//			{ name:'Fozzie Bear', wears:['hat', 'tie']},
-	//			{ name:'Miss Piggy', pets:'Foo-Foo'}
-	//		]}
-	//		Note that it can also contain an 'identifer' property that specified which attribute on the items
-	//		in the array of items that acts as the unique identifier for that item.
-	//
-	constructor: function(/* Object */ keywordParameters){
-		//	summary: constructor
-		//	keywordParameters: {url: String}
-		//	keywordParameters: {data: jsonObject}
-		//	keywordParameters: {typeMap: object)
-		//		The structure of the typeMap object is as follows:
-		//		{
-		//			type0: function || object,
-		//			type1: function || object,
-		//			...
-		//			typeN: function || object
-		//		}
-		//		Where if it is a function, it is assumed to be an object constructor that takes the
-		//		value of _value as the initialization parameters.  If it is an object, then it is assumed
-		//		to be an object of general form:
-		//		{
-		//			type: function, //constructor.
-		//			deserialize:	function(value) //The function that parses the value and constructs the object defined by type appropriately.
-		//		}
-	
-		this._arrayOfAllItems = [];
-		this._arrayOfTopLevelItems = [];
-		this._loadFinished = false;
-		this._jsonFileUrl = keywordParameters.url;
-		this._ccUrl = keywordParameters.url;
-		this.url = keywordParameters.url;
-		this._jsonData = keywordParameters.data;
-		this.data = null;
-		this._datatypeMap = keywordParameters.typeMap || {};
-		if(!this._datatypeMap['Date']){
-			//If no default mapping for dates, then set this as default.
-			//We use the dojo.date.stamp here because the ISO format is the 'dojo way'
-			//of generically representing dates.
-			this._datatypeMap['Date'] = {
-											type: Date,
-											deserialize: function(value){
-												return dojo.date.stamp.fromISOString(value);
-											}
-										};
-		}
-		this._features = {'dojo.data.api.Read':true, 'dojo.data.api.Identity':true};
-		this._itemsByIdentity = null;
-		this._storeRefPropName = "_S"; // Default name for the store reference to attach to every item.
-		this._itemNumPropName = "_0"; // Default Item Id for isItem to attach to every item.
-		this._rootItemPropName = "_RI"; // Default Item Id for isItem to attach to every item.
-		this._reverseRefMap = "_RRM"; // Default attribute for constructing a reverse reference map for use with reference integrity
-		this._loadInProgress = false; //Got to track the initial load to prevent duelling loads of the dataset.
-		this._queuedFetches = [];
-		if(keywordParameters.urlPreventCache !== undefined){
-			this.urlPreventCache = keywordParameters.urlPreventCache?true:false;
-		}
-		if(keywordParameters.hierarchical !== undefined){
-			this.hierarchical = keywordParameters.hierarchical?true:false;
-		}
-		if(keywordParameters.clearOnClose){
-			this.clearOnClose = true;
-		}
-		if("failOk" in keywordParameters){
-			this.failOk = keywordParameters.failOk?true:false;
-		}
-	},
-	
-	url: "",	// use "" rather than undefined for the benefit of the parser (#3539)
-
-	//Internal var, crossCheckUrl.  Used so that setting either url or _jsonFileUrl, can still trigger a reload
-	//when clearOnClose and close is used.
-	_ccUrl: "",
-
-	data: null,	// define this so that the parser can populate it
-
-	typeMap: null, //Define so parser can populate.
-	
-	//Parameter to allow users to specify if a close call should force a reload or not.
-	//By default, it retains the old behavior of not clearing if close is called.  But
-	//if set true, the store will be reset to default state.  Note that by doing this,
-	//all item handles will become invalid and a new fetch must be issued.
-	clearOnClose: false,
-
-	//Parameter to allow specifying if preventCache should be passed to the xhrGet call or not when loading data from a url.
-	//Note this does not mean the store calls the server on each fetch, only that the data load has preventCache set as an option.
-	//Added for tracker: #6072
-	urlPreventCache: false,
-	
-	//Parameter for specifying that it is OK for the xhrGet call to fail silently.
-	failOk: false,
-
-	//Parameter to indicate to process data from the url as hierarchical
-	//(data items can contain other data items in js form).  Default is true
-	//for backwards compatibility.  False means only root items are processed
-	//as items, all child objects outside of type-mapped objects and those in
-	//specific reference format, are left straight JS data objects.
-	hierarchical: true,
-
-	_assertIsItem: function(/* item */ item){
-		//	summary:
-		//		This function tests whether the item passed in is indeed an item in the store.
-		//	item:
-		//		The item to test for being contained by the store.
-		if(!this.isItem(item)){
-			throw new Error("dojo.data.ItemFileReadStore: Invalid item argument.");
-		}
-	},
-
-	_assertIsAttribute: function(/* attribute-name-string */ attribute){
-		//	summary:
-		//		This function tests whether the item passed in is indeed a valid 'attribute' like type for the store.
-		//	attribute:
-		//		The attribute to test for being contained by the store.
-		if(typeof attribute !== "string"){
-			throw new Error("dojo.data.ItemFileReadStore: Invalid attribute argument.");
-		}
-	},
-
-	getValue: function(	/* item */ item,
-						/* attribute-name-string */ attribute,
-						/* value? */ defaultValue){
-		//	summary:
-		//		See dojo.data.api.Read.getValue()
-		var values = this.getValues(item, attribute);
-		return (values.length > 0)?values[0]:defaultValue; // mixed
-	},
-
-	getValues: function(/* item */ item,
-						/* attribute-name-string */ attribute){
-		//	summary:
-		//		See dojo.data.api.Read.getValues()
-
-		this._assertIsItem(item);
-		this._assertIsAttribute(attribute);
-		// Clone it before returning.  refs: #10474
-		return (item[attribute] || []).slice(0); // Array
-	},
-
-	getAttributes: function(/* item */ item){
-		//	summary:
-		//		See dojo.data.api.Read.getAttributes()
-		this._assertIsItem(item);
-		var attributes = [];
-		for(var key in item){
-			// Save off only the real item attributes, not the special id marks for O(1) isItem.
-			if((key !== this._storeRefPropName) && (key !== this._itemNumPropName) && (key !== this._rootItemPropName) && (key !== this._reverseRefMap)){
-				attributes.push(key);
-			}
-		}
-		return attributes; // Array
-	},
-
-	hasAttribute: function(	/* item */ item,
-							/* attribute-name-string */ attribute){
-		//	summary:
-		//		See dojo.data.api.Read.hasAttribute()
-		this._assertIsItem(item);
-		this._assertIsAttribute(attribute);
-		return (attribute in item);
-	},
-
-	containsValue: function(/* item */ item,
-							/* attribute-name-string */ attribute,
-							/* anything */ value){
-		//	summary:
-		//		See dojo.data.api.Read.containsValue()
-		var regexp = undefined;
-		if(typeof value === "string"){
-			regexp = dojo.data.util.filter.patternToRegExp(value, false);
-		}
-		return this._containsValue(item, attribute, value, regexp); //boolean.
-	},
-
-	_containsValue: function(	/* item */ item,
-								/* attribute-name-string */ attribute,
-								/* anything */ value,
-								/* RegExp?*/ regexp){
-		//	summary:
-		//		Internal function for looking at the values contained by the item.
-		//	description:
-		//		Internal function for looking at the values contained by the item.  This
-		//		function allows for denoting if the comparison should be case sensitive for
-		//		strings or not (for handling filtering cases where string case should not matter)
-		//
-		//	item:
-		//		The data item to examine for attribute values.
-		//	attribute:
-		//		The attribute to inspect.
-		//	value:
-		//		The value to match.
-		//	regexp:
-		//		Optional regular expression generated off value if value was of string type to handle wildcarding.
-		//		If present and attribute values are string, then it can be used for comparison instead of 'value'
-		return dojo.some(this.getValues(item, attribute), function(possibleValue){
-			if(possibleValue !== null && !dojo.isObject(possibleValue) && regexp){
-				if(possibleValue.toString().match(regexp)){
-					return true; // Boolean
-				}
-			}else if(value === possibleValue){
-				return true; // Boolean
-			}
-		});
-	},
-
-	isItem: function(/* anything */ something){
-		//	summary:
-		//		See dojo.data.api.Read.isItem()
-		if(something && something[this._storeRefPropName] === this){
-			if(this._arrayOfAllItems[something[this._itemNumPropName]] === something){
-				return true;
-			}
-		}
-		return false; // Boolean
-	},
-
-	isItemLoaded: function(/* anything */ something){
-		//	summary:
-		//		See dojo.data.api.Read.isItemLoaded()
-		return this.isItem(something); //boolean
-	},
-
-	loadItem: function(/* object */ keywordArgs){
-		//	summary:
-		//		See dojo.data.api.Read.loadItem()
-		this._assertIsItem(keywordArgs.item);
-	},
-
-	getFeatures: function(){
-		//	summary:
-		//		See dojo.data.api.Read.getFeatures()
-		return this._features; //Object
-	},
-
-	getLabel: function(/* item */ item){
-		//	summary:
-		//		See dojo.data.api.Read.getLabel()
-		if(this._labelAttr && this.isItem(item)){
-			return this.getValue(item,this._labelAttr); //String
-		}
-		return undefined; //undefined
-	},
-
-	getLabelAttributes: function(/* item */ item){
-		//	summary:
-		//		See dojo.data.api.Read.getLabelAttributes()
-		if(this._labelAttr){
-			return [this._labelAttr]; //array
-		}
-		return null; //null
-	},
-
-	_fetchItems: function(	/* Object */ keywordArgs,
-							/* Function */ findCallback,
-							/* Function */ errorCallback){
-		//	summary:
-		//		See dojo.data.util.simpleFetch.fetch()
-		var self = this,
-		    filter = function(requestArgs, arrayOfItems){
-			var items = [],
-			    i, key;
-			if(requestArgs.query){
-				var value,
-				    ignoreCase = requestArgs.queryOptions ? requestArgs.queryOptions.ignoreCase : false;
-
-				//See if there are any string values that can be regexp parsed first to avoid multiple regexp gens on the
-				//same value for each item examined.  Much more efficient.
-				var regexpList = {};
-				for(key in requestArgs.query){
-					value = requestArgs.query[key];
-					if(typeof value === "string"){
-						regexpList[key] = dojo.data.util.filter.patternToRegExp(value, ignoreCase);
-					}else if(value instanceof RegExp){
-						regexpList[key] = value;
-					}
-				}
-				for(i = 0; i < arrayOfItems.length; ++i){
-					var match = true;
-					var candidateItem = arrayOfItems[i];
-					if(candidateItem === null){
-						match = false;
-					}else{
-						for(key in requestArgs.query){
-							value = requestArgs.query[key];
-							if(!self._containsValue(candidateItem, key, value, regexpList[key])){
-								match = false;
-							}
-						}
-					}
-					if(match){
-						items.push(candidateItem);
-					}
-				}
-				findCallback(items, requestArgs);
-			}else{
-				// We want a copy to pass back in case the parent wishes to sort the array.
-				// We shouldn't allow resort of the internal list, so that multiple callers
-				// can get lists and sort without affecting each other.  We also need to
-				// filter out any null values that have been left as a result of deleteItem()
-				// calls in ItemFileWriteStore.
-				for(i = 0; i < arrayOfItems.length; ++i){
-					var item = arrayOfItems[i];
-					if(item !== null){
-						items.push(item);
-					}
-				}
-				findCallback(items, requestArgs);
-			}
-		};
-
-		if(this._loadFinished){
-			filter(keywordArgs, this._getItemsArray(keywordArgs.queryOptions));
-		}else{
-			//Do a check on the JsonFileUrl and crosscheck it.
-			//If it doesn't match the cross-check, it needs to be updated
-			//This allows for either url or _jsonFileUrl to he changed to
-			//reset the store load location.  Done this way for backwards
-			//compatibility.  People use _jsonFileUrl (even though officially
-			//private.
-			if(this._jsonFileUrl !== this._ccUrl){
-				dojo.deprecated("dojo.data.ItemFileReadStore: ",
-					"To change the url, set the url property of the store," +
-					" not _jsonFileUrl.  _jsonFileUrl support will be removed in 2.0");
-				this._ccUrl = this._jsonFileUrl;
-				this.url = this._jsonFileUrl;
-			}else if(this.url !== this._ccUrl){
-				this._jsonFileUrl = this.url;
-				this._ccUrl = this.url;
-			}
-
-			//See if there was any forced reset of data.
-			if(this.data != null){
-				this._jsonData = this.data;
-				this.data = null;
-			}
-
-			if(this._jsonFileUrl){
-				//If fetches come in before the loading has finished, but while
-				//a load is in progress, we have to defer the fetching to be
-				//invoked in the callback.
-				if(this._loadInProgress){
-					this._queuedFetches.push({args: keywordArgs, filter: filter});
-				}else{
-					this._loadInProgress = true;
-					var getArgs = {
-							url: self._jsonFileUrl,
-							handleAs: "json-comment-optional",
-							preventCache: this.urlPreventCache,
-							failOk: this.failOk
-						};
-					var getHandler = dojo.xhrGet(getArgs);
-					getHandler.addCallback(function(data){
-						try{
-							self._getItemsFromLoadedData(data);
-							self._loadFinished = true;
-							self._loadInProgress = false;
-							
-							filter(keywordArgs, self._getItemsArray(keywordArgs.queryOptions));
-							self._handleQueuedFetches();
-						}catch(e){
-							self._loadFinished = true;
-							self._loadInProgress = false;
-							errorCallback(e, keywordArgs);
-						}
-					});
-					getHandler.addErrback(function(error){
-						self._loadInProgress = false;
-						errorCallback(error, keywordArgs);
-					});
-
-					//Wire up the cancel to abort of the request
-					//This call cancel on the deferred if it hasn't been called
-					//yet and then will chain to the simple abort of the
-					//simpleFetch keywordArgs
-					var oldAbort = null;
-					if(keywordArgs.abort){
-						oldAbort = keywordArgs.abort;
-					}
-					keywordArgs.abort = function(){
-						var df = getHandler;
-						if(df && df.fired === -1){
-							df.cancel();
-							df = null;
-						}
-						if(oldAbort){
-							oldAbort.call(keywordArgs);
-						}
-					};
-				}
-			}else if(this._jsonData){
-				try{
-					this._loadFinished = true;
-					this._getItemsFromLoadedData(this._jsonData);
-					this._jsonData = null;
-					filter(keywordArgs, this._getItemsArray(keywordArgs.queryOptions));
-				}catch(e){
-					errorCallback(e, keywordArgs);
-				}
-			}else{
-				errorCallback(new Error("dojo.data.ItemFileReadStore: No JSON source data was provided as either URL or a nested Javascript object."), keywordArgs);
-			}
-		}
-	},
-
-	_handleQueuedFetches: function(){
-		//	summary:
-		//		Internal function to execute delayed request in the store.
-		//Execute any deferred fetches now.
-		if(this._queuedFetches.length > 0){
-			for(var i = 0; i < this._queuedFetches.length; i++){
-				var fData = this._queuedFetches[i],
-				    delayedQuery = fData.args,
-				    delayedFilter = fData.filter;
-				if(delayedFilter){
-					delayedFilter(delayedQuery, this._getItemsArray(delayedQuery.queryOptions));
-				}else{
-					this.fetchItemByIdentity(delayedQuery);
-				}
-			}
-			this._queuedFetches = [];
-		}
-	},
-
-	_getItemsArray: function(/*object?*/queryOptions){
-		//	summary:
-		//		Internal function to determine which list of items to search over.
-		//	queryOptions: The query options parameter, if any.
-		if(queryOptions && queryOptions.deep){
-			return this._arrayOfAllItems;
-		}
-		return this._arrayOfTopLevelItems;
-	},
-
-	close: function(/*dojo.data.api.Request || keywordArgs || null */ request){
-		 //	summary:
-		 //		See dojo.data.api.Read.close()
-		 if(this.clearOnClose &&
-			this._loadFinished &&
-			!this._loadInProgress){
-			 //Reset all internalsback to default state.  This will force a reload
-			 //on next fetch.  This also checks that the data or url param was set
-			 //so that the store knows it can get data.  Without one of those being set,
-			 //the next fetch will trigger an error.
-
-			 if(((this._jsonFileUrl == "" || this._jsonFileUrl == null) &&
-				 (this.url == "" || this.url == null)
-				) && this.data == null){
-				 console.debug("dojo.data.ItemFileReadStore: WARNING!  Data reload " +
-					" information has not been provided." +
-					"  Please set 'url' or 'data' to the appropriate value before" +
-					" the next fetch");
-			 }
-			 this._arrayOfAllItems = [];
-			 this._arrayOfTopLevelItems = [];
-			 this._loadFinished = false;
-			 this._itemsByIdentity = null;
-			 this._loadInProgress = false;
-			 this._queuedFetches = [];
-		 }
-	},
-
-	_getItemsFromLoadedData: function(/* Object */ dataObject){
-		//	summary:
-		//		Function to parse the loaded data into item format and build the internal items array.
-		//	description:
-		//		Function to parse the loaded data into item format and build the internal items array.
-		//
-		//	dataObject:
-		//		The JS data object containing the raw data to convery into item format.
-		//
-		// 	returns: array
-		//		Array of items in store item format.
-		
-		// First, we define a couple little utility functions...
-		var addingArrays = false,
-		    self = this;
-		
-		function valueIsAnItem(/* anything */ aValue){
-			// summary:
-			//		Given any sort of value that could be in the raw json data,
-			//		return true if we should interpret the value as being an
-			//		item itself, rather than a literal value or a reference.
-			// example:
-			// 	|	false == valueIsAnItem("Kermit");
-			// 	|	false == valueIsAnItem(42);
-			// 	|	false == valueIsAnItem(new Date());
-			// 	|	false == valueIsAnItem({_type:'Date', _value:'1802-05-14'});
-			// 	|	false == valueIsAnItem({_reference:'Kermit'});
-			// 	|	true == valueIsAnItem({name:'Kermit', color:'green'});
-			// 	|	true == valueIsAnItem({iggy:'pop'});
-			// 	|	true == valueIsAnItem({foo:42});
-			var isItem = (
-				(aValue !== null) &&
-				(typeof aValue === "object") &&
-				(!dojo.isArray(aValue) || addingArrays) &&
-				(!dojo.isFunction(aValue)) &&
-				(aValue.constructor == Object || dojo.isArray(aValue)) &&
-				(typeof aValue._reference === "undefined") &&
-				(typeof aValue._type === "undefined") &&
-				(typeof aValue._value === "undefined") &&
-				self.hierarchical
-			);
-			return isItem;
-		}
-		
-		function addItemAndSubItemsToArrayOfAllItems(/* Item */ anItem){
-			self._arrayOfAllItems.push(anItem);
-			for(var attribute in anItem){
-				var valueForAttribute = anItem[attribute];
-				if(valueForAttribute){
-					if(dojo.isArray(valueForAttribute)){
-						var valueArray = valueForAttribute;
-						for(var k = 0; k < valueArray.length; ++k){
-							var singleValue = valueArray[k];
-							if(valueIsAnItem(singleValue)){
-								addItemAndSubItemsToArrayOfAllItems(singleValue);
-							}
-						}
-					}else{
-						if(valueIsAnItem(valueForAttribute)){
-							addItemAndSubItemsToArrayOfAllItems(valueForAttribute);
-						}
-					}
-				}
-			}
-		}
-
-		this._labelAttr = dataObject.label;
-
-		// We need to do some transformations to convert the data structure
-		// that we read from the file into a format that will be convenient
-		// to work with in memory.
-
-		// Step 1: Walk through the object hierarchy and build a list of all items
-		var i,
-		    item;
-		this._arrayOfAllItems = [];
-		this._arrayOfTopLevelItems = dataObject.items;
-
-		for(i = 0; i < this._arrayOfTopLevelItems.length; ++i){
-			item = this._arrayOfTopLevelItems[i];
-			if(dojo.isArray(item)){
-				addingArrays = true;
-			}
-			addItemAndSubItemsToArrayOfAllItems(item);
-			item[this._rootItemPropName]=true;
-		}
-
-		// Step 2: Walk through all the attribute values of all the items,
-		// and replace single values with arrays.  For example, we change this:
-		//		{ name:'Miss Piggy', pets:'Foo-Foo'}
-		// into this:
-		//		{ name:['Miss Piggy'], pets:['Foo-Foo']}
-		//
-		// We also store the attribute names so we can validate our store
-		// reference and item id special properties for the O(1) isItem
-		var allAttributeNames = {},
-		    key;
-
-		for(i = 0; i < this._arrayOfAllItems.length; ++i){
-			item = this._arrayOfAllItems[i];
-			for(key in item){
-				if(key !== this._rootItemPropName){
-					var value = item[key];
-					if(value !== null){
-						if(!dojo.isArray(value)){
-							item[key] = [value];
-						}
-					}else{
-						item[key] = [null];
-					}
-				}
-				allAttributeNames[key]=key;
-			}
-		}
-
-		// Step 3: Build unique property names to use for the _storeRefPropName and _itemNumPropName
-		// This should go really fast, it will generally never even run the loop.
-		while(allAttributeNames[this._storeRefPropName]){
-			this._storeRefPropName += "_";
-		}
-		while(allAttributeNames[this._itemNumPropName]){
-			this._itemNumPropName += "_";
-		}
-		while(allAttributeNames[this._reverseRefMap]){
-			this._reverseRefMap += "_";
-		}
-
-		// Step 4: Some data files specify an optional 'identifier', which is
-		// the name of an attribute that holds the identity of each item.
-		// If this data file specified an identifier attribute, then build a
-		// hash table of items keyed by the identity of the items.
-		var arrayOfValues;
-
-		var identifier = dataObject.identifier;
-		if(identifier){
-			this._itemsByIdentity = {};
-			this._features['dojo.data.api.Identity'] = identifier;
-			for(i = 0; i < this._arrayOfAllItems.length; ++i){
-				item = this._arrayOfAllItems[i];
-				arrayOfValues = item[identifier];
-				var identity = arrayOfValues[0];
-				if(!Object.hasOwnProperty.call(this._itemsByIdentity, identity)){
-					this._itemsByIdentity[identity] = item;
-				}else{
-					if(this._jsonFileUrl){
-						throw new Error("dojo.data.ItemFileReadStore:  The json data as specified by: [" + this._jsonFileUrl + "] is malformed.  Items within the list have identifier: [" + identifier + "].  Value collided: [" + identity + "]");
-					}else if(this._jsonData){
-						throw new Error("dojo.data.ItemFileReadStore:  The json data provided by the creation arguments is malformed.  Items within the list have identifier: [" + identifier + "].  Value collided: [" + identity + "]");
-					}
-				}
-			}
-		}else{
-			this._features['dojo.data.api.Identity'] = Number;
-		}
-
-		// Step 5: Walk through all the items, and set each item's properties
-		// for _storeRefPropName and _itemNumPropName, so that store.isItem() will return true.
-		for(i = 0; i < this._arrayOfAllItems.length; ++i){
-			item = this._arrayOfAllItems[i];
-			item[this._storeRefPropName] = this;
-			item[this._itemNumPropName] = i;
-		}
-
-		// Step 6: We walk through all the attribute values of all the items,
-		// looking for type/value literals and item-references.
-		//
-		// We replace item-references with pointers to items.  For example, we change:
-		//		{ name:['Kermit'], friends:[{_reference:{name:'Miss Piggy'}}] }
-		// into this:
-		//		{ name:['Kermit'], friends:[miss_piggy] }
-		// (where miss_piggy is the object representing the 'Miss Piggy' item).
-		//
-		// We replace type/value pairs with typed-literals.  For example, we change:
-		//		{ name:['Nelson Mandela'], born:[{_type:'Date', _value:'1918-07-18'}] }
-		// into this:
-		//		{ name:['Kermit'], born:(new Date(1918, 6, 18)) }
-		//
-		// We also generate the associate map for all items for the O(1) isItem function.
-		for(i = 0; i < this._arrayOfAllItems.length; ++i){
-			item = this._arrayOfAllItems[i]; // example: { name:['Kermit'], friends:[{_reference:{name:'Miss Piggy'}}] }
-			for(key in item){
-				arrayOfValues = item[key]; // example: [{_reference:{name:'Miss Piggy'}}]
-				for(var j = 0; j < arrayOfValues.length; ++j){
-					value = arrayOfValues[j]; // example: {_reference:{name:'Miss Piggy'}}
-					if(value !== null && typeof value == "object"){
-						if(("_type" in value) && ("_value" in value)){
-							var type = value._type; // examples: 'Date', 'Color', or 'ComplexNumber'
-							var mappingObj = this._datatypeMap[type]; // examples: Date, dojo.Color, foo.math.ComplexNumber, {type: dojo.Color, deserialize(value){ return new dojo.Color(value)}}
-							if(!mappingObj){
-								throw new Error("dojo.data.ItemFileReadStore: in the typeMap constructor arg, no object class was specified for the datatype '" + type + "'");
-							}else if(dojo.isFunction(mappingObj)){
-								arrayOfValues[j] = new mappingObj(value._value);
-							}else if(dojo.isFunction(mappingObj.deserialize)){
-								arrayOfValues[j] = mappingObj.deserialize(value._value);
-							}else{
-								throw new Error("dojo.data.ItemFileReadStore: Value provided in typeMap was neither a constructor, nor a an object with a deserialize function");
-							}
-						}
-						if(value._reference){
-							var referenceDescription = value._reference; // example: {name:'Miss Piggy'}
-							if(!dojo.isObject(referenceDescription)){
-								// example: 'Miss Piggy'
-								// from an item like: { name:['Kermit'], friends:[{_reference:'Miss Piggy'}]}
-								arrayOfValues[j] = this._getItemByIdentity(referenceDescription);
-							}else{
-								// example: {name:'Miss Piggy'}
-								// from an item like: { name:['Kermit'], friends:[{_reference:{name:'Miss Piggy'}}] }
-								for(var k = 0; k < this._arrayOfAllItems.length; ++k){
-									var candidateItem = this._arrayOfAllItems[k],
-									    found = true;
-									for(var refKey in referenceDescription){
-										if(candidateItem[refKey] != referenceDescription[refKey]){
-											found = false;
-										}
-									}
-									if(found){
-										arrayOfValues[j] = candidateItem;
-									}
-								}
-							}
-							if(this.referenceIntegrity){
-								var refItem = arrayOfValues[j];
-								if(this.isItem(refItem)){
-									this._addReferenceToMap(refItem, item, key);
-								}
-							}
-						}else if(this.isItem(value)){
-							//It's a child item (not one referenced through _reference).
-							//We need to treat this as a referenced item, so it can be cleaned up
-							//in a write store easily.
-							if(this.referenceIntegrity){
-								this._addReferenceToMap(value, item, key);
-							}
-						}
-					}
-				}
-			}
-		}
-	},
-
-	_addReferenceToMap: function(/*item*/ refItem, /*item*/ parentItem, /*string*/ attribute){
-		 //	summary:
-		 //		Method to add an reference map entry for an item and attribute.
-		 //	description:
-		 //		Method to add an reference map entry for an item and attribute. 		 //
-		 //	refItem:
-		 //		The item that is referenced.
-		 //	parentItem:
-		 //		The item that holds the new reference to refItem.
-		 //	attribute:
-		 //		The attribute on parentItem that contains the new reference.
-		 
-		 //Stub function, does nothing.  Real processing is in ItemFileWriteStore.
-	},
-
-	getIdentity: function(/* item */ item){
-		//	summary:
-		//		See dojo.data.api.Identity.getIdentity()
-		var identifier = this._features['dojo.data.api.Identity'];
-		if(identifier === Number){
-			return item[this._itemNumPropName]; // Number
-		}else{
-			var arrayOfValues = item[identifier];
-			if(arrayOfValues){
-				return arrayOfValues[0]; // Object || String
-			}
-		}
-		return null; // null
-	},
-
-	fetchItemByIdentity: function(/* Object */ keywordArgs){
-		//	summary:
-		//		See dojo.data.api.Identity.fetchItemByIdentity()
-
-		// Hasn't loaded yet, we have to trigger the load.
-		var item,
-		    scope;
-		if(!this._loadFinished){
-			var self = this;
-			//Do a check on the JsonFileUrl and crosscheck it.
-			//If it doesn't match the cross-check, it needs to be updated
-			//This allows for either url or _jsonFileUrl to he changed to
-			//reset the store load location.  Done this way for backwards
-			//compatibility.  People use _jsonFileUrl (even though officially
-			//private.
-			if(this._jsonFileUrl !== this._ccUrl){
-				dojo.deprecated("dojo.data.ItemFileReadStore: ",
-					"To change the url, set the url property of the store," +
-					" not _jsonFileUrl.  _jsonFileUrl support will be removed in 2.0");
-				this._ccUrl = this._jsonFileUrl;
-				this.url = this._jsonFileUrl;
-			}else if(this.url !== this._ccUrl){
-				this._jsonFileUrl = this.url;
-				this._ccUrl = this.url;
-			}
-			
-			//See if there was any forced reset of data.
-			if(this.data != null && this._jsonData == null){
-				this._jsonData = this.data;
-				this.data = null;
-			}
-
-			if(this._jsonFileUrl){
-
-				if(this._loadInProgress){
-					this._queuedFetches.push({args: keywordArgs});
-				}else{
-					this._loadInProgress = true;
-					var getArgs = {
-							url: self._jsonFileUrl,
-							handleAs: "json-comment-optional",
-							preventCache: this.urlPreventCache,
-							failOk: this.failOk
-					};
-					var getHandler = dojo.xhrGet(getArgs);
-					getHandler.addCallback(function(data){
-						var scope = keywordArgs.scope?keywordArgs.scope:dojo.global;
-						try{
-							self._getItemsFromLoadedData(data);
-							self._loadFinished = true;
-							self._loadInProgress = false;
-							item = self._getItemByIdentity(keywordArgs.identity);
-							if(keywordArgs.onItem){
-								keywordArgs.onItem.call(scope, item);
-							}
-							self._handleQueuedFetches();
-						}catch(error){
-							self._loadInProgress = false;
-							if(keywordArgs.onError){
-								keywordArgs.onError.call(scope, error);
-							}
-						}
-					});
-					getHandler.addErrback(function(error){
-						self._loadInProgress = false;
-						if(keywordArgs.onError){
-							var scope = keywordArgs.scope?keywordArgs.scope:dojo.global;
-							keywordArgs.onError.call(scope, error);
-						}
-					});
-				}
-
-			}else if(this._jsonData){
-				// Passed in data, no need to xhr.
-				self._getItemsFromLoadedData(self._jsonData);
-				self._jsonData = null;
-				self._loadFinished = true;
-				item = self._getItemByIdentity(keywordArgs.identity);
-				if(keywordArgs.onItem){
-					scope = keywordArgs.scope?keywordArgs.scope:dojo.global;
-					keywordArgs.onItem.call(scope, item);
-				}
-			}
-		}else{
-			// Already loaded.  We can just look it up and call back.
-			item = this._getItemByIdentity(keywordArgs.identity);
-			if(keywordArgs.onItem){
-				scope = keywordArgs.scope?keywordArgs.scope:dojo.global;
-				keywordArgs.onItem.call(scope, item);
-			}
-		}
-	},
-
-	_getItemByIdentity: function(/* Object */ identity){
-		//	summary:
-		//		Internal function to look an item up by its identity map.
-		var item = null;
-		if(this._itemsByIdentity &&
-		   Object.hasOwnProperty.call(this._itemsByIdentity, identity)){
-			item = this._itemsByIdentity[identity];
-		}else if (Object.hasOwnProperty.call(this._arrayOfAllItems, identity)){
-			item = this._arrayOfAllItems[identity];
-		}
-		if(item === undefined){
-			item = null;
-		}
-		return item; // Object
-	},
-
-	getIdentityAttributes: function(/* item */ item){
-		//	summary:
-		//		See dojo.data.api.Identity.getIdentityAttributes()
-		 
-		var identifier = this._features['dojo.data.api.Identity'];
-		if(identifier === Number){
-			// If (identifier === Number) it means getIdentity() just returns
-			// an integer item-number for each item.  The dojo.data.api.Identity
-			// spec says we need to return null if the identity is not composed
-			// of attributes
-			return null; // null
-		}else{
-			return [identifier]; // Array
-		}
-	},
-	
-	_forceLoad: function(){
-		//	summary:
-		//		Internal function to force a load of the store if it hasn't occurred yet.  This is required
-		//		for specific functions to work properly.
-		var self = this;
-		//Do a check on the JsonFileUrl and crosscheck it.
-		//If it doesn't match the cross-check, it needs to be updated
-		//This allows for either url or _jsonFileUrl to he changed to
-		//reset the store load location.  Done this way for backwards
-		//compatibility.  People use _jsonFileUrl (even though officially
-		//private.
-		if(this._jsonFileUrl !== this._ccUrl){
-			dojo.deprecated("dojo.data.ItemFileReadStore: ",
-				"To change the url, set the url property of the store," +
-				" not _jsonFileUrl.  _jsonFileUrl support will be removed in 2.0");
-			this._ccUrl = this._jsonFileUrl;
-			this.url = this._jsonFileUrl;
-		}else if(this.url !== this._ccUrl){
-			this._jsonFileUrl = this.url;
-			this._ccUrl = this.url;
-		}
-
-		//See if there was any forced reset of data.
-		if(this.data != null){
-			this._jsonData = this.data;
-			this.data = null;
-		}
-
-		if(this._jsonFileUrl){
-				var getArgs = {
-					url: this._jsonFileUrl,
-					handleAs: "json-comment-optional",
-					preventCache: this.urlPreventCache,
-					failOk: this.failOk,
-					sync: true
-				};
-			var getHandler = dojo.xhrGet(getArgs);
-			getHandler.addCallback(function(data){
-				try{
-					//Check to be sure there wasn't another load going on concurrently
-					//So we don't clobber data that comes in on it.  If there is a load going on
-					//then do not save this data.  It will potentially clobber current data.
-					//We mainly wanted to sync/wait here.
-					//TODO:  Revisit the loading scheme of this store to improve multi-initial
-					//request handling.
-					if(self._loadInProgress !== true && !self._loadFinished){
-						self._getItemsFromLoadedData(data);
-						self._loadFinished = true;
-					}else if(self._loadInProgress){
-						//Okay, we hit an error state we can't recover from.  A forced load occurred
-						//while an async load was occurring.  Since we cannot block at this point, the best
-						//that can be managed is to throw an error.
-						throw new Error("dojo.data.ItemFileReadStore:  Unable to perform a synchronous load, an async load is in progress.");
-					}
-				}catch(e){
-					console.log(e);
-					throw e;
-				}
-			});
-			getHandler.addErrback(function(error){
-				throw error;
-			});
-		}else if(this._jsonData){
-			self._getItemsFromLoadedData(self._jsonData);
-			self._jsonData = null;
-			self._loadFinished = true;
-		}
-	}
-});
-//Mix in the simple fetch implementation to this class.
-dojo.extend(dojo.data.ItemFileReadStore,dojo.data.util.simpleFetch);
-
-}
-
-if(!dojo._hasResource["dojo.dnd.common"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.dnd.common"] = true;
-dojo.provide("dojo.dnd.common");
-
-dojo.getObject("dnd", true, dojo);
-
-dojo.dnd.getCopyKeyState = dojo.isCopyKey;
-
-dojo.dnd._uniqueId = 0;
-dojo.dnd.getUniqueId = function(){
-	// summary:
-	//		returns a unique string for use with any DOM element
-	var id;
-	do{
-		id = dojo._scopeName + "Unique" + (++dojo.dnd._uniqueId);
-	}while(dojo.byId(id));
-	return id;
-};
-
-dojo.dnd._empty = {};
-
-dojo.dnd.isFormElement = function(/*Event*/ e){
-	// summary:
-	//		returns true if user clicked on a form element
-	var t = e.target;
-	if(t.nodeType == 3 /*TEXT_NODE*/){
-		t = t.parentNode;
-	}
-	return " button textarea input select option ".indexOf(" " + t.tagName.toLowerCase() + " ") >= 0;	// Boolean
-};
-
-}
-
-if(!dojo._hasResource["dojo.window"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.window"] = true;
-dojo.provide("dojo.window");
-
-dojo.getObject("window", true, dojo);
-
-dojo.window.getBox = function(){
-	// summary:
-	//		Returns the dimensions and scroll position of the viewable area of a browser window
-
-	var scrollRoot = (dojo.doc.compatMode == 'BackCompat') ? dojo.body() : dojo.doc.documentElement;
-
-	// get scroll position
-	var scroll = dojo._docScroll(); // scrollRoot.scrollTop/Left should work
-	return { w: scrollRoot.clientWidth, h: scrollRoot.clientHeight, l: scroll.x, t: scroll.y };
-};
-
-dojo.window.get = function(doc){
-	// summary:
-	// 		Get window object associated with document doc
-
-	// In some IE versions (at least 6.0), document.parentWindow does not return a
-	// reference to the real window object (maybe a copy), so we must fix it as well
-	// We use IE specific execScript to attach the real window reference to
-	// document._parentWindow for later use
-	if(dojo.isIE && window !== document.parentWindow){
-		/*
-		In IE 6, only the variable "window" can be used to connect events (others
-		may be only copies).
-		*/
-		doc.parentWindow.execScript("document._parentWindow = window;", "Javascript");
-		//to prevent memory leak, unset it after use
-		//another possibility is to add an onUnload handler which seems overkill to me (liucougar)
-		var win = doc._parentWindow;
-		doc._parentWindow = null;
-		return win;	//	Window
-	}
-
-	return doc.parentWindow || doc.defaultView;	//	Window
-};
-
-dojo.window.scrollIntoView = function(/*DomNode*/ node, /*Object?*/ pos){
-	// summary:
-	//		Scroll the passed node into view, if it is not already.
-	
-	// don't rely on node.scrollIntoView working just because the function is there
-
-	try{ // catch unexpected/unrecreatable errors (#7808) since we can recover using a semi-acceptable native method
-		node = dojo.byId(node);
-		var doc = node.ownerDocument || dojo.doc,
-			body = doc.body || dojo.body(),
-			html = doc.documentElement || body.parentNode,
-			isIE = dojo.isIE, isWK = dojo.isWebKit;
-		// if an untested browser, then use the native method
-		if((!(dojo.isMoz || isIE || isWK || dojo.isOpera) || node == body || node == html) && (typeof node.scrollIntoView != "undefined")){
-			node.scrollIntoView(false); // short-circuit to native if possible
-			return;
-		}
-		var backCompat = doc.compatMode == 'BackCompat',
-			clientAreaRoot = (isIE >= 9 && node.ownerDocument.parentWindow.frameElement)
-				? ((html.clientHeight > 0 && html.clientWidth > 0 && (body.clientHeight == 0 || body.clientWidth == 0 || body.clientHeight > html.clientHeight || body.clientWidth > html.clientWidth)) ? html : body)
-				: (backCompat ? body : html),
-			scrollRoot = isWK ? body : clientAreaRoot,
-			rootWidth = clientAreaRoot.clientWidth,
-			rootHeight = clientAreaRoot.clientHeight,
-			rtl = !dojo._isBodyLtr(),
-			nodePos = pos || dojo.position(node),
-			el = node.parentNode,
-			isFixed = function(el){
-				return ((isIE <= 6 || (isIE && backCompat))? false : (dojo.style(el, 'position').toLowerCase() == "fixed"));
-			};
-		if(isFixed(node)){ return; } // nothing to do
-
-		while(el){
-			if(el == body){ el = scrollRoot; }
-			var elPos = dojo.position(el),
-				fixedPos = isFixed(el);
-	
-			if(el == scrollRoot){
-				elPos.w = rootWidth; elPos.h = rootHeight;
-				if(scrollRoot == html && isIE && rtl){ elPos.x += scrollRoot.offsetWidth-elPos.w; } // IE workaround where scrollbar causes negative x
-				if(elPos.x < 0 || !isIE){ elPos.x = 0; } // IE can have values > 0
-				if(elPos.y < 0 || !isIE){ elPos.y = 0; }
-			}else{
-				var pb = dojo._getPadBorderExtents(el);
-				elPos.w -= pb.w; elPos.h -= pb.h; elPos.x += pb.l; elPos.y += pb.t;
-				var clientSize = el.clientWidth,
-					scrollBarSize = elPos.w - clientSize;
-				if(clientSize > 0 && scrollBarSize > 0){
-					elPos.w = clientSize;
-					elPos.x += (rtl && (isIE || el.clientLeft > pb.l/*Chrome*/)) ? scrollBarSize : 0;
-				}
-				clientSize = el.clientHeight;
-				scrollBarSize = elPos.h - clientSize;
-				if(clientSize > 0 && scrollBarSize > 0){
-					elPos.h = clientSize;
-				}
-			}
-			if(fixedPos){ // bounded by viewport, not parents
-				if(elPos.y < 0){
-					elPos.h += elPos.y; elPos.y = 0;
-				}
-				if(elPos.x < 0){
-					elPos.w += elPos.x; elPos.x = 0;
-				}
-				if(elPos.y + elPos.h > rootHeight){
-					elPos.h = rootHeight - elPos.y;
-				}
-				if(elPos.x + elPos.w > rootWidth){
-					elPos.w = rootWidth - elPos.x;
-				}
-			}
-			// calculate overflow in all 4 directions
-			var l = nodePos.x - elPos.x, // beyond left: < 0
-				t = nodePos.y - Math.max(elPos.y, 0), // beyond top: < 0
-				r = l + nodePos.w - elPos.w, // beyond right: > 0
-				bot = t + nodePos.h - elPos.h; // beyond bottom: > 0
-			if(r * l > 0){
-				var s = Math[l < 0? "max" : "min"](l, r);
-				if(rtl && ((isIE == 8 && !backCompat) || isIE >= 9)){ s = -s; }
-				nodePos.x += el.scrollLeft;
-				el.scrollLeft += s;
-				nodePos.x -= el.scrollLeft;
-			}
-			if(bot * t > 0){
-				nodePos.y += el.scrollTop;
-				el.scrollTop += Math[t < 0? "max" : "min"](t, bot);
-				nodePos.y -= el.scrollTop;
-			}
-			el = (el != scrollRoot) && !fixedPos && el.parentNode;
-		}
-	}catch(error){
-		console.error('scrollIntoView: ' + error);
-		node.scrollIntoView(false);
-	}
-};
-
-}
-
-if(!dojo._hasResource["dojo.dnd.autoscroll"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.dnd.autoscroll"] = true;
-dojo.provide("dojo.dnd.autoscroll");
-
-
-dojo.getObject("dnd", true, dojo);
-
-dojo.dnd.getViewport = dojo.window.getBox;
-
-dojo.dnd.V_TRIGGER_AUTOSCROLL = 32;
-dojo.dnd.H_TRIGGER_AUTOSCROLL = 32;
-
-dojo.dnd.V_AUTOSCROLL_VALUE = 16;
-dojo.dnd.H_AUTOSCROLL_VALUE = 16;
-
-dojo.dnd.autoScroll = function(e){
-	// summary:
-	//		a handler for onmousemove event, which scrolls the window, if
-	//		necesary
-	// e: Event
-	//		onmousemove event
-
-	// FIXME: needs more docs!
-	var v = dojo.window.getBox(), dx = 0, dy = 0;
-	if(e.clientX < dojo.dnd.H_TRIGGER_AUTOSCROLL){
-		dx = -dojo.dnd.H_AUTOSCROLL_VALUE;
-	}else if(e.clientX > v.w - dojo.dnd.H_TRIGGER_AUTOSCROLL){
-		dx = dojo.dnd.H_AUTOSCROLL_VALUE;
-	}
-	if(e.clientY < dojo.dnd.V_TRIGGER_AUTOSCROLL){
-		dy = -dojo.dnd.V_AUTOSCROLL_VALUE;
-	}else if(e.clientY > v.h - dojo.dnd.V_TRIGGER_AUTOSCROLL){
-		dy = dojo.dnd.V_AUTOSCROLL_VALUE;
-	}
-	window.scrollBy(dx, dy);
-};
-
-dojo.dnd._validNodes = {"div": 1, "p": 1, "td": 1};
-dojo.dnd._validOverflow = {"auto": 1, "scroll": 1};
-
-dojo.dnd.autoScrollNodes = function(e){
-	// summary:
-	//		a handler for onmousemove event, which scrolls the first avaialble
-	//		Dom element, it falls back to dojo.dnd.autoScroll()
-	// e: Event
-	//		onmousemove event
-
-	// FIXME: needs more docs!
-	for(var n = e.target; n;){
-		if(n.nodeType == 1 && (n.tagName.toLowerCase() in dojo.dnd._validNodes)){
-			var s = dojo.getComputedStyle(n);
-			if(s.overflow.toLowerCase() in dojo.dnd._validOverflow){
-				var b = dojo._getContentBox(n, s), t = dojo.position(n, true);
-				//console.log(b.l, b.t, t.x, t.y, n.scrollLeft, n.scrollTop);
-				var w = Math.min(dojo.dnd.H_TRIGGER_AUTOSCROLL, b.w / 2),
-					h = Math.min(dojo.dnd.V_TRIGGER_AUTOSCROLL, b.h / 2),
-					rx = e.pageX - t.x, ry = e.pageY - t.y, dx = 0, dy = 0;
-				if(dojo.isWebKit || dojo.isOpera){
-					// FIXME: this code should not be here, it should be taken into account
-					// either by the event fixing code, or the dojo.position()
-					// FIXME: this code doesn't work on Opera 9.5 Beta
-					rx += dojo.body().scrollLeft;
-					ry += dojo.body().scrollTop;
-				}
-				if(rx > 0 && rx < b.w){
-					if(rx < w){
-						dx = -w;
-					}else if(rx > b.w - w){
-						dx = w;
-					}
-				}
-				//console.log("ry =", ry, "b.h =", b.h, "h =", h);
-				if(ry > 0 && ry < b.h){
-					if(ry < h){
-						dy = -h;
-					}else if(ry > b.h - h){
-						dy = h;
-					}
-				}
-				var oldLeft = n.scrollLeft, oldTop = n.scrollTop;
-				n.scrollLeft = n.scrollLeft + dx;
-				n.scrollTop  = n.scrollTop  + dy;
-				if(oldLeft != n.scrollLeft || oldTop != n.scrollTop){ return; }
-			}
-		}
-		try{
-			n = n.parentNode;
-		}catch(x){
-			n = null;
-		}
-	}
-	dojo.dnd.autoScroll(e);
-};
-
-}
-
-if(!dojo._hasResource["dojo.dnd.Mover"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.dnd.Mover"] = true;
-dojo.provide("dojo.dnd.Mover");
-
-
-
-
-dojo.declare("dojo.dnd.Mover", null, {
-	constructor: function(node, e, host){
-		// summary:
-		//		an object which makes a node follow the mouse, or touch-drag on touch devices.
-		//		Used as a default mover, and as a base class for custom movers.
-		// node: Node
-		//		a node (or node's id) to be moved
-		// e: Event
-		//		a mouse event, which started the move;
-		//		only pageX and pageY properties are used
-		// host: Object?
-		//		object which implements the functionality of the move,
-		//	 	and defines proper events (onMoveStart and onMoveStop)
-		this.node = dojo.byId(node);
-		var pos = e.touches ? e.touches[0] : e;
-		this.marginBox = {l: pos.pageX, t: pos.pageY};
-		this.mouseButton = e.button;
-		var h = (this.host = host), d = node.ownerDocument;
-		this.events = [
-			// At the start of a drag, onFirstMove is called, and then the following two
-			// connects are disconnected
-			dojo.connect(d, "onmousemove", this, "onFirstMove"),
-			dojo.connect(d, "ontouchmove", this, "onFirstMove"),
-
-			// These are called continually during the drag
-			dojo.connect(d, "onmousemove", this, "onMouseMove"),
-			dojo.connect(d, "ontouchmove", this, "onMouseMove"),
-
-			// And these are called at the end of the drag
-			dojo.connect(d, "onmouseup",   this, "onMouseUp"),
-			dojo.connect(d, "ontouchend", this, "onMouseUp"),
-
-			// cancel text selection and text dragging
-			dojo.connect(d, "ondragstart",   dojo.stopEvent),
-			dojo.connect(d.body, "onselectstart", dojo.stopEvent)
-		];
-		// notify that the move has started
-		if(h && h.onMoveStart){
-			h.onMoveStart(this);
-		}
-	},
-	// mouse event processors
-	onMouseMove: function(e){
-		// summary:
-		//		event processor for onmousemove/ontouchmove
-		// e: Event
-		//		mouse/touch event
-		dojo.dnd.autoScroll(e);
-		var m = this.marginBox,
-			pos = e.touches ? e.touches[0] : e;
-		this.host.onMove(this, {l: m.l + pos.pageX, t: m.t + pos.pageY}, e);
-		dojo.stopEvent(e);
-	},
-	onMouseUp: function(e){
-		if(dojo.isWebKit && dojo.isMac && this.mouseButton == 2 ?
-				e.button == 0 : this.mouseButton == e.button){ // TODO Should condition be met for touch devices, too?
-			this.destroy();
-		}
-		dojo.stopEvent(e);
-	},
-	// utilities
-	onFirstMove: function(e){
-		// summary:
-		//		makes the node absolute; it is meant to be called only once.
-		// 		relative and absolutely positioned nodes are assumed to use pixel units
-		var s = this.node.style, l, t, h = this.host;
-		switch(s.position){
-			case "relative":
-			case "absolute":
-				// assume that left and top values are in pixels already
-				l = Math.round(parseFloat(s.left)) || 0;
-				t = Math.round(parseFloat(s.top)) || 0;
-				break;
-			default:
-				s.position = "absolute";	// enforcing the absolute mode
-				var m = dojo.marginBox(this.node);
-				// event.pageX/pageY (which we used to generate the initial
-				// margin box) includes padding and margin set on the body.
-				// However, setting the node's position to absolute and then
-				// doing dojo.marginBox on it *doesn't* take that additional
-				// space into account - so we need to subtract the combined
-				// padding and margin.  We use getComputedStyle and
-				// _getMarginBox/_getContentBox to avoid the extra lookup of
-				// the computed style.
-				var b = dojo.doc.body;
-				var bs = dojo.getComputedStyle(b);
-				var bm = dojo._getMarginBox(b, bs);
-				var bc = dojo._getContentBox(b, bs);
-				l = m.l - (bc.l - bm.l);
-				t = m.t - (bc.t - bm.t);
-				break;
-		}
-		this.marginBox.l = l - this.marginBox.l;
-		this.marginBox.t = t - this.marginBox.t;
-		if(h && h.onFirstMove){
-			h.onFirstMove(this, e);
-		}
-		
-		// Disconnect onmousemove and ontouchmove events that call this function
-		dojo.disconnect(this.events.shift());
-		dojo.disconnect(this.events.shift());
-	},
-	destroy: function(){
-		// summary:
-		//		stops the move, deletes all references, so the object can be garbage-collected
-		dojo.forEach(this.events, dojo.disconnect);
-		// undo global settings
-		var h = this.host;
-		if(h && h.onMoveStop){
-			h.onMoveStop(this);
-		}
-		// destroy objects
-		this.events = this.node = this.host = null;
-	}
-});
-
-}
-
-if(!dojo._hasResource["dojo.dnd.Moveable"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.dnd.Moveable"] = true;
-dojo.provide("dojo.dnd.Moveable");
-
-
-
-/*=====
-dojo.declare("dojo.dnd.__MoveableArgs", [], {
-	// handle: Node||String
-	//		A node (or node's id), which is used as a mouse handle.
-	//		If omitted, the node itself is used as a handle.
-	handle: null,
-
-	// delay: Number
-	//		delay move by this number of pixels
-	delay: 0,
-
-	// skip: Boolean
-	//		skip move of form elements
-	skip: false,
-
-	// mover: Object
-	//		a constructor of custom Mover
-	mover: dojo.dnd.Mover
-});
-=====*/
-
-dojo.declare("dojo.dnd.Moveable", null, {
-	// object attributes (for markup)
-	handle: "",
-	delay: 0,
-	skip: false,
-	
-	constructor: function(node, params){
-		// summary:
-		//		an object, which makes a node moveable
-		// node: Node
-		//		a node (or node's id) to be moved
-		// params: dojo.dnd.__MoveableArgs?
-		//		optional parameters
-		this.node = dojo.byId(node);
-		if(!params){ params = {}; }
-		this.handle = params.handle ? dojo.byId(params.handle) : null;
-		if(!this.handle){ this.handle = this.node; }
-		this.delay = params.delay > 0 ? params.delay : 0;
-		this.skip  = params.skip;
-		this.mover = params.mover ? params.mover : dojo.dnd.Mover;
-		this.events = [
-			dojo.connect(this.handle, "onmousedown", this, "onMouseDown"),
-			dojo.connect(this.handle, "ontouchstart", this, "onMouseDown"),
-			// cancel text selection and text dragging
-			dojo.connect(this.handle, "ondragstart",   this, "onSelectStart"),
-			dojo.connect(this.handle, "onselectstart", this, "onSelectStart")
-		];
-	},
-
-	// markup methods
-	markupFactory: function(params, node){
-		return new dojo.dnd.Moveable(node, params);
-	},
-
-	// methods
-	destroy: function(){
-		// summary:
-		//		stops watching for possible move, deletes all references, so the object can be garbage-collected
-		dojo.forEach(this.events, dojo.disconnect);
-		this.events = this.node = this.handle = null;
-	},
-	
-	// mouse event processors
-	onMouseDown: function(e){
-		// summary:
-		//		event processor for onmousedown/ontouchstart, creates a Mover for the node
-		// e: Event
-		//		mouse/touch event
-		if(this.skip && dojo.dnd.isFormElement(e)){ return; }
-		if(this.delay){
-			this.events.push(
-				dojo.connect(this.handle, "onmousemove", this, "onMouseMove"),
-				dojo.connect(this.handle, "ontouchmove", this, "onMouseMove"),
-				dojo.connect(this.handle, "onmouseup", this, "onMouseUp"),
-				dojo.connect(this.handle, "ontouchend", this, "onMouseUp")
-			);
-			var pos = e.touches ? e.touches[0] : e;
-			this._lastX = pos.pageX;
-			this._lastY = pos.pageY;
-		}else{
-			this.onDragDetected(e);
-		}
-		dojo.stopEvent(e);
-	},
-	onMouseMove: function(e){
-		// summary:
-		//		event processor for onmousemove/ontouchmove, used only for delayed drags
-		// e: Event
-		//		mouse/touch event
-		var pos = e.touches ? e.touches[0] : e;
-		if(Math.abs(pos.pageX - this._lastX) > this.delay || Math.abs(pos.pageY - this._lastY) > this.delay){
-			this.onMouseUp(e);
-			this.onDragDetected(e);
-		}
-		dojo.stopEvent(e);
-	},
-	onMouseUp: function(e){
-		// summary:
-		//		event processor for onmouseup, used only for delayed drags
-		// e: Event
-		//		mouse event
-		for(var i = 0; i < 2; ++i){
-			dojo.disconnect(this.events.pop());
-		}
-		dojo.stopEvent(e);
-	},
-	onSelectStart: function(e){
-		// summary:
-		//		event processor for onselectevent and ondragevent
-		// e: Event
-		//		mouse event
-		if(!this.skip || !dojo.dnd.isFormElement(e)){
-			dojo.stopEvent(e);
-		}
-	},
-	
-	// local events
-	onDragDetected: function(/* Event */ e){
-		// summary:
-		//		called when the drag is detected;
-		//		responsible for creation of the mover
-		new this.mover(this.node, e, this);
-	},
-	onMoveStart: function(/* dojo.dnd.Mover */ mover){
-		// summary:
-		//		called before every move operation
-		dojo.publish("/dnd/move/start", [mover]);
-		dojo.addClass(dojo.body(), "dojoMove");
-		dojo.addClass(this.node, "dojoMoveItem");
-	},
-	onMoveStop: function(/* dojo.dnd.Mover */ mover){
-		// summary:
-		//		called after every move operation
-		dojo.publish("/dnd/move/stop", [mover]);
-		dojo.removeClass(dojo.body(), "dojoMove");
-		dojo.removeClass(this.node, "dojoMoveItem");
-	},
-	onFirstMove: function(/* dojo.dnd.Mover */ mover, /* Event */ e){
-		// summary:
-		//		called during the very first move notification;
-		//		can be used to initialize coordinates, can be overwritten.
-		
-		// default implementation does nothing
-	},
-	onMove: function(/* dojo.dnd.Mover */ mover, /* Object */ leftTop, /* Event */ e){
-		// summary:
-		//		called during every move notification;
-		//		should actually move the node; can be overwritten.
-		this.onMoving(mover, leftTop);
-		var s = mover.node.style;
-		s.left = leftTop.l + "px";
-		s.top  = leftTop.t + "px";
-		this.onMoved(mover, leftTop);
-	},
-	onMoving: function(/* dojo.dnd.Mover */ mover, /* Object */ leftTop){
-		// summary:
-		//		called before every incremental move; can be overwritten.
-		
-		// default implementation does nothing
-	},
-	onMoved: function(/* dojo.dnd.Mover */ mover, /* Object */ leftTop){
-		// summary:
-		//		called after every incremental move; can be overwritten.
-		
-		// default implementation does nothing
-	}
-});
-
-}
-
-if(!dojo._hasResource["dojo.dnd.move"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.dnd.move"] = true;
-dojo.provide("dojo.dnd.move");
-
-
-
-
-/*=====
-dojo.declare("dojo.dnd.move.__constrainedMoveableArgs", [dojo.dnd.__MoveableArgs], {
-	// constraints: Function
-	//		Calculates a constraint box.
-	//		It is called in a context of the moveable object.
-	constraints: function(){},
-
-	// within: Boolean
-	//		restrict move within boundaries.
-	within: false
-});
-=====*/
-
-dojo.declare("dojo.dnd.move.constrainedMoveable", dojo.dnd.Moveable, {
-	// object attributes (for markup)
-	constraints: function(){},
-	within: false,
-	
-	// markup methods
-	markupFactory: function(params, node){
-		return new dojo.dnd.move.constrainedMoveable(node, params);
-	},
-
-	constructor: function(node, params){
-		// summary:
-		//		an object that makes a node moveable
-		// node: Node
-		//		a node (or node's id) to be moved
-		// params: dojo.dnd.move.__constrainedMoveableArgs?
-		//		an optional object with additional parameters;
-		//		the rest is passed to the base class
-		if(!params){ params = {}; }
-		this.constraints = params.constraints;
-		this.within = params.within;
-	},
-	onFirstMove: function(/* dojo.dnd.Mover */ mover){
-		// summary:
-		//		called during the very first move notification;
-		//		can be used to initialize coordinates, can be overwritten.
-		var c = this.constraintBox = this.constraints.call(this, mover);
-		c.r = c.l + c.w;
-		c.b = c.t + c.h;
-		if(this.within){
-			var mb = dojo._getMarginSize(mover.node);
-			c.r -= mb.w;
-			c.b -= mb.h;
-		}
-	},
-	onMove: function(/* dojo.dnd.Mover */ mover, /* Object */ leftTop){
-		// summary:
-		//		called during every move notification;
-		//		should actually move the node; can be overwritten.
-		var c = this.constraintBox, s = mover.node.style;
-		this.onMoving(mover, leftTop);
-		leftTop.l = leftTop.l < c.l ? c.l : c.r < leftTop.l ? c.r : leftTop.l;
-		leftTop.t = leftTop.t < c.t ? c.t : c.b < leftTop.t ? c.b : leftTop.t;
-		s.left = leftTop.l + "px";
-		s.top  = leftTop.t + "px";
-		this.onMoved(mover, leftTop);
-	}
-});
-
-/*=====
-dojo.declare("dojo.dnd.move.__boxConstrainedMoveableArgs", [dojo.dnd.move.__constrainedMoveableArgs], {
-	// box: Object
-	//		a constraint box
-	box: {}
-});
-=====*/
-
-dojo.declare("dojo.dnd.move.boxConstrainedMoveable", dojo.dnd.move.constrainedMoveable, {
-	// box:
-	//		object attributes (for markup)
-	box: {},
-	
-	// markup methods
-	markupFactory: function(params, node){
-		return new dojo.dnd.move.boxConstrainedMoveable(node, params);
-	},
-
-	constructor: function(node, params){
-		// summary:
-		//		an object, which makes a node moveable
-		// node: Node
-		//		a node (or node's id) to be moved
-		// params: dojo.dnd.move.__boxConstrainedMoveableArgs?
-		//		an optional object with parameters
-		var box = params && params.box;
-		this.constraints = function(){ return box; };
-	}
-});
-
-/*=====
-dojo.declare("dojo.dnd.move.__parentConstrainedMoveableArgs", [dojo.dnd.move.__constrainedMoveableArgs], {
-	// area: String
-	//		A parent's area to restrict the move.
-	//		Can be "margin", "border", "padding", or "content".
-	area: ""
-});
-=====*/
-
-dojo.declare("dojo.dnd.move.parentConstrainedMoveable", dojo.dnd.move.constrainedMoveable, {
-	// area:
-	//		object attributes (for markup)
-	area: "content",
-
-	// markup methods
-	markupFactory: function(params, node){
-		return new dojo.dnd.move.parentConstrainedMoveable(node, params);
-	},
-
-	constructor: function(node, params){
-		// summary:
-		//		an object, which makes a node moveable
-		// node: Node
-		//		a node (or node's id) to be moved
-		// params: dojo.dnd.move.__parentConstrainedMoveableArgs?
-		//		an optional object with parameters
-		var area = params && params.area;
-		this.constraints = function(){
-			var n = this.node.parentNode,
-				s = dojo.getComputedStyle(n),
-				mb = dojo._getMarginBox(n, s);
-			if(area == "margin"){
-				return mb;	// Object
-			}
-			var t = dojo._getMarginExtents(n, s);
-			mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
-			if(area == "border"){
-				return mb;	// Object
-			}
-			t = dojo._getBorderExtents(n, s);
-			mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
-			if(area == "padding"){
-				return mb;	// Object
-			}
-			t = dojo._getPadExtents(n, s);
-			mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
-			return mb;	// Object
-		};
-	}
-});
-
-// patching functions one level up for compatibility
-
-dojo.dnd.constrainedMover = dojo.dnd.move.constrainedMover;
-dojo.dnd.boxConstrainedMover = dojo.dnd.move.boxConstrainedMover;
-dojo.dnd.parentConstrainedMover = dojo.dnd.move.parentConstrainedMover;
-
-}
-
-if(!dojo._hasResource["dojo.dnd.TimedMoveable"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.dnd.TimedMoveable"] = true;
-dojo.provide("dojo.dnd.TimedMoveable");
-
-
-
-/*=====
-dojo.declare("dojo.dnd.__TimedMoveableArgs", [dojo.dnd.__MoveableArgs], {
-	// timeout: Number
-	//		delay move by this number of ms,
-	//		accumulating position changes during the timeout
-	timeout: 0
-});
-=====*/
-
-(function(){
-	// precalculate long expressions
-	var oldOnMove = dojo.dnd.Moveable.prototype.onMove;
-		
-	dojo.declare("dojo.dnd.TimedMoveable", dojo.dnd.Moveable, {
-		// summary:
-		//		A specialized version of Moveable to support an FPS throttling.
-		//		This class puts an upper restriction on FPS, which may reduce
-		//		the CPU load. The additional parameter "timeout" regulates
-		//		the delay before actually moving the moveable object.
-		
-		// object attributes (for markup)
-		timeout: 40,	// in ms, 40ms corresponds to 25 fps
-	
-		constructor: function(node, params){
-			// summary:
-			//		an object that makes a node moveable with a timer
-			// node: Node||String
-			//		a node (or node's id) to be moved
-			// params: dojo.dnd.__TimedMoveableArgs
-			//		object with additional parameters.
-			
-			// sanitize parameters
-			if(!params){ params = {}; }
-			if(params.timeout && typeof params.timeout == "number" && params.timeout >= 0){
-				this.timeout = params.timeout;
-			}
-		},
-	
-		// markup methods
-		markupFactory: function(params, node){
-			return new dojo.dnd.TimedMoveable(node, params);
-		},
-	
-		onMoveStop: function(/* dojo.dnd.Mover */ mover){
-			if(mover._timer){
-				// stop timer
-				clearTimeout(mover._timer)
-				// reflect the last received position
-				oldOnMove.call(this, mover, mover._leftTop)
-			}
-			dojo.dnd.Moveable.prototype.onMoveStop.apply(this, arguments);
-		},
-		onMove: function(/* dojo.dnd.Mover */ mover, /* Object */ leftTop){
-			mover._leftTop = leftTop;
-			if(!mover._timer){
-				var _t = this;	// to avoid using dojo.hitch()
-				mover._timer = setTimeout(function(){
-					// we don't have any pending requests
-					mover._timer = null;
-					// reflect the last received position
-					oldOnMove.call(_t, mover, mover._leftTop);
-				}, this.timeout);
-			}
-		}
-	});
-})();
-
-}
-
-if(!dojo._hasResource["dojo.fx.Toggler"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.fx.Toggler"] = true;
-dojo.provide("dojo.fx.Toggler");
-
-
-dojo.declare("dojo.fx.Toggler", null, {
-	// summary:
-	//		A simple `dojo.Animation` toggler API.
-	//
-	// description:
-	//		class constructor for an animation toggler. It accepts a packed
-	//		set of arguments about what type of animation to use in each
-	//		direction, duration, etc. All available members are mixed into
-	//		these animations from the constructor (for example, `node`,
-	//		`showDuration`, `hideDuration`).
-	//
-	// example:
-	//	|	var t = new dojo.fx.Toggler({
-	//	|		node: "nodeId",
-	//	|		showDuration: 500,
-	//	|		// hideDuration will default to "200"
-	//	|		showFunc: dojo.fx.wipeIn,
-	//	|		// hideFunc will default to "fadeOut"
-	//	|	});
-	//	|	t.show(100); // delay showing for 100ms
-	//	|	// ...time passes...
-	//	|	t.hide();
-
-	// node: DomNode
-	//		the node to target for the showing and hiding animations
-	node: null,
-
-	// showFunc: Function
-	//		The function that returns the `dojo.Animation` to show the node
-	showFunc: dojo.fadeIn,
-
-	// hideFunc: Function
-	//		The function that returns the `dojo.Animation` to hide the node
-	hideFunc: dojo.fadeOut,
-
-	// showDuration:
-	//		Time in milliseconds to run the show Animation
-	showDuration: 200,
-
-	// hideDuration:
-	//		Time in milliseconds to run the hide Animation
-	hideDuration: 200,
-
-	// FIXME: need a policy for where the toggler should "be" the next
-	// time show/hide are called if we're stopped somewhere in the
-	// middle.
-	// FIXME: also would be nice to specify individual showArgs/hideArgs mixed into
-	// each animation individually.
-	// FIXME: also would be nice to have events from the animations exposed/bridged
-
-	/*=====
-	_showArgs: null,
-	_showAnim: null,
-
-	_hideArgs: null,
-	_hideAnim: null,
-
-	_isShowing: false,
-	_isHiding: false,
-	=====*/
-
-	constructor: function(args){
-		var _t = this;
-
-		dojo.mixin(_t, args);
-		_t.node = args.node;
-		_t._showArgs = dojo.mixin({}, args);
-		_t._showArgs.node = _t.node;
-		_t._showArgs.duration = _t.showDuration;
-		_t.showAnim = _t.showFunc(_t._showArgs);
-
-		_t._hideArgs = dojo.mixin({}, args);
-		_t._hideArgs.node = _t.node;
-		_t._hideArgs.duration = _t.hideDuration;
-		_t.hideAnim = _t.hideFunc(_t._hideArgs);
-
-		dojo.connect(_t.showAnim, "beforeBegin", dojo.hitch(_t.hideAnim, "stop", true));
-		dojo.connect(_t.hideAnim, "beforeBegin", dojo.hitch(_t.showAnim, "stop", true));
-	},
-
-	show: function(delay){
-		// summary: Toggle the node to showing
-		// delay: Integer?
-		//		Ammount of time to stall playing the show animation
-		return this.showAnim.play(delay || 0);
-	},
-
-	hide: function(delay){
-		// summary: Toggle the node to hidden
-		// delay: Integer?
-		//		Ammount of time to stall playing the hide animation
-		return this.hideAnim.play(delay || 0);
-	}
-});
-
-}
-
-if(!dojo._hasResource["dojo.fx"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.fx"] = true;
-dojo.provide("dojo.fx");
-
-
-
-/*=====
-dojo.fx = {
-	// summary: Effects library on top of Base animations
-};
-=====*/
-(function(){
-	
-	var d = dojo,
-		_baseObj = {
-			_fire: function(evt, args){
-				if(this[evt]){
-					this[evt].apply(this, args||[]);
-				}
-				return this;
-			}
-		};
-
-	var _chain = function(animations){
-		this._index = -1;
-		this._animations = animations||[];
-		this._current = this._onAnimateCtx = this._onEndCtx = null;
-
-		this.duration = 0;
-		d.forEach(this._animations, function(a){
-			this.duration += a.duration;
-			if(a.delay){ this.duration += a.delay; }
-		}, this);
-	};
-	d.extend(_chain, {
-		_onAnimate: function(){
-			this._fire("onAnimate", arguments);
-		},
-		_onEnd: function(){
-			d.disconnect(this._onAnimateCtx);
-			d.disconnect(this._onEndCtx);
-			this._onAnimateCtx = this._onEndCtx = null;
-			if(this._index + 1 == this._animations.length){
-				this._fire("onEnd");
-			}else{
-				// switch animations
-				this._current = this._animations[++this._index];
-				this._onAnimateCtx = d.connect(this._current, "onAnimate", this, "_onAnimate");
-				this._onEndCtx = d.connect(this._current, "onEnd", this, "_onEnd");
-				this._current.play(0, true);
-			}
-		},
-		play: function(/*int?*/ delay, /*Boolean?*/ gotoStart){
-			if(!this._current){ this._current = this._animations[this._index = 0]; }
-			if(!gotoStart && this._current.status() == "playing"){ return this; }
-			var beforeBegin = d.connect(this._current, "beforeBegin", this, function(){
-					this._fire("beforeBegin");
-				}),
-				onBegin = d.connect(this._current, "onBegin", this, function(arg){
-					this._fire("onBegin", arguments);
-				}),
-				onPlay = d.connect(this._current, "onPlay", this, function(arg){
-					this._fire("onPlay", arguments);
-					d.disconnect(beforeBegin);
-					d.disconnect(onBegin);
-					d.disconnect(onPlay);
-				});
-			if(this._onAnimateCtx){
-				d.disconnect(this._onAnimateCtx);
-			}
-			this._onAnimateCtx = d.connect(this._current, "onAnimate", this, "_onAnimate");
-			if(this._onEndCtx){
-				d.disconnect(this._onEndCtx);
-			}
-			this._onEndCtx = d.connect(this._current, "onEnd", this, "_onEnd");
-			this._current.play.apply(this._current, arguments);
-			return this;
-		},
-		pause: function(){
-			if(this._current){
-				var e = d.connect(this._current, "onPause", this, function(arg){
-						this._fire("onPause", arguments);
-						d.disconnect(e);
-					});
-				this._current.pause();
-			}
-			return this;
-		},
-		gotoPercent: function(/*Decimal*/percent, /*Boolean?*/ andPlay){
-			this.pause();
-			var offset = this.duration * percent;
-			this._current = null;
-			d.some(this._animations, function(a){
-				if(a.duration <= offset){
-					this._current = a;
-					return true;
-				}
-				offset -= a.duration;
-				return false;
-			});
-			if(this._current){
-				this._current.gotoPercent(offset / this._current.duration, andPlay);
-			}
-			return this;
-		},
-		stop: function(/*boolean?*/ gotoEnd){
-			if(this._current){
-				if(gotoEnd){
-					for(; this._index + 1 < this._animations.length; ++this._index){
-						this._animations[this._index].stop(true);
-					}
-					this._current = this._animations[this._index];
-				}
-				var e = d.connect(this._current, "onStop", this, function(arg){
-						this._fire("onStop", arguments);
-						d.disconnect(e);
-					});
-				this._current.stop();
-			}
-			return this;
-		},
-		status: function(){
-			return this._current ? this._current.status() : "stopped";
-		},
-		destroy: function(){
-			if(this._onAnimateCtx){ d.disconnect(this._onAnimateCtx); }
-			if(this._onEndCtx){ d.disconnect(this._onEndCtx); }
-		}
-	});
-	d.extend(_chain, _baseObj);
-
-	dojo.fx.chain = function(/*dojo.Animation[]*/ animations){
-		// summary:
-		//		Chain a list of `dojo.Animation`s to run in sequence
-		//
-		// description:
-		//		Return a `dojo.Animation` which will play all passed
-		//		`dojo.Animation` instances in sequence, firing its own
-		//		synthesized events simulating a single animation. (eg:
-		//		onEnd of this animation means the end of the chain,
-		//		not the individual animations within)
-		//
-		// example:
-		//	Once `node` is faded out, fade in `otherNode`
-		//	|	dojo.fx.chain([
-		//	|		dojo.fadeIn({ node:node }),
-		//	|		dojo.fadeOut({ node:otherNode })
-		//	|	]).play();
-		//
-		return new _chain(animations) // dojo.Animation
-	};
-
-	var _combine = function(animations){
-		this._animations = animations||[];
-		this._connects = [];
-		this._finished = 0;
-
-		this.duration = 0;
-		d.forEach(animations, function(a){
-			var duration = a.duration;
-			if(a.delay){ duration += a.delay; }
-			if(this.duration < duration){ this.duration = duration; }
-			this._connects.push(d.connect(a, "onEnd", this, "_onEnd"));
-		}, this);
-		
-		this._pseudoAnimation = new d.Animation({curve: [0, 1], duration: this.duration});
-		var self = this;
-		d.forEach(["beforeBegin", "onBegin", "onPlay", "onAnimate", "onPause", "onStop", "onEnd"],
-			function(evt){
-				self._connects.push(d.connect(self._pseudoAnimation, evt,
-					function(){ self._fire(evt, arguments); }
-				));
-			}
-		);
-	};
-	d.extend(_combine, {
-		_doAction: function(action, args){
-			d.forEach(this._animations, function(a){
-				a[action].apply(a, args);
-			});
-			return this;
-		},
-		_onEnd: function(){
-			if(++this._finished > this._animations.length){
-				this._fire("onEnd");
-			}
-		},
-		_call: function(action, args){
-			var t = this._pseudoAnimation;
-			t[action].apply(t, args);
-		},
-		play: function(/*int?*/ delay, /*Boolean?*/ gotoStart){
-			this._finished = 0;
-			this._doAction("play", arguments);
-			this._call("play", arguments);
-			return this;
-		},
-		pause: function(){
-			this._doAction("pause", arguments);
-			this._call("pause", arguments);
-			return this;
-		},
-		gotoPercent: function(/*Decimal*/percent, /*Boolean?*/ andPlay){
-			var ms = this.duration * percent;
-			d.forEach(this._animations, function(a){
-				a.gotoPercent(a.duration < ms ? 1 : (ms / a.duration), andPlay);
-			});
-			this._call("gotoPercent", arguments);
-			return this;
-		},
-		stop: function(/*boolean?*/ gotoEnd){
-			this._doAction("stop", arguments);
-			this._call("stop", arguments);
-			return this;
-		},
-		status: function(){
-			return this._pseudoAnimation.status();
-		},
-		destroy: function(){
-			d.forEach(this._connects, dojo.disconnect);
-		}
-	});
-	d.extend(_combine, _baseObj);
-
-	dojo.fx.combine = function(/*dojo.Animation[]*/ animations){
-		// summary:
-		//		Combine a list of `dojo.Animation`s to run in parallel
-		//
-		// description:
-		//		Combine an array of `dojo.Animation`s to run in parallel,
-		//		providing a new `dojo.Animation` instance encompasing each
-		//		animation, firing standard animation events.
-		//
-		// example:
-		//	Fade out `node` while fading in `otherNode` simultaneously
-		//	|	dojo.fx.combine([
-		//	|		dojo.fadeIn({ node:node }),
-		//	|		dojo.fadeOut({ node:otherNode })
-		//	|	]).play();
-		//
-		// example:
-		//	When the longest animation ends, execute a function:
-		//	|	var anim = dojo.fx.combine([
-		//	|		dojo.fadeIn({ node: n, duration:700 }),
-		//	|		dojo.fadeOut({ node: otherNode, duration: 300 })
-		//	|	]);
-		//	|	dojo.connect(anim, "onEnd", function(){
-		//	|		// overall animation is done.
-		//	|	});
-		//	|	anim.play(); // play the animation
-		//
-		return new _combine(animations); // dojo.Animation
-	};
-
-	dojo.fx.wipeIn = function(/*Object*/ args){
-		// summary:
-		//		Expand a node to it's natural height.
-		//
-		// description:
-		//		Returns an animation that will expand the
-		//		node defined in 'args' object from it's current height to
-		//		it's natural height (with no scrollbar).
-		//		Node must have no margin/border/padding.
-		//
-		// args: Object
-		//		A hash-map of standard `dojo.Animation` constructor properties
-		//		(such as easing: node: duration: and so on)
-		//
-		// example:
-		//	|	dojo.fx.wipeIn({
-		//	|		node:"someId"
-		//	|	}).play()
-		var node = args.node = d.byId(args.node), s = node.style, o;
-
-		var anim = d.animateProperty(d.mixin({
-			properties: {
-				height: {
-					// wrapped in functions so we wait till the last second to query (in case value has changed)
-					start: function(){
-						// start at current [computed] height, but use 1px rather than 0
-						// because 0 causes IE to display the whole panel
-						o = s.overflow;
-						s.overflow = "hidden";
-						if(s.visibility == "hidden" || s.display == "none"){
-							s.height = "1px";
-							s.display = "";
-							s.visibility = "";
-							return 1;
-						}else{
-							var height = d.style(node, "height");
-							return Math.max(height, 1);
-						}
-					},
-					end: function(){
-						return node.scrollHeight;
-					}
-				}
-			}
-		}, args));
-
-		d.connect(anim, "onEnd", function(){
-			s.height = "auto";
-			s.overflow = o;
-		});
-
-		return anim; // dojo.Animation
-	};
-
-	dojo.fx.wipeOut = function(/*Object*/ args){
-		// summary:
-		//		Shrink a node to nothing and hide it.
-		//
-		// description:
-		//		Returns an animation that will shrink node defined in "args"
-		//		from it's current height to 1px, and then hide it.
-		//
-		// args: Object
-		//		A hash-map of standard `dojo.Animation` constructor properties
-		//		(such as easing: node: duration: and so on)
-		//
-		// example:
-		//	|	dojo.fx.wipeOut({ node:"someId" }).play()
-		
-		var node = args.node = d.byId(args.node), s = node.style, o;
-		
-		var anim = d.animateProperty(d.mixin({
-			properties: {
-				height: {
-					end: 1 // 0 causes IE to display the whole panel
-				}
-			}
-		}, args));
-
-		d.connect(anim, "beforeBegin", function(){
-			o = s.overflow;
-			s.overflow = "hidden";
-			s.display = "";
-		});
-		d.connect(anim, "onEnd", function(){
-			s.overflow = o;
-			s.height = "auto";
-			s.display = "none";
-		});
-
-		return anim; // dojo.Animation
-	};
-
-	dojo.fx.slideTo = function(/*Object*/ args){
-		// summary:
-		//		Slide a node to a new top/left position
-		//
-		// description:
-		//		Returns an animation that will slide "node"
-		//		defined in args Object from its current position to
-		//		the position defined by (args.left, args.top).
-		//
-		// args: Object
-		//		A hash-map of standard `dojo.Animation` constructor properties
-		//		(such as easing: node: duration: and so on). Special args members
-		//		are `top` and `left`, which indicate the new position to slide to.
-		//
-		// example:
-		//	|	dojo.fx.slideTo({ node: node, left:"40", top:"50", units:"px" }).play()
-
-		var node = args.node = d.byId(args.node),
-			top = null, left = null;
-
-		var init = (function(n){
-			return function(){
-				var cs = d.getComputedStyle(n);
-				var pos = cs.position;
-				top = (pos == 'absolute' ? n.offsetTop : parseInt(cs.top) || 0);
-				left = (pos == 'absolute' ? n.offsetLeft : parseInt(cs.left) || 0);
-				if(pos != 'absolute' && pos != 'relative'){
-					var ret = d.position(n, true);
-					top = ret.y;
-					left = ret.x;
-					n.style.position="absolute";
-					n.style.top=top+"px";
-					n.style.left=left+"px";
-				}
-			};
-		})(node);
-		init();
-
-		var anim = d.animateProperty(d.mixin({
-			properties: {
-				top: args.top || 0,
-				left: args.left || 0
-			}
-		}, args));
-		d.connect(anim, "beforeBegin", anim, init);
-
-		return anim; // dojo.Animation
-	};
-
-})();
-
-}
-
-if(!dojo._hasResource["dijit._base.manager"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.manager"] = true;
-dojo.provide("dijit._base.manager");
-
-
-dojo.declare("dijit.WidgetSet", null, {
-	// summary:
-	//		A set of widgets indexed by id. A default instance of this class is
-	//		available as `dijit.registry`
-	//
-	// example:
-	//		Create a small list of widgets:
-	//		|	var ws = new dijit.WidgetSet();
-	//		|	ws.add(dijit.byId("one"));
-	//		| 	ws.add(dijit.byId("two"));
-	//		|	// destroy both:
-	//		|	ws.forEach(function(w){ w.destroy(); });
-	//
-	// example:
-	//		Using dijit.registry:
-	//		|	dijit.registry.forEach(function(w){ /* do something */ });
-
-	constructor: function(){
-		this._hash = {};
-		this.length = 0;
-	},
-
-	add: function(/*dijit._Widget*/ widget){
-		// summary:
-		//		Add a widget to this list. If a duplicate ID is detected, a error is thrown.
-		//
-		// widget: dijit._Widget
-		//		Any dijit._Widget subclass.
-		if(this._hash[widget.id]){
-			throw new Error("Tried to register widget with id==" + widget.id + " but that id is already registered");
-		}
-		this._hash[widget.id] = widget;
-		this.length++;
-	},
-
-	remove: function(/*String*/ id){
-		// summary:
-		//		Remove a widget from this WidgetSet. Does not destroy the widget; simply
-		//		removes the reference.
-		if(this._hash[id]){
-			delete this._hash[id];
-			this.length--;
-		}
-	},
-
-	forEach: function(/*Function*/ func, /* Object? */thisObj){
-		// summary:
-		//		Call specified function for each widget in this set.
-		//
-		// func:
-		//		A callback function to run for each item. Is passed the widget, the index
-		//		in the iteration, and the full hash, similar to `dojo.forEach`.
-		//
-		// thisObj:
-		//		An optional scope parameter
-		//
-		// example:
-		//		Using the default `dijit.registry` instance:
-		//		|	dijit.registry.forEach(function(widget){
-		//		|		console.log(widget.declaredClass);
-		//		|	});
-		//
-		// returns:
-		//		Returns self, in order to allow for further chaining.
-
-		thisObj = thisObj || dojo.global;
-		var i = 0, id;
-		for(id in this._hash){
-			func.call(thisObj, this._hash[id], i++, this._hash);
-		}
-		return this;	// dijit.WidgetSet
-	},
-
-	filter: function(/*Function*/ filter, /* Object? */thisObj){
-		// summary:
-		//		Filter down this WidgetSet to a smaller new WidgetSet
-		//		Works the same as `dojo.filter` and `dojo.NodeList.filter`
-		//
-		// filter:
-		//		Callback function to test truthiness. Is passed the widget
-		//		reference and the pseudo-index in the object.
-		//
-		// thisObj: Object?
-		//		Option scope to use for the filter function.
-		//
-		// example:
-		//		Arbitrary: select the odd widgets in this list
-		//		|	dijit.registry.filter(function(w, i){
-		//		|		return i % 2 == 0;
-		//		|	}).forEach(function(w){ /* odd ones */ });
-
-		thisObj = thisObj || dojo.global;
-		var res = new dijit.WidgetSet(), i = 0, id;
-		for(id in this._hash){
-			var w = this._hash[id];
-			if(filter.call(thisObj, w, i++, this._hash)){
-				res.add(w);
-			}
-		}
-		return res; // dijit.WidgetSet
-	},
-
-	byId: function(/*String*/ id){
-		// summary:
-		//		Find a widget in this list by it's id.
-		// example:
-		//		Test if an id is in a particular WidgetSet
-		//		| var ws = new dijit.WidgetSet();
-		//		| ws.add(dijit.byId("bar"));
-		//		| var t = ws.byId("bar") // returns a widget
-		//		| var x = ws.byId("foo"); // returns undefined
-
-		return this._hash[id];	// dijit._Widget
-	},
-
-	byClass: function(/*String*/ cls){
-		// summary:
-		//		Reduce this widgetset to a new WidgetSet of a particular `declaredClass`
-		//
-		// cls: String
-		//		The Class to scan for. Full dot-notated string.
-		//
-		// example:
-		//		Find all `dijit.TitlePane`s in a page:
-		//		|	dijit.registry.byClass("dijit.TitlePane").forEach(function(tp){ tp.close(); });
-
-		var res = new dijit.WidgetSet(), id, widget;
-		for(id in this._hash){
-			widget = this._hash[id];
-			if(widget.declaredClass == cls){
-				res.add(widget);
-			}
-		 }
-		 return res; // dijit.WidgetSet
-},
-
-	toArray: function(){
-		// summary:
-		//		Convert this WidgetSet into a true Array
-		//
-		// example:
-		//		Work with the widget .domNodes in a real Array
-		//		|	dojo.map(dijit.registry.toArray(), function(w){ return w.domNode; });
-
-		var ar = [];
-		for(var id in this._hash){
-			ar.push(this._hash[id]);
-		}
-		return ar;	// dijit._Widget[]
-},
-
-	map: function(/* Function */func, /* Object? */thisObj){
-		// summary:
-		//		Create a new Array from this WidgetSet, following the same rules as `dojo.map`
-		// example:
-		//		|	var nodes = dijit.registry.map(function(w){ return w.domNode; });
-		//
-		// returns:
-		//		A new array of the returned values.
-		return dojo.map(this.toArray(), func, thisObj); // Array
-	},
-
-	every: function(func, thisObj){
-		// summary:
-		// 		A synthetic clone of `dojo.every` acting explicitly on this WidgetSet
-		//
-		// func: Function
-		//		A callback function run for every widget in this list. Exits loop
-		//		when the first false return is encountered.
-		//
-		// thisObj: Object?
-		//		Optional scope parameter to use for the callback
-
-		thisObj = thisObj || dojo.global;
-		var x = 0, i;
-		for(i in this._hash){
-			if(!func.call(thisObj, this._hash[i], x++, this._hash)){
-				return false; // Boolean
-			}
-		}
-		return true; // Boolean
-	},
-
-	some: function(func, thisObj){
-		// summary:
-		// 		A synthetic clone of `dojo.some` acting explictly on this WidgetSet
-		//
-		// func: Function
-		//		A callback function run for every widget in this list. Exits loop
-		//		when the first true return is encountered.
-		//
-		// thisObj: Object?
-		//		Optional scope parameter to use for the callback
-
-		thisObj = thisObj || dojo.global;
-		var x = 0, i;
-		for(i in this._hash){
-			if(func.call(thisObj, this._hash[i], x++, this._hash)){
-				return true; // Boolean
-			}
-		}
-		return false; // Boolean
-	}
-
-});
-
-(function(){
-
-	/*=====
-	dijit.registry = {
-		// summary:
-		//		A list of widgets on a page.
-		// description:
-		//		Is an instance of `dijit.WidgetSet`
-	};
-	=====*/
-	dijit.registry = new dijit.WidgetSet();
-
-	var hash = dijit.registry._hash,
-		attr = dojo.attr,
-		hasAttr = dojo.hasAttr,
-		style = dojo.style;
-
-	dijit.byId = function(/*String|dijit._Widget*/ id){
-		// summary:
-		//		Returns a widget by it's id, or if passed a widget, no-op (like dojo.byId())
-		return typeof id == "string" ? hash[id] : id; // dijit._Widget
-	};
-
-	var _widgetTypeCtr = {};
-	dijit.getUniqueId = function(/*String*/widgetType){
-		// summary:
-		//		Generates a unique id for a given widgetType
-	
-		var id;
-		do{
-			id = widgetType + "_" +
-				(widgetType in _widgetTypeCtr ?
-					++_widgetTypeCtr[widgetType] : _widgetTypeCtr[widgetType] = 0);
-		}while(hash[id]);
-		return dijit._scopeName == "dijit" ? id : dijit._scopeName + "_" + id; // String
-	};
-	
-	dijit.findWidgets = function(/*DomNode*/ root){
-		// summary:
-		//		Search subtree under root returning widgets found.
-		//		Doesn't search for nested widgets (ie, widgets inside other widgets).
-	
-		var outAry = [];
-	
-		function getChildrenHelper(root){
-			for(var node = root.firstChild; node; node = node.nextSibling){
-				if(node.nodeType == 1){
-					var widgetId = node.getAttribute("widgetId");
-					if(widgetId){
-						var widget = hash[widgetId];
-						if(widget){	// may be null on page w/multiple dojo's loaded
-							outAry.push(widget);
-						}
-					}else{
-						getChildrenHelper(node);
-					}
-				}
-			}
-		}
-	
-		getChildrenHelper(root);
-		return outAry;
-	};
-	
-	dijit._destroyAll = function(){
-		// summary:
-		//		Code to destroy all widgets and do other cleanup on page unload
-	
-		// Clean up focus manager lingering references to widgets and nodes
-		dijit._curFocus = null;
-		dijit._prevFocus = null;
-		dijit._activeStack = [];
-	
-		// Destroy all the widgets, top down
-		dojo.forEach(dijit.findWidgets(dojo.body()), function(widget){
-			// Avoid double destroy of widgets like Menu that are attached to <body>
-			// even though they are logically children of other widgets.
-			if(!widget._destroyed){
-				if(widget.destroyRecursive){
-					widget.destroyRecursive();
-				}else if(widget.destroy){
-					widget.destroy();
-				}
-			}
-		});
-	};
-	
-	if(dojo.isIE){
-		// Only run _destroyAll() for IE because we think it's only necessary in that case,
-		// and because it causes problems on FF.  See bug #3531 for details.
-		dojo.addOnWindowUnload(function(){
-			dijit._destroyAll();
-		});
-	}
-	
-	dijit.byNode = function(/*DOMNode*/ node){
-		// summary:
-		//		Returns the widget corresponding to the given DOMNode
-		return hash[node.getAttribute("widgetId")]; // dijit._Widget
-	};
-	
-	dijit.getEnclosingWidget = function(/*DOMNode*/ node){
-		// summary:
-		//		Returns the widget whose DOM tree contains the specified DOMNode, or null if
-		//		the node is not contained within the DOM tree of any widget
-		while(node){
-			var id = node.getAttribute && node.getAttribute("widgetId");
-			if(id){
-				return hash[id];
-			}
-			node = node.parentNode;
-		}
-		return null;
-	};
-
-	var shown = (dijit._isElementShown = function(/*Element*/ elem){
-		var s = style(elem);
-		return (s.visibility != "hidden")
-			&& (s.visibility != "collapsed")
-			&& (s.display != "none")
-			&& (attr(elem, "type") != "hidden");
-	});
-	
-	dijit.hasDefaultTabStop = function(/*Element*/ elem){
-		// summary:
-		//		Tests if element is tab-navigable even without an explicit tabIndex setting
-	
-		// No explicit tabIndex setting, need to investigate node type
-		switch(elem.nodeName.toLowerCase()){
-			case "a":
-				// An <a> w/out a tabindex is only navigable if it has an href
-				return hasAttr(elem, "href");
-			case "area":
-			case "button":
-			case "input":
-			case "object":
-			case "select":
-			case "textarea":
-				// These are navigable by default
-				return true;
-			case "iframe":
-				// If it's an editor <iframe> then it's tab navigable.
-				var body;
-				try{
-					// non-IE
-					var contentDocument = elem.contentDocument;
-					if("designMode" in contentDocument && contentDocument.designMode == "on"){
-						return true;
-					}
-					body = contentDocument.body;
-				}catch(e1){
-					// contentWindow.document isn't accessible within IE7/8
-					// if the iframe.src points to a foreign url and this
-					// page contains an element, that could get focus
-					try{
-						body = elem.contentWindow.document.body;
-					}catch(e2){
-						return false;
-					}
-				}
-				return body.contentEditable == 'true' || (body.firstChild && body.firstChild.contentEditable == 'true');
-			default:
-				return elem.contentEditable == 'true';
-		}
-	};
-	
-	var isTabNavigable = (dijit.isTabNavigable = function(/*Element*/ elem){
-		// summary:
-		//		Tests if an element is tab-navigable
-	
-		// TODO: convert (and rename method) to return effective tabIndex; will save time in _getTabNavigable()
-		if(attr(elem, "disabled")){
-			return false;
-		}else if(hasAttr(elem, "tabIndex")){
-			// Explicit tab index setting
-			return attr(elem, "tabIndex") >= 0; // boolean
-		}else{
-			// No explicit tabIndex setting, so depends on node type
-			return dijit.hasDefaultTabStop(elem);
-		}
-	});
-
-	dijit._getTabNavigable = function(/*DOMNode*/ root){
-		// summary:
-		//		Finds descendants of the specified root node.
-		//
-		// description:
-		//		Finds the following descendants of the specified root node:
-		//		* the first tab-navigable element in document order
-		//		  without a tabIndex or with tabIndex="0"
-		//		* the last tab-navigable element in document order
-		//		  without a tabIndex or with tabIndex="0"
-		//		* the first element in document order with the lowest
-		//		  positive tabIndex value
-		//		* the last element in document order with the highest
-		//		  positive tabIndex value
-		var first, last, lowest, lowestTabindex, highest, highestTabindex, radioSelected = {};
-		function radioName(node) {
-			// If this element is part of a radio button group, return the name for that group.
-			return node && node.tagName.toLowerCase() == "input" &&
-				node.type && node.type.toLowerCase() == "radio" &&
-				node.name && node.name.toLowerCase();
-		}
-		var walkTree = function(/*DOMNode*/parent){
-			dojo.query("> *", parent).forEach(function(child){
-				// Skip hidden elements, and also non-HTML elements (those in custom namespaces) in IE,
-				// since show() invokes getAttribute("type"), which crash on VML nodes in IE.
-				if((dojo.isIE && child.scopeName!=="HTML") || !shown(child)){
-					return;
-				}
-
-				if(isTabNavigable(child)){
-					var tabindex = attr(child, "tabIndex");
-					if(!hasAttr(child, "tabIndex") || tabindex == 0){
-						if(!first){ first = child; }
-						last = child;
-					}else if(tabindex > 0){
-						if(!lowest || tabindex < lowestTabindex){
-							lowestTabindex = tabindex;
-							lowest = child;
-						}
-						if(!highest || tabindex >= highestTabindex){
-							highestTabindex = tabindex;
-							highest = child;
-						}
-					}
-					var rn = radioName(child);
-					if(dojo.attr(child, "checked") && rn) {
-						radioSelected[rn] = child;
-					}
-				}
-				if(child.nodeName.toUpperCase() != 'SELECT'){
-					walkTree(child);
-				}
-			});
-		};
-		if(shown(root)){ walkTree(root) }
-		function rs(node) {
-			// substitute checked radio button for unchecked one, if there is a checked one with the same name.
-			return radioSelected[radioName(node)] || node;
-		}
-		return { first: rs(first), last: rs(last), lowest: rs(lowest), highest: rs(highest) };
-	}
-	dijit.getFirstInTabbingOrder = function(/*String|DOMNode*/ root){
-		// summary:
-		//		Finds the descendant of the specified root node
-		//		that is first in the tabbing order
-		var elems = dijit._getTabNavigable(dojo.byId(root));
-		return elems.lowest ? elems.lowest : elems.first; // DomNode
-	};
-	
-	dijit.getLastInTabbingOrder = function(/*String|DOMNode*/ root){
-		// summary:
-		//		Finds the descendant of the specified root node
-		//		that is last in the tabbing order
-		var elems = dijit._getTabNavigable(dojo.byId(root));
-		return elems.last ? elems.last : elems.highest; // DomNode
-	};
-	
-	/*=====
-	dojo.mixin(dijit, {
-		// defaultDuration: Integer
-		//		The default animation speed (in ms) to use for all Dijit
-		//		transitional animations, unless otherwise specified
-		//		on a per-instance basis. Defaults to 200, overrided by
-		//		`djConfig.defaultDuration`
-		defaultDuration: 200
-	});
-	=====*/
-	
-	dijit.defaultDuration = dojo.config["defaultDuration"] || 200;
-
-})();
-
-}
-
-if(!dojo._hasResource["dojo.Stateful"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.Stateful"] = true;
-dojo.provide("dojo.Stateful");
-
-
-dojo.declare("dojo.Stateful", null, {
-	// summary:
-	//		Base class for objects that provide named properties with optional getter/setter
-	//		control and the ability to watch for property changes
-	// example:
-	//	|	var obj = new dojo.Stateful();
-	//	|	obj.watch("foo", function(){
-	//	|		console.log("foo changed to " + this.get("foo"));
-	//	|	});
-	//	|	obj.set("foo","bar");
-	postscript: function(mixin){
-		if(mixin){
-			dojo.mixin(this, mixin);
-		}
-	},
-	
-	get: function(/*String*/name){
-		// summary:
-		//		Get a property on a Stateful instance.
-		//	name:
-		//		The property to get.
-		// description:
-		//		Get a named property on a Stateful object. The property may
-		//		potentially be retrieved via a getter method in subclasses. In the base class
-		// 		this just retrieves the object's property.
-		// 		For example:
-		//	|	stateful = new dojo.Stateful({foo: 3});
-		//	|	stateful.get("foo") // returns 3
-		//	|	stateful.foo // returns 3
-		
-		return this[name];
-	},
-	set: function(/*String*/name, /*Object*/value){
-		// summary:
-		//		Set a property on a Stateful instance
-		//	name:
-		//		The property to set.
-		//	value:
-		//		The value to set in the property.
-		// description:
-		//		Sets named properties on a stateful object and notifies any watchers of
-		// 		the property. A programmatic setter may be defined in subclasses.
-		// 		For example:
-		//	|	stateful = new dojo.Stateful();
-		//	|	stateful.watch(function(name, oldValue, value){
-		//	|		// this will be called on the set below
-		//	|	}
-		//	|	stateful.set(foo, 5);
-		//
-		//	set() may also be called with a hash of name/value pairs, ex:
-		//	|	myObj.set({
-		//	|		foo: "Howdy",
-		//	|		bar: 3
-		//	|	})
-		//	This is equivalent to calling set(foo, "Howdy") and set(bar, 3)
-		if(typeof name === "object"){
-			for(var x in name){
-				this.set(x, name[x]);
-			}
-			return this;
-		}
-		var oldValue = this[name];
-		this[name] = value;
-		if(this._watchCallbacks){
-			this._watchCallbacks(name, oldValue, value);
-		}
-		return this;
-	},
-	watch: function(/*String?*/name, /*Function*/callback){
-		// summary:
-		//		Watches a property for changes
-		//	name:
-		//		Indicates the property to watch. This is optional (the callback may be the
-		// 		only parameter), and if omitted, all the properties will be watched
-		// returns:
-		//		An object handle for the watch. The unwatch method of this object
-		// 		can be used to discontinue watching this property:
-		//		|	var watchHandle = obj.watch("foo", callback);
-		//		|	watchHandle.unwatch(); // callback won't be called now
-		//	callback:
-		//		The function to execute when the property changes. This will be called after
-		//		the property has been changed. The callback will be called with the |this|
-		//		set to the instance, the first argument as the name of the property, the
-		// 		second argument as the old value and the third argument as the new value.
-		
-		var callbacks = this._watchCallbacks;
-		if(!callbacks){
-			var self = this;
-			callbacks = this._watchCallbacks = function(name, oldValue, value, ignoreCatchall){
-				var notify = function(propertyCallbacks){
-					if(propertyCallbacks){
-                        propertyCallbacks = propertyCallbacks.slice();
-						for(var i = 0, l = propertyCallbacks.length; i < l; i++){
-							try{
-								propertyCallbacks[i].call(self, name, oldValue, value);
-							}catch(e){
-								console.error(e);
-							}
-						}
-					}
-				};
-				notify(callbacks['_' + name]);
-				if(!ignoreCatchall){
-					notify(callbacks["*"]); // the catch-all
-				}
-			}; // we use a function instead of an object so it will be ignored by JSON conversion
-		}
-		if(!callback && typeof name === "function"){
-			callback = name;
-			name = "*";
-		}else{
-			// prepend with dash to prevent name conflicts with function (like "name" property)
-			name = '_' + name;
-		}
-		var propertyCallbacks = callbacks[name];
-		if(typeof propertyCallbacks !== "object"){
-			propertyCallbacks = callbacks[name] = [];
-		}
-		propertyCallbacks.push(callback);
-		return {
-			unwatch: function(){
-				propertyCallbacks.splice(dojo.indexOf(propertyCallbacks, callback), 1);
-			}
-		};
-	}
-	
-});
-
-}
-
-if(!dojo._hasResource["dijit._WidgetBase"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._WidgetBase"] = true;
-dojo.provide("dijit._WidgetBase");
-
-
-
-
-(function(){
-
-dojo.declare("dijit._WidgetBase", dojo.Stateful, {
-	// summary:
-	//		Future base class for all Dijit widgets.
-	//		_Widget extends this class adding support for various features needed by desktop.
-
-	// id: [const] String
-	//		A unique, opaque ID string that can be assigned by users or by the
-	//		system. If the developer passes an ID which is known not to be
-	//		unique, the specified ID is ignored and the system-generated ID is
-	//		used instead.
-	id: "",
-
-	// lang: [const] String
-	//		Rarely used.  Overrides the default Dojo locale used to render this widget,
-	//		as defined by the [HTML LANG](http://www.w3.org/TR/html401/struct/dirlang.html#adef-lang) attribute.
-	//		Value must be among the list of locales specified during by the Dojo bootstrap,
-	//		formatted according to [RFC 3066](http://www.ietf.org/rfc/rfc3066.txt) (like en-us).
-	lang: "",
-
-	// dir: [const] String
-	//		Bi-directional support, as defined by the [HTML DIR](http://www.w3.org/TR/html401/struct/dirlang.html#adef-dir)
-	//		attribute. Either left-to-right "ltr" or right-to-left "rtl".  If undefined, widgets renders in page's
-	//		default direction.
-	dir: "",
-
-	// class: String
-	//		HTML class attribute
-	"class": "",
-
-	// style: String||Object
-	//		HTML style attributes as cssText string or name/value hash
-	style: "",
-
-	// title: String
-	//		HTML title attribute.
-	//
-	//		For form widgets this specifies a tooltip to display when hovering over
-	//		the widget (just like the native HTML title attribute).
-	//
-	//		For TitlePane or for when this widget is a child of a TabContainer, AccordionContainer,
-	//		etc., it's used to specify the tab label, accordion pane title, etc.
-	title: "",
-
-	// tooltip: String
-	//		When this widget's title attribute is used to for a tab label, accordion pane title, etc.,
-	//		this specifies the tooltip to appear when the mouse is hovered over that text.
-	tooltip: "",
-
-	// baseClass: [protected] String
-	//		Root CSS class of the widget (ex: dijitTextBox), used to construct CSS classes to indicate
-	//		widget state.
-	baseClass: "",
-
-	// srcNodeRef: [readonly] DomNode
-	//		pointer to original DOM node
-	srcNodeRef: null,
-
-	// domNode: [readonly] DomNode
-	//		This is our visible representation of the widget! Other DOM
-	//		Nodes may by assigned to other properties, usually through the
-	//		template system's dojoAttachPoint syntax, but the domNode
-	//		property is the canonical "top level" node in widget UI.
-	domNode: null,
-
-	// containerNode: [readonly] DomNode
-	//		Designates where children of the source DOM node will be placed.
-	//		"Children" in this case refers to both DOM nodes and widgets.
-	//		For example, for myWidget:
-	//
-	//		|	<div dojoType=myWidget>
-	//		|		<b> here's a plain DOM node
-	//		|		<span dojoType=subWidget>and a widget</span>
-	//		|		<i> and another plain DOM node </i>
-	//		|	</div>
-	//
-	//		containerNode would point to:
-	//
-	//		|		<b> here's a plain DOM node
-	//		|		<span dojoType=subWidget>and a widget</span>
-	//		|		<i> and another plain DOM node </i>
-	//
-	//		In templated widgets, "containerNode" is set via a
-	//		dojoAttachPoint assignment.
-	//
-	//		containerNode must be defined for any widget that accepts innerHTML
-	//		(like ContentPane or BorderContainer or even Button), and conversely
-	//		is null for widgets that don't, like TextBox.
-	containerNode: null,
-
-/*=====
-	// _started: Boolean
-	//		startup() has completed.
-	_started: false,
-=====*/
-
-	// attributeMap: [protected] Object
-	//		attributeMap sets up a "binding" between attributes (aka properties)
-	//		of the widget and the widget's DOM.
-	//		Changes to widget attributes listed in attributeMap will be
-	//		reflected into the DOM.
-	//
-	//		For example, calling set('title', 'hello')
-	//		on a TitlePane will automatically cause the TitlePane's DOM to update
-	//		with the new title.
-	//
-	//		attributeMap is a hash where the key is an attribute of the widget,
-	//		and the value reflects a binding to a:
-	//
-	//		- DOM node attribute
-	// |		focus: {node: "focusNode", type: "attribute"}
-	// 		Maps this.focus to this.focusNode.focus
-	//
-	//		- DOM node innerHTML
-	//	|		title: { node: "titleNode", type: "innerHTML" }
-	//		Maps this.title to this.titleNode.innerHTML
-	//
-	//		- DOM node innerText
-	//	|		title: { node: "titleNode", type: "innerText" }
-	//		Maps this.title to this.titleNode.innerText
-	//
-	//		- DOM node CSS class
-	// |		myClass: { node: "domNode", type: "class" }
-	//		Maps this.myClass to this.domNode.className
-	//
-	//		If the value is an array, then each element in the array matches one of the
-	//		formats of the above list.
-	//
-	//		There are also some shorthands for backwards compatibility:
-	//		- string --> { node: string, type: "attribute" }, for example:
-	//	|	"focusNode" ---> { node: "focusNode", type: "attribute" }
-	//		- "" --> { node: "domNode", type: "attribute" }
-	attributeMap: {id:"", dir:"", lang:"", "class":"", style:"", title:""},
-
-	// _blankGif: [protected] String
-	//		Path to a blank 1x1 image.
-	//		Used by <img> nodes in templates that really get their image via CSS background-image.
-	_blankGif: (dojo.config.blankGif || dojo.moduleUrl("dojo", "resources/blank.gif")).toString(),
-
-	//////////// INITIALIZATION METHODS ///////////////////////////////////////
-
-	postscript: function(/*Object?*/params, /*DomNode|String*/srcNodeRef){
-		// summary:
-		//		Kicks off widget instantiation.  See create() for details.
-		// tags:
-		//		private
-		this.create(params, srcNodeRef);
-	},
-
-	create: function(/*Object?*/params, /*DomNode|String?*/srcNodeRef){
-		// summary:
-		//		Kick off the life-cycle of a widget
-		// params:
-		//		Hash of initialization parameters for widget, including
-		//		scalar values (like title, duration etc.) and functions,
-		//		typically callbacks like onClick.
-		// srcNodeRef:
-		//		If a srcNodeRef (DOM node) is specified:
-		//			- use srcNodeRef.innerHTML as my contents
-		//			- if this is a behavioral widget then apply behavior
-		//			  to that srcNodeRef
-		//			- otherwise, replace srcNodeRef with my generated DOM
-		//			  tree
-		// description:
-		//		Create calls a number of widget methods (postMixInProperties, buildRendering, postCreate,
-		//		etc.), some of which of you'll want to override. See http://docs.dojocampus.org/dijit/_Widget
-		//		for a discussion of the widget creation lifecycle.
-		//
-		//		Of course, adventurous developers could override create entirely, but this should
-		//		only be done as a last resort.
-		// tags:
-		//		private
-
-		// store pointer to original DOM tree
-		this.srcNodeRef = dojo.byId(srcNodeRef);
-
-		// For garbage collection.  An array of handles returned by Widget.connect()
-		// Each handle returned from Widget.connect() is an array of handles from dojo.connect()
-		this._connects = [];
-
-		// For garbage collection.  An array of handles returned by Widget.subscribe()
-		// The handle returned from Widget.subscribe() is the handle returned from dojo.subscribe()
-		this._subscribes = [];
-
-		// mix in our passed parameters
-		if(this.srcNodeRef && (typeof this.srcNodeRef.id == "string")){ this.id = this.srcNodeRef.id; }
-		if(params){
-			this.params = params;
-			dojo._mixin(this, params);
-		}
-		this.postMixInProperties();
-
-		// generate an id for the widget if one wasn't specified
-		// (be sure to do this before buildRendering() because that function might
-		// expect the id to be there.)
-		if(!this.id){
-			this.id = dijit.getUniqueId(this.declaredClass.replace(/\./g,"_"));
-		}
-		dijit.registry.add(this);
-
-		this.buildRendering();
-
-		if(this.domNode){
-			// Copy attributes listed in attributeMap into the [newly created] DOM for the widget.
-			// Also calls custom setters for all attributes with custom setters.
-			this._applyAttributes();
-
-			// If srcNodeRef was specified, then swap out original srcNode for this widget's DOM tree.
-			// For 2.0, move this after postCreate().  postCreate() shouldn't depend on the
-			// widget being attached to the DOM since it isn't when a widget is created programmatically like
-			// new MyWidget({}).   See #11635.
-			var source = this.srcNodeRef;
-			if(source && source.parentNode && this.domNode !== source){
-				source.parentNode.replaceChild(this.domNode, source);
-			}
-		}
-
-		if(this.domNode){
-			// Note: for 2.0 may want to rename widgetId to dojo._scopeName + "_widgetId",
-			// assuming that dojo._scopeName even exists in 2.0
-			this.domNode.setAttribute("widgetId", this.id);
-		}
-		this.postCreate();
-
-		// If srcNodeRef has been processed and removed from the DOM (e.g. TemplatedWidget) then delete it to allow GC.
-		if(this.srcNodeRef && !this.srcNodeRef.parentNode){
-			delete this.srcNodeRef;
-		}
-
-		this._created = true;
-	},
-
-	_applyAttributes: function(){
-		// summary:
-		//		Step during widget creation to copy all widget attributes to the
-		//		DOM as per attributeMap and _setXXXAttr functions.
-		// description:
-		//		Skips over blank/false attribute values, unless they were explicitly specified
-		//		as parameters to the widget, since those are the default anyway,
-		//		and setting tabIndex="" is different than not setting tabIndex at all.
-		//
-		//		It processes the attributes in the attribute map first, and then
-		//		it goes through and processes the attributes for the _setXXXAttr
-		//		functions that have been specified
-		// tags:
-		//		private
-		var condAttrApply = function(attr, scope){
-			if((scope.params && attr in scope.params) || scope[attr]){
-				scope.set(attr, scope[attr]);
-			}
-		};
-
-		// Do the attributes in attributeMap
-		for(var attr in this.attributeMap){
-			condAttrApply(attr, this);
-		}
-
-		// And also any attributes with custom setters
-		dojo.forEach(this._getSetterAttributes(), function(a){
-			if(!(a in this.attributeMap)){
-				condAttrApply(a, this);
-			}
-		}, this);
-	},
-
-	_getSetterAttributes: function(){
-		// summary:
-		//		Returns list of attributes with custom setters for this widget
-		var ctor = this.constructor;
-		if(!ctor._setterAttrs){
-			var r = (ctor._setterAttrs = []),
-				attrs,
-				proto = ctor.prototype;
-			for(var fxName in proto){
-				if(dojo.isFunction(proto[fxName]) && (attrs = fxName.match(/^_set([a-zA-Z]*)Attr$/)) && attrs[1]){
-					r.push(attrs[1].charAt(0).toLowerCase() + attrs[1].substr(1));
-				}
-			}
-		}
-		return ctor._setterAttrs;	// String[]
-	},
-
-	postMixInProperties: function(){
-		// summary:
-		//		Called after the parameters to the widget have been read-in,
-		//		but before the widget template is instantiated. Especially
-		//		useful to set properties that are referenced in the widget
-		//		template.
-		// tags:
-		//		protected
-	},
-
-	buildRendering: function(){
-		// summary:
-		//		Construct the UI for this widget, setting this.domNode
-		// description:
-		//		Most widgets will mixin `dijit._Templated`, which implements this
-		//		method.
-		// tags:
-		//		protected
-
-		if(!this.domNode){
-			// Create root node if it wasn't created by _Templated
-			this.domNode = this.srcNodeRef || dojo.create('div');
-		}
-
-		// baseClass is a single class name or occasionally a space-separated list of names.
-		// Add those classes to the DOMNode.  If RTL mode then also add with Rtl suffix.
-		// TODO: make baseClass custom setter
-		if(this.baseClass){
-			var classes = this.baseClass.split(" ");
-			if(!this.isLeftToRight()){
-				classes = classes.concat( dojo.map(classes, function(name){ return name+"Rtl"; }));
-			}
-			dojo.addClass(this.domNode, classes);
-		}
-	},
-
-	postCreate: function(){
-		// summary:
-		//		Processing after the DOM fragment is created
-		// description:
-		//		Called after the DOM fragment has been created, but not necessarily
-		//		added to the document.  Do not include any operations which rely on
-		//		node dimensions or placement.
-		// tags:
-		//		protected
-	},
-
-	startup: function(){
-		// summary:
-		//		Processing after the DOM fragment is added to the document
-		// description:
-		//		Called after a widget and its children have been created and added to the page,
-		//		and all related widgets have finished their create() cycle, up through postCreate().
-		//		This is useful for composite widgets that need to control or layout sub-widgets.
-		//		Many layout widgets can use this as a wiring phase.
-		this._started = true;
-	},
-
-	//////////// DESTROY FUNCTIONS ////////////////////////////////
-
-	destroyRecursive: function(/*Boolean?*/ preserveDom){
-		// summary:
-		// 		Destroy this widget and its descendants
-		// description:
-		//		This is the generic "destructor" function that all widget users
-		// 		should call to cleanly discard with a widget. Once a widget is
-		// 		destroyed, it is removed from the manager object.
-		// preserveDom:
-		//		If true, this method will leave the original DOM structure
-		//		alone of descendant Widgets. Note: This will NOT work with
-		//		dijit._Templated widgets.
-
-		this._beingDestroyed = true;
-		this.destroyDescendants(preserveDom);
-		this.destroy(preserveDom);
-	},
-
-	destroy: function(/*Boolean*/ preserveDom){
-		// summary:
-		// 		Destroy this widget, but not its descendants.
-		//		This method will, however, destroy internal widgets such as those used within a template.
-		// preserveDom: Boolean
-		//		If true, this method will leave the original DOM structure alone.
-		//		Note: This will not yet work with _Templated widgets
-
-		this._beingDestroyed = true;
-		this.uninitialize();
-		var d = dojo,
-			dfe = d.forEach,
-			dun = d.unsubscribe;
-		dfe(this._connects, function(array){
-			dfe(array, d.disconnect);
-		});
-		dfe(this._subscribes, function(handle){
-			dun(handle);
-		});
-
-		// destroy widgets created as part of template, etc.
-		dfe(this._supportingWidgets || [], function(w){
-			if(w.destroyRecursive){
-				w.destroyRecursive();
-			}else if(w.destroy){
-				w.destroy();
-			}
-		});
-
-		this.destroyRendering(preserveDom);
-		dijit.registry.remove(this.id);
-		this._destroyed = true;
-	},
-
-	destroyRendering: function(/*Boolean?*/ preserveDom){
-		// summary:
-		//		Destroys the DOM nodes associated with this widget
-		// preserveDom:
-		//		If true, this method will leave the original DOM structure alone
-		//		during tear-down. Note: this will not work with _Templated
-		//		widgets yet.
-		// tags:
-		//		protected
-
-		if(this.bgIframe){
-			this.bgIframe.destroy(preserveDom);
-			delete this.bgIframe;
-		}
-
-		if(this.domNode){
-			if(preserveDom){
-				dojo.removeAttr(this.domNode, "widgetId");
-			}else{
-				dojo.destroy(this.domNode);
-			}
-			delete this.domNode;
-		}
-
-		if(this.srcNodeRef){
-			if(!preserveDom){
-				dojo.destroy(this.srcNodeRef);
-			}
-			delete this.srcNodeRef;
-		}
-	},
-
-	destroyDescendants: function(/*Boolean?*/ preserveDom){
-		// summary:
-		//		Recursively destroy the children of this widget and their
-		//		descendants.
-		// preserveDom:
-		//		If true, the preserveDom attribute is passed to all descendant
-		//		widget's .destroy() method. Not for use with _Templated
-		//		widgets.
-
-		// get all direct descendants and destroy them recursively
-		dojo.forEach(this.getChildren(), function(widget){
-			if(widget.destroyRecursive){
-				widget.destroyRecursive(preserveDom);
-			}
-		});
-	},
-
-	uninitialize: function(){
-		// summary:
-		//		Stub function. Override to implement custom widget tear-down
-		//		behavior.
-		// tags:
-		//		protected
-		return false;
-	},
-
-	////////////////// GET/SET, CUSTOM SETTERS, ETC. ///////////////////
-
-	_setClassAttr: function(/*String*/ value){
-		// summary:
-		//		Custom setter for the CSS "class" attribute
-		// tags:
-		//		protected
-		var mapNode = this[this.attributeMap["class"] || 'domNode'];
-		dojo.replaceClass(mapNode, value, this["class"]);
-		this._set("class", value);
-	},
-
-	_setStyleAttr: function(/*String||Object*/ value){
-		// summary:
-		//		Sets the style attribute of the widget according to value,
-		//		which is either a hash like {height: "5px", width: "3px"}
-		//		or a plain string
-		// description:
-		//		Determines which node to set the style on based on style setting
-		//		in attributeMap.
-		// tags:
-		//		protected
-
-		var mapNode = this[this.attributeMap.style || 'domNode'];
-
-		// Note: technically we should revert any style setting made in a previous call
-		// to his method, but that's difficult to keep track of.
-
-		if(dojo.isObject(value)){
-			dojo.style(mapNode, value);
-		}else{
-			if(mapNode.style.cssText){
-				mapNode.style.cssText += "; " + value;
-			}else{
-				mapNode.style.cssText = value;
-			}
-		}
-
-		this._set("style", value);
-	},
-
-	_attrToDom: function(/*String*/ attr, /*String*/ value){
-		// summary:
-		//		Reflect a widget attribute (title, tabIndex, duration etc.) to
-		//		the widget DOM, as specified in attributeMap.
-		//		Note some attributes like "type"
-		//		cannot be processed this way as they are not mutable.
-		//
-		// tags:
-		//		private
-
-		var commands = this.attributeMap[attr];
-		dojo.forEach(dojo.isArray(commands) ? commands : [commands], function(command){
-
-			// Get target node and what we are doing to that node
-			var mapNode = this[command.node || command || "domNode"];	// DOM node
-			var type = command.type || "attribute";	// class, innerHTML, innerText, or attribute
-
-			switch(type){
-				case "attribute":
-					if(dojo.isFunction(value)){ // functions execute in the context of the widget
-						value = dojo.hitch(this, value);
-					}
-
-					// Get the name of the DOM node attribute; usually it's the same
-					// as the name of the attribute in the widget (attr), but can be overridden.
-					// Also maps handler names to lowercase, like onSubmit --> onsubmit
-					var attrName = command.attribute ? command.attribute :
-						(/^on[A-Z][a-zA-Z]*$/.test(attr) ? attr.toLowerCase() : attr);
-
-					dojo.attr(mapNode, attrName, value);
-					break;
-				case "innerText":
-					mapNode.innerHTML = "";
-					mapNode.appendChild(dojo.doc.createTextNode(value));
-					break;
-				case "innerHTML":
-					mapNode.innerHTML = value;
-					break;
-				case "class":
-					dojo.replaceClass(mapNode, value, this[attr]);
-					break;
-			}
-		}, this);
-	},
-
-	get: function(name){
-		// summary:
-		//		Get a property from a widget.
-		//	name:
-		//		The property to get.
-		// description:
-		//		Get a named property from a widget. The property may
-		//		potentially be retrieved via a getter method. If no getter is defined, this
-		// 		just retrieves the object's property.
-		// 		For example, if the widget has a properties "foo"
-		//		and "bar" and a method named "_getFooAttr", calling:
-		//	|	myWidget.get("foo");
-		//		would be equivalent to writing:
-		//	|	widget._getFooAttr();
-		//		and:
-		//	|	myWidget.get("bar");
-		//		would be equivalent to writing:
-		//	|	widget.bar;
-		var names = this._getAttrNames(name);
-		return this[names.g] ? this[names.g]() : this[name];
-	},
-	
-	set: function(name, value){
-		// summary:
-		//		Set a property on a widget
-		//	name:
-		//		The property to set.
-		//	value:
-		//		The value to set in the property.
-		// description:
-		//		Sets named properties on a widget which may potentially be handled by a
-		// 		setter in the widget.
-		// 		For example, if the widget has a properties "foo"
-		//		and "bar" and a method named "_setFooAttr", calling:
-		//	|	myWidget.set("foo", "Howdy!");
-		//		would be equivalent to writing:
-		//	|	widget._setFooAttr("Howdy!");
-		//		and:
-		//	|	myWidget.set("bar", 3);
-		//		would be equivalent to writing:
-		//	|	widget.bar = 3;
-		//
-		//	set() may also be called with a hash of name/value pairs, ex:
-		//	|	myWidget.set({
-		//	|		foo: "Howdy",
-		//	|		bar: 3
-		//	|	})
-		//	This is equivalent to calling set(foo, "Howdy") and set(bar, 3)
-
-		if(typeof name === "object"){
-			for(var x in name){
-				this.set(x, name[x]);
-			}
-			return this;
-		}
-		var names = this._getAttrNames(name);
-		if(this[names.s]){
-			// use the explicit setter
-			var result = this[names.s].apply(this, Array.prototype.slice.call(arguments, 1));
-		}else{
-			// if param is specified as DOM node attribute, copy it
-			if(name in this.attributeMap){
-				this._attrToDom(name, value);
-			}
-			this._set(name, value);
-		}
-		return result || this;
-	},
-	
-	_attrPairNames: {},		// shared between all widgets
-	_getAttrNames: function(name){
-		// summary:
-		//		Helper function for get() and set().
-		//		Caches attribute name values so we don't do the string ops every time.
-		// tags:
-		//		private
-
-		var apn = this._attrPairNames;
-		if(apn[name]){ return apn[name]; }
-		var uc = name.charAt(0).toUpperCase() + name.substr(1);
-		return (apn[name] = {
-			n: name+"Node",
-			s: "_set"+uc+"Attr",
-			g: "_get"+uc+"Attr"
-		});
-	},
-
-	_set: function(/*String*/ name, /*anything*/ value){
-		// summary:
-		//		Helper function to set new value for specified attribute, and call handlers
-		//		registered with watch() if the value has changed.
-		var oldValue = this[name];
-		this[name] = value;
-		if(this._watchCallbacks && this._created && value !== oldValue){
-			this._watchCallbacks(name, oldValue, value);
-		}
-	},
-
-	toString: function(){
-		// summary:
-		//		Returns a string that represents the widget
-		// description:
-		//		When a widget is cast to a string, this method will be used to generate the
-		//		output. Currently, it does not implement any sort of reversible
-		//		serialization.
-		return '[Widget ' + this.declaredClass + ', ' + (this.id || 'NO ID') + ']'; // String
-	},
-
-	getDescendants: function(){
-		// summary:
-		//		Returns all the widgets contained by this, i.e., all widgets underneath this.containerNode.
-		//		This method should generally be avoided as it returns widgets declared in templates, which are
-		//		supposed to be internal/hidden, but it's left here for back-compat reasons.
-
-		return this.containerNode ? dojo.query('[widgetId]', this.containerNode).map(dijit.byNode) : []; // dijit._Widget[]
-	},
-
-	getChildren: function(){
-		// summary:
-		//		Returns all the widgets contained by this, i.e., all widgets underneath this.containerNode.
-		//		Does not return nested widgets, nor widgets that are part of this widget's template.
-		return this.containerNode ? dijit.findWidgets(this.containerNode) : []; // dijit._Widget[]
-	},
-
-	connect: function(
-			/*Object|null*/ obj,
-			/*String|Function*/ event,
-			/*String|Function*/ method){
-		// summary:
-		//		Connects specified obj/event to specified method of this object
-		//		and registers for disconnect() on widget destroy.
-		// description:
-		//		Provide widget-specific analog to dojo.connect, except with the
-		//		implicit use of this widget as the target object.
-		//		Events connected with `this.connect` are disconnected upon
-		//		destruction.
-		// returns:
-		//		A handle that can be passed to `disconnect` in order to disconnect before
-		//		the widget is destroyed.
-		// example:
-		//	|	var btn = new dijit.form.Button();
-		//	|	// when foo.bar() is called, call the listener we're going to
-		//	|	// provide in the scope of btn
-		//	|	btn.connect(foo, "bar", function(){
-		//	|		console.debug(this.toString());
-		//	|	});
-		// tags:
-		//		protected
-
-		var handles = [dojo._connect(obj, event, this, method)];
-		this._connects.push(handles);
-		return handles;		// _Widget.Handle
-	},
-
-	disconnect: function(/* _Widget.Handle */ handles){
-		// summary:
-		//		Disconnects handle created by `connect`.
-		//		Also removes handle from this widget's list of connects.
-		// tags:
-		//		protected
-		for(var i=0; i<this._connects.length; i++){
-			if(this._connects[i] == handles){
-				dojo.forEach(handles, dojo.disconnect);
-				this._connects.splice(i, 1);
-				return;
-			}
-		}
-	},
-
-	subscribe: function(
-			/*String*/ topic,
-			/*String|Function*/ method){
-		// summary:
-		//		Subscribes to the specified topic and calls the specified method
-		//		of this object and registers for unsubscribe() on widget destroy.
-		// description:
-		//		Provide widget-specific analog to dojo.subscribe, except with the
-		//		implicit use of this widget as the target object.
-		// example:
-		//	|	var btn = new dijit.form.Button();
-		//	|	// when /my/topic is published, this button changes its label to
-		//	|   // be the parameter of the topic.
-		//	|	btn.subscribe("/my/topic", function(v){
-		//	|		this.set("label", v);
-		//	|	});
-		var handle = dojo.subscribe(topic, this, method);
-
-		// return handles for Any widget that may need them
-		this._subscribes.push(handle);
-		return handle;
-	},
-
-	unsubscribe: function(/*Object*/ handle){
-		// summary:
-		//		Unsubscribes handle created by this.subscribe.
-		//		Also removes handle from this widget's list of subscriptions
-		for(var i=0; i<this._subscribes.length; i++){
-			if(this._subscribes[i] == handle){
-				dojo.unsubscribe(handle);
-				this._subscribes.splice(i, 1);
-				return;
-			}
-		}
-	},
-
-	isLeftToRight: function(){
-		// summary:
-		//		Return this widget's explicit or implicit orientation (true for LTR, false for RTL)
-		// tags:
-		//		protected
-		return this.dir ? (this.dir == "ltr") : dojo._isBodyLtr(); //Boolean
-	},
-
-	placeAt: function(/* String|DomNode|_Widget */reference, /* String?|Int? */position){
-		// summary:
-		//		Place this widget's domNode reference somewhere in the DOM based
-		//		on standard dojo.place conventions, or passing a Widget reference that
-		//		contains and addChild member.
-		//
-		// description:
-		//		A convenience function provided in all _Widgets, providing a simple
-		//		shorthand mechanism to put an existing (or newly created) Widget
-		//		somewhere in the dom, and allow chaining.
-		//
-		// reference:
-		//		The String id of a domNode, a domNode reference, or a reference to a Widget posessing
-		//		an addChild method.
-		//
-		// position:
-		//		If passed a string or domNode reference, the position argument
-		//		accepts a string just as dojo.place does, one of: "first", "last",
-		//		"before", or "after".
-		//
-		//		If passed a _Widget reference, and that widget reference has an ".addChild" method,
-		//		it will be called passing this widget instance into that method, supplying the optional
-		//		position index passed.
-		//
-		// returns:
-		//		dijit._Widget
-		//		Provides a useful return of the newly created dijit._Widget instance so you
-		//		can "chain" this function by instantiating, placing, then saving the return value
-		//		to a variable.
-		//
-		// example:
-		// | 	// create a Button with no srcNodeRef, and place it in the body:
-		// | 	var button = new dijit.form.Button({ label:"click" }).placeAt(dojo.body());
-		// | 	// now, 'button' is still the widget reference to the newly created button
-		// | 	dojo.connect(button, "onClick", function(e){ console.log('click'); });
-		//
-		// example:
-		// |	// create a button out of a node with id="src" and append it to id="wrapper":
-		// | 	var button = new dijit.form.Button({},"src").placeAt("wrapper");
-		//
-		// example:
-		// |	// place a new button as the first element of some div
-		// |	var button = new dijit.form.Button({ label:"click" }).placeAt("wrapper","first");
-		//
-		// example:
-		// |	// create a contentpane and add it to a TabContainer
-		// |	var tc = dijit.byId("myTabs");
-		// |	new dijit.layout.ContentPane({ href:"foo.html", title:"Wow!" }).placeAt(tc)
-
-		if(reference.declaredClass && reference.addChild){
-			reference.addChild(this, position);
-		}else{
-			dojo.place(this.domNode, reference, position);
-		}
-		return this;
-	}
-});
-
-})();
-
-}
-
-if(!dojo._hasResource["dijit._base.focus"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.focus"] = true;
-dojo.provide("dijit._base.focus");
-
-
-
-
-// summary:
-//		These functions are used to query or set the focus and selection.
-//
-//		Also, they trace when widgets become activated/deactivated,
-//		so that the widget can fire _onFocus/_onBlur events.
-//		"Active" here means something similar to "focused", but
-//		"focus" isn't quite the right word because we keep track of
-//		a whole stack of "active" widgets.  Example: ComboButton --> Menu -->
-//		MenuItem.  The onBlur event for ComboButton doesn't fire due to focusing
-//		on the Menu or a MenuItem, since they are considered part of the
-//		ComboButton widget.  It only happens when focus is shifted
-//		somewhere completely different.
-
-dojo.mixin(dijit, {
-	// _curFocus: DomNode
-	//		Currently focused item on screen
-	_curFocus: null,
-
-	// _prevFocus: DomNode
-	//		Previously focused item on screen
-	_prevFocus: null,
-
-	isCollapsed: function(){
-		// summary:
-		//		Returns true if there is no text selected
-		return dijit.getBookmark().isCollapsed;
-	},
-
-	getBookmark: function(){
-		// summary:
-		//		Retrieves a bookmark that can be used with moveToBookmark to return to the same range
-		var bm, rg, tg, sel = dojo.doc.selection, cf = dijit._curFocus;
-
-		if(dojo.global.getSelection){
-			//W3C Range API for selections.
-			sel = dojo.global.getSelection();
-			if(sel){
-				if(sel.isCollapsed){
-					tg = cf? cf.tagName : "";
-					if(tg){
-						//Create a fake rangelike item to restore selections.
-						tg = tg.toLowerCase();
-						if(tg == "textarea" ||
-								(tg == "input" && (!cf.type || cf.type.toLowerCase() == "text"))){
-							sel = {
-								start: cf.selectionStart,
-								end: cf.selectionEnd,
-								node: cf,
-								pRange: true
-							};
-							return {isCollapsed: (sel.end <= sel.start), mark: sel}; //Object.
-						}
-					}
-					bm = {isCollapsed:true};
-					if(sel.rangeCount){
-						bm.mark = sel.getRangeAt(0).cloneRange();
-					}
-				}else{
-					rg = sel.getRangeAt(0);
-					bm = {isCollapsed: false, mark: rg.cloneRange()};
-				}
-			}
-		}else if(sel){
-			// If the current focus was a input of some sort and no selection, don't bother saving
-			// a native bookmark.  This is because it causes issues with dialog/page selection restore.
-			// So, we need to create psuedo bookmarks to work with.
-			tg = cf ? cf.tagName : "";
-			tg = tg.toLowerCase();
-			if(cf && tg && (tg == "button" || tg == "textarea" || tg == "input")){
-				if(sel.type && sel.type.toLowerCase() == "none"){
-					return {
-						isCollapsed: true,
-						mark: null
-					}
-				}else{
-					rg = sel.createRange();
-					return {
-						isCollapsed: rg.text && rg.text.length?false:true,
-						mark: {
-							range: rg,
-							pRange: true
-						}
-					};
-				}
-			}
-			bm = {};
-
-			//'IE' way for selections.
-			try{
-				// createRange() throws exception when dojo in iframe
-				//and nothing selected, see #9632
-				rg = sel.createRange();
-				bm.isCollapsed = !(sel.type == 'Text' ? rg.htmlText.length : rg.length);
-			}catch(e){
-				bm.isCollapsed = true;
-				return bm;
-			}
-			if(sel.type.toUpperCase() == 'CONTROL'){
-				if(rg.length){
-					bm.mark=[];
-					var i=0,len=rg.length;
-					while(i<len){
-						bm.mark.push(rg.item(i++));
-					}
-				}else{
-					bm.isCollapsed = true;
-					bm.mark = null;
-				}
-			}else{
-				bm.mark = rg.getBookmark();
-			}
-		}else{
-			console.warn("No idea how to store the current selection for this browser!");
-		}
-		return bm; // Object
-	},
-
-	moveToBookmark: function(/*Object*/bookmark){
-		// summary:
-		//		Moves current selection to a bookmark
-		// bookmark:
-		//		This should be a returned object from dijit.getBookmark()
-
-		var _doc = dojo.doc,
-			mark = bookmark.mark;
-		if(mark){
-			if(dojo.global.getSelection){
-				//W3C Rangi API (FF, WebKit, Opera, etc)
-				var sel = dojo.global.getSelection();
-				if(sel && sel.removeAllRanges){
-					if(mark.pRange){
-						var r = mark;
-						var n = r.node;
-						n.selectionStart = r.start;
-						n.selectionEnd = r.end;
-					}else{
-						sel.removeAllRanges();
-						sel.addRange(mark);
-					}
-				}else{
-					console.warn("No idea how to restore selection for this browser!");
-				}
-			}else if(_doc.selection && mark){
-				//'IE' way.
-				var rg;
-				if(mark.pRange){
-					rg = mark.range;
-				}else if(dojo.isArray(mark)){
-					rg = _doc.body.createControlRange();
-					//rg.addElement does not have call/apply method, so can not call it directly
-					//rg is not available in "range.addElement(item)", so can't use that either
-					dojo.forEach(mark, function(n){
-						rg.addElement(n);
-					});
-				}else{
-					rg = _doc.body.createTextRange();
-					rg.moveToBookmark(mark);
-				}
-				rg.select();
-			}
-		}
-	},
-
-	getFocus: function(/*Widget?*/ menu, /*Window?*/ openedForWindow){
-		// summary:
-		//		Called as getFocus(), this returns an Object showing the current focus
-		//		and selected text.
-		//
-		//		Called as getFocus(widget), where widget is a (widget representing) a button
-		//		that was just pressed, it returns where focus was before that button
-		//		was pressed.   (Pressing the button may have either shifted focus to the button,
-		//		or removed focus altogether.)   In this case the selected text is not returned,
-		//		since it can't be accurately determined.
-		//
-		// menu: dijit._Widget or {domNode: DomNode} structure
-		//		The button that was just pressed.  If focus has disappeared or moved
-		//		to this button, returns the previous focus.  In this case the bookmark
-		//		information is already lost, and null is returned.
-		//
-		// openedForWindow:
-		//		iframe in which menu was opened
-		//
-		// returns:
-		//		A handle to restore focus/selection, to be passed to `dijit.focus`
-		var node = !dijit._curFocus || (menu && dojo.isDescendant(dijit._curFocus, menu.domNode)) ? dijit._prevFocus : dijit._curFocus;
-		return {
-			node: node,
-			bookmark: (node == dijit._curFocus) && dojo.withGlobal(openedForWindow || dojo.global, dijit.getBookmark),
-			openedForWindow: openedForWindow
-		}; // Object
-	},
-
-	focus: function(/*Object || DomNode */ handle){
-		// summary:
-		//		Sets the focused node and the selection according to argument.
-		//		To set focus to an iframe's content, pass in the iframe itself.
-		// handle:
-		//		object returned by get(), or a DomNode
-
-		if(!handle){ return; }
-
-		var node = "node" in handle ? handle.node : handle,		// because handle is either DomNode or a composite object
-			bookmark = handle.bookmark,
-			openedForWindow = handle.openedForWindow,
-			collapsed = bookmark ? bookmark.isCollapsed : false;
-
-		// Set the focus
-		// Note that for iframe's we need to use the <iframe> to follow the parentNode chain,
-		// but we need to set focus to iframe.contentWindow
-		if(node){
-			var focusNode = (node.tagName.toLowerCase() == "iframe") ? node.contentWindow : node;
-			if(focusNode && focusNode.focus){
-				try{
-					// Gecko throws sometimes if setting focus is impossible,
-					// node not displayed or something like that
-					focusNode.focus();
-				}catch(e){/*quiet*/}
-			}
-			dijit._onFocusNode(node);
-		}
-
-		// set the selection
-		// do not need to restore if current selection is not empty
-		// (use keyboard to select a menu item) or if previous selection was collapsed
-		// as it may cause focus shift (Esp in IE).
-		if(bookmark && dojo.withGlobal(openedForWindow || dojo.global, dijit.isCollapsed) && !collapsed){
-			if(openedForWindow){
-				openedForWindow.focus();
-			}
-			try{
-				dojo.withGlobal(openedForWindow || dojo.global, dijit.moveToBookmark, null, [bookmark]);
-			}catch(e2){
-				/*squelch IE internal error, see http://trac.dojotoolkit.org/ticket/1984 */
-			}
-		}
-	},
-
-	// _activeStack: dijit._Widget[]
-	//		List of currently active widgets (focused widget and it's ancestors)
-	_activeStack: [],
-
-	registerIframe: function(/*DomNode*/ iframe){
-		// summary:
-		//		Registers listeners on the specified iframe so that any click
-		//		or focus event on that iframe (or anything in it) is reported
-		//		as a focus/click event on the <iframe> itself.
-		// description:
-		//		Currently only used by editor.
-		// returns:
-		//		Handle to pass to unregisterIframe()
-		return dijit.registerWin(iframe.contentWindow, iframe);
-	},
-
-	unregisterIframe: function(/*Object*/ handle){
-		// summary:
-		//		Unregisters listeners on the specified iframe created by registerIframe.
-		//		After calling be sure to delete or null out the handle itself.
-		// handle:
-		//		Handle returned by registerIframe()
-
-		dijit.unregisterWin(handle);
-	},
-
-	registerWin: function(/*Window?*/targetWindow, /*DomNode?*/ effectiveNode){
-		// summary:
-		//		Registers listeners on the specified window (either the main
-		//		window or an iframe's window) to detect when the user has clicked somewhere
-		//		or focused somewhere.
-		// description:
-		//		Users should call registerIframe() instead of this method.
-		// targetWindow:
-		//		If specified this is the window associated with the iframe,
-		//		i.e. iframe.contentWindow.
-		// effectiveNode:
-		//		If specified, report any focus events inside targetWindow as
-		//		an event on effectiveNode, rather than on evt.target.
-		// returns:
-		//		Handle to pass to unregisterWin()
-
-		// TODO: make this function private in 2.0; Editor/users should call registerIframe(),
-
-		var mousedownListener = function(evt){
-			dijit._justMouseDowned = true;
-			setTimeout(function(){ dijit._justMouseDowned = false; }, 0);
-			
-			// workaround weird IE bug where the click is on an orphaned node
-			// (first time clicking a Select/DropDownButton inside a TooltipDialog)
-			if(dojo.isIE && evt && evt.srcElement && evt.srcElement.parentNode == null){
-				return;
-			}
-
-			dijit._onTouchNode(effectiveNode || evt.target || evt.srcElement, "mouse");
-		};
-		//dojo.connect(targetWindow, "onscroll", ???);
-
-		// Listen for blur and focus events on targetWindow's document.
-		// IIRC, I'm using attachEvent() rather than dojo.connect() because focus/blur events don't bubble
-		// through dojo.connect(), and also maybe to catch the focus events early, before onfocus handlers
-		// fire.
-		// Connect to <html> (rather than document) on IE to avoid memory leaks, but document on other browsers because
-		// (at least for FF) the focus event doesn't fire on <html> or <body>.
-		var doc = dojo.isIE ? targetWindow.document.documentElement : targetWindow.document;
-		if(doc){
-			if(dojo.isIE){
-				targetWindow.document.body.attachEvent('onmousedown', mousedownListener);
-				var activateListener = function(evt){
-					// IE reports that nodes like <body> have gotten focus, even though they have tabIndex=-1,
-					// Should consider those more like a mouse-click than a focus....
-					if(evt.srcElement.tagName.toLowerCase() != "#document" &&
-						dijit.isTabNavigable(evt.srcElement)){
-						dijit._onFocusNode(effectiveNode || evt.srcElement);
-					}else{
-						dijit._onTouchNode(effectiveNode || evt.srcElement);
-					}
-				};
-				doc.attachEvent('onactivate', activateListener);
-				var deactivateListener =  function(evt){
-					dijit._onBlurNode(effectiveNode || evt.srcElement);
-				};
-				doc.attachEvent('ondeactivate', deactivateListener);
-
-				return function(){
-					targetWindow.document.detachEvent('onmousedown', mousedownListener);
-					doc.detachEvent('onactivate', activateListener);
-					doc.detachEvent('ondeactivate', deactivateListener);
-					doc = null;	// prevent memory leak (apparent circular reference via closure)
-				};
-			}else{
-				doc.body.addEventListener('mousedown', mousedownListener, true);
-				var focusListener = function(evt){
-					dijit._onFocusNode(effectiveNode || evt.target);
-				};
-				doc.addEventListener('focus', focusListener, true);
-				var blurListener = function(evt){
-					dijit._onBlurNode(effectiveNode || evt.target);
-				};
-				doc.addEventListener('blur', blurListener, true);
-
-				return function(){
-					doc.body.removeEventListener('mousedown', mousedownListener, true);
-					doc.removeEventListener('focus', focusListener, true);
-					doc.removeEventListener('blur', blurListener, true);
-					doc = null;	// prevent memory leak (apparent circular reference via closure)
-				};
-			}
-		}
-	},
-
-	unregisterWin: function(/*Handle*/ handle){
-		// summary:
-		//		Unregisters listeners on the specified window (either the main
-		//		window or an iframe's window) according to handle returned from registerWin().
-		//		After calling be sure to delete or null out the handle itself.
-
-		// Currently our handle is actually a function
-		handle && handle();
-	},
-
-	_onBlurNode: function(/*DomNode*/ node){
-		// summary:
-		// 		Called when focus leaves a node.
-		//		Usually ignored, _unless_ it *isn't* follwed by touching another node,
-		//		which indicates that we tabbed off the last field on the page,
-		//		in which case every widget is marked inactive
-		dijit._prevFocus = dijit._curFocus;
-		dijit._curFocus = null;
-
-		if(dijit._justMouseDowned){
-			// the mouse down caused a new widget to be marked as active; this blur event
-			// is coming late, so ignore it.
-			return;
-		}
-
-		// if the blur event isn't followed by a focus event then mark all widgets as inactive.
-		if(dijit._clearActiveWidgetsTimer){
-			clearTimeout(dijit._clearActiveWidgetsTimer);
-		}
-		dijit._clearActiveWidgetsTimer = setTimeout(function(){
-			delete dijit._clearActiveWidgetsTimer;
-			dijit._setStack([]);
-			dijit._prevFocus = null;
-		}, 100);
-	},
-
-	_onTouchNode: function(/*DomNode*/ node, /*String*/ by){
-		// summary:
-		//		Callback when node is focused or mouse-downed
-		// node:
-		//		The node that was touched.
-		// by:
-		//		"mouse" if the focus/touch was caused by a mouse down event
-
-		// ignore the recent blurNode event
-		if(dijit._clearActiveWidgetsTimer){
-			clearTimeout(dijit._clearActiveWidgetsTimer);
-			delete dijit._clearActiveWidgetsTimer;
-		}
-
-		// compute stack of active widgets (ex: ComboButton --> Menu --> MenuItem)
-		var newStack=[];
-		try{
-			while(node){
-				var popupParent = dojo.attr(node, "dijitPopupParent");
-				if(popupParent){
-					node=dijit.byId(popupParent).domNode;
-				}else if(node.tagName && node.tagName.toLowerCase() == "body"){
-					// is this the root of the document or just the root of an iframe?
-					if(node === dojo.body()){
-						// node is the root of the main document
-						break;
-					}
-					// otherwise, find the iframe this node refers to (can't access it via parentNode,
-					// need to do this trick instead). window.frameElement is supported in IE/FF/Webkit
-					node=dojo.window.get(node.ownerDocument).frameElement;
-				}else{
-					// if this node is the root node of a widget, then add widget id to stack,
-					// except ignore clicks on disabled widgets (actually focusing a disabled widget still works,
-					// to support MenuItem)
-					var id = node.getAttribute && node.getAttribute("widgetId"),
-						widget = id && dijit.byId(id);
-					if(widget && !(by == "mouse" && widget.get("disabled"))){
-						newStack.unshift(id);
-					}
-					node=node.parentNode;
-				}
-			}
-		}catch(e){ /* squelch */ }
-
-		dijit._setStack(newStack, by);
-	},
-
-	_onFocusNode: function(/*DomNode*/ node){
-		// summary:
-		//		Callback when node is focused
-
-		if(!node){
-			return;
-		}
-
-		if(node.nodeType == 9){
-			// Ignore focus events on the document itself.  This is here so that
-			// (for example) clicking the up/down arrows of a spinner
-			// (which don't get focus) won't cause that widget to blur. (FF issue)
-			return;
-		}
-
-		dijit._onTouchNode(node);
-
-		if(node == dijit._curFocus){ return; }
-		if(dijit._curFocus){
-			dijit._prevFocus = dijit._curFocus;
-		}
-		dijit._curFocus = node;
-		dojo.publish("focusNode", [node]);
-	},
-
-	_setStack: function(/*String[]*/ newStack, /*String*/ by){
-		// summary:
-		//		The stack of active widgets has changed.  Send out appropriate events and records new stack.
-		// newStack:
-		//		array of widget id's, starting from the top (outermost) widget
-		// by:
-		//		"mouse" if the focus/touch was caused by a mouse down event
-
-		var oldStack = dijit._activeStack;
-		dijit._activeStack = newStack;
-
-		// compare old stack to new stack to see how many elements they have in common
-		for(var nCommon=0; nCommon<Math.min(oldStack.length, newStack.length); nCommon++){
-			if(oldStack[nCommon] != newStack[nCommon]){
-				break;
-			}
-		}
-
-		var widget;
-		// for all elements that have gone out of focus, send blur event
-		for(var i=oldStack.length-1; i>=nCommon; i--){
-			widget = dijit.byId(oldStack[i]);
-			if(widget){
-				widget._focused = false;
-				widget.set("focused", false);
-				widget._hasBeenBlurred = true;
-				if(widget._onBlur){
-					widget._onBlur(by);
-				}
-				dojo.publish("widgetBlur", [widget, by]);
-			}
-		}
-
-		// for all element that have come into focus, send focus event
-		for(i=nCommon; i<newStack.length; i++){
-			widget = dijit.byId(newStack[i]);
-			if(widget){
-				widget._focused = true;
-				widget.set("focused", true);
-				if(widget._onFocus){
-					widget._onFocus(by);
-				}
-				dojo.publish("widgetFocus", [widget, by]);
-			}
-		}
-	}
-});
-
-// register top window and all the iframes it contains
-dojo.addOnLoad(function(){
-	var handle = dijit.registerWin(window);
-	if(dojo.isIE){
-		dojo.addOnWindowUnload(function(){
-			dijit.unregisterWin(handle);
-			handle = null;
-		})
-	}
-});
-
-}
-
-if(!dojo._hasResource["dojo.AdapterRegistry"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.AdapterRegistry"] = true;
-dojo.provide("dojo.AdapterRegistry");
-
-
-dojo.AdapterRegistry = function(/*Boolean?*/ returnWrappers){
-	//	summary:
-	//		A registry to make contextual calling/searching easier.
-	//	description:
-	//		Objects of this class keep list of arrays in the form [name, check,
-	//		wrap, directReturn] that are used to determine what the contextual
-	//		result of a set of checked arguments is. All check/wrap functions
-	//		in this registry should be of the same arity.
-	//	example:
-	//	|	// create a new registry
-	//	|	var reg = new dojo.AdapterRegistry();
-	//	|	reg.register("handleString",
-	//	|		dojo.isString,
-	//	|		function(str){
-	//	|			// do something with the string here
-	//	|		}
-	//	|	);
-	//	|	reg.register("handleArr",
-	//	|		dojo.isArray,
-	//	|		function(arr){
-	//	|			// do something with the array here
-	//	|		}
-	//	|	);
-	//	|
-	//	|	// now we can pass reg.match() *either* an array or a string and
-	//	|	// the value we pass will get handled by the right function
-	//	|	reg.match("someValue"); // will call the first function
-	//	|	reg.match(["someValue"]); // will call the second
-
-	this.pairs = [];
-	this.returnWrappers = returnWrappers || false; // Boolean
-};
-
-dojo.extend(dojo.AdapterRegistry, {
-	register: function(/*String*/ name, /*Function*/ check, /*Function*/ wrap, /*Boolean?*/ directReturn, /*Boolean?*/ override){
-		//	summary:
-		//		register a check function to determine if the wrap function or
-		//		object gets selected
-		//	name:
-		//		a way to identify this matcher.
-		//	check:
-		//		a function that arguments are passed to from the adapter's
-		//		match() function.  The check function should return true if the
-		//		given arguments are appropriate for the wrap function.
-		//	directReturn:
-		//		If directReturn is true, the value passed in for wrap will be
-		//		returned instead of being called. Alternately, the
-		//		AdapterRegistry can be set globally to "return not call" using
-		//		the returnWrappers property. Either way, this behavior allows
-		//		the registry to act as a "search" function instead of a
-		//		function interception library.
-		//	override:
-		//		If override is given and true, the check function will be given
-		//		highest priority. Otherwise, it will be the lowest priority
-		//		adapter.
-		this.pairs[((override) ? "unshift" : "push")]([name, check, wrap, directReturn]);
-	},
-
-	match: function(/* ... */){
-		// summary:
-		//		Find an adapter for the given arguments. If no suitable adapter
-		//		is found, throws an exception. match() accepts any number of
-		//		arguments, all of which are passed to all matching functions
-		//		from the registered pairs.
-		for(var i = 0; i < this.pairs.length; i++){
-			var pair = this.pairs[i];
-			if(pair[1].apply(this, arguments)){
-				if((pair[3])||(this.returnWrappers)){
-					return pair[2];
-				}else{
-					return pair[2].apply(this, arguments);
-				}
-			}
-		}
-		throw new Error("No match found");
-	},
-
-	unregister: function(name){
-		// summary: Remove a named adapter from the registry
-
-		// FIXME: this is kind of a dumb way to handle this. On a large
-		// registry this will be slow-ish and we can use the name as a lookup
-		// should we choose to trade memory for speed.
-		for(var i = 0; i < this.pairs.length; i++){
-			var pair = this.pairs[i];
-			if(pair[0] == name){
-				this.pairs.splice(i, 1);
-				return true;
-			}
-		}
-		return false;
-	}
-});
-
-}
-
-if(!dojo._hasResource["dijit._base.place"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.place"] = true;
-dojo.provide("dijit._base.place");
-
-
-
-
-dijit.getViewport = function(){
-	// summary:
-	//		Returns the dimensions and scroll position of the viewable area of a browser window
-
-	return dojo.window.getBox();
-};
-
-/*=====
-dijit.__Position = function(){
-	// x: Integer
-	//		horizontal coordinate in pixels, relative to document body
-	// y: Integer
-	//		vertical coordinate in pixels, relative to document body
-
-	thix.x = x;
-	this.y = y;
-}
-=====*/
-
-
-dijit.placeOnScreen = function(
-	/* DomNode */			node,
-	/* dijit.__Position */	pos,
-	/* String[] */			corners,
-	/* dijit.__Position? */	padding){
-	// summary:
-	//		Positions one of the node's corners at specified position
-	//		such that node is fully visible in viewport.
-	// description:
-	//		NOTE: node is assumed to be absolutely or relatively positioned.
-	//	pos:
-	//		Object like {x: 10, y: 20}
-	//	corners:
-	//		Array of Strings representing order to try corners in, like ["TR", "BL"].
-	//		Possible values are:
-	//			* "BL" - bottom left
-	//			* "BR" - bottom right
-	//			* "TL" - top left
-	//			* "TR" - top right
-	//	padding:
-	//		set padding to put some buffer around the element you want to position.
-	// example:
-	//		Try to place node's top right corner at (10,20).
-	//		If that makes node go (partially) off screen, then try placing
-	//		bottom left corner at (10,20).
-	//	|	placeOnScreen(node, {x: 10, y: 20}, ["TR", "BL"])
-
-	var choices = dojo.map(corners, function(corner){
-		var c = { corner: corner, pos: {x:pos.x,y:pos.y} };
-		if(padding){
-			c.pos.x += corner.charAt(1) == 'L' ? padding.x : -padding.x;
-			c.pos.y += corner.charAt(0) == 'T' ? padding.y : -padding.y;
-		}
-		return c;
-	});
-
-	return dijit._place(node, choices);
-}
-
-dijit._place = function(/*DomNode*/ node, choices, layoutNode, /*Object*/ aroundNodeCoords){
-	// summary:
-	//		Given a list of spots to put node, put it at the first spot where it fits,
-	//		of if it doesn't fit anywhere then the place with the least overflow
-	// choices: Array
-	//		Array of elements like: {corner: 'TL', pos: {x: 10, y: 20} }
-	//		Above example says to put the top-left corner of the node at (10,20)
-	// layoutNode: Function(node, aroundNodeCorner, nodeCorner, size)
-	//		for things like tooltip, they are displayed differently (and have different dimensions)
-	//		based on their orientation relative to the parent.   This adjusts the popup based on orientation.
-	//		It also passes in the available size for the popup, which is useful for tooltips to
-	//		tell them that their width is limited to a certain amount.   layoutNode() may return a value expressing
-	//		how much the popup had to be modified to fit into the available space.   This is used to determine
-	//		what the best placement is.
-	// aroundNodeCoords: Object
-	//		Size of aroundNode, ex: {w: 200, h: 50}
-
-	// get {x: 10, y: 10, w: 100, h:100} type obj representing position of
-	// viewport over document
-	var view = dojo.window.getBox();
-
-	// This won't work if the node is inside a <div style="position: relative">,
-	// so reattach it to dojo.doc.body.   (Otherwise, the positioning will be wrong
-	// and also it might get cutoff)
-	if(!node.parentNode || String(node.parentNode.tagName).toLowerCase() != "body"){
-		dojo.body().appendChild(node);
-	}
-
-	var best = null;
-	dojo.some(choices, function(choice){
-		var corner = choice.corner;
-		var pos = choice.pos;
-		var overflow = 0;
-
-		// calculate amount of space available given specified position of node
-		var spaceAvailable = {
-			w: corner.charAt(1) == 'L' ? (view.l + view.w) - pos.x : pos.x - view.l,
-			h: corner.charAt(1) == 'T' ? (view.t + view.h) - pos.y : pos.y - view.t
-		};
-
-		// configure node to be displayed in given position relative to button
-		// (need to do this in order to get an accurate size for the node, because
-		// a tooltip's size changes based on position, due to triangle)
-		if(layoutNode){
-			var res = layoutNode(node, choice.aroundCorner, corner, spaceAvailable, aroundNodeCoords);
-			overflow = typeof res == "undefined" ? 0 : res;
-		}
-
-		// get node's size
-		var style = node.style;
-		var oldDisplay = style.display;
-		var oldVis = style.visibility;
-		style.visibility = "hidden";
-		style.display = "";
-		var mb = dojo.marginBox(node);
-		style.display = oldDisplay;
-		style.visibility = oldVis;
-
-		// coordinates and size of node with specified corner placed at pos,
-		// and clipped by viewport
-		var startX = Math.max(view.l, corner.charAt(1) == 'L' ? pos.x : (pos.x - mb.w)),
-			startY = Math.max(view.t, corner.charAt(0) == 'T' ? pos.y : (pos.y - mb.h)),
-			endX = Math.min(view.l + view.w, corner.charAt(1) == 'L' ? (startX + mb.w) : pos.x),
-			endY = Math.min(view.t + view.h, corner.charAt(0) == 'T' ? (startY + mb.h) : pos.y),
-			width = endX - startX,
-			height = endY - startY;
-
-		overflow += (mb.w - width) + (mb.h - height);
-
-		if(best == null || overflow < best.overflow){
-			best = {
-				corner: corner,
-				aroundCorner: choice.aroundCorner,
-				x: startX,
-				y: startY,
-				w: width,
-				h: height,
-				overflow: overflow,
-				spaceAvailable: spaceAvailable
-			};
-		}
-		
-		return !overflow;
-	});
-
-	// In case the best position is not the last one we checked, need to call
-	// layoutNode() again.
-	if(best.overflow && layoutNode){
-		layoutNode(node, best.aroundCorner, best.corner, best.spaceAvailable, aroundNodeCoords);
-	}
-
-	// And then position the node.   Do this last, after the layoutNode() above
-	// has sized the node, due to browser quirks when the viewport is scrolled
-	// (specifically that a Tooltip will shrink to fit as though the window was
-	// scrolled to the left).
-	//
-	// In RTL mode, set style.right rather than style.left so in the common case,
-	// window resizes move the popup along with the aroundNode.
-	var l = dojo._isBodyLtr(),
-		s = node.style;
-	s.top = best.y + "px";
-	s[l ? "left" : "right"] = (l ? best.x : view.w - best.x - best.w) + "px";
-	
-	return best;
-}
-
-dijit.placeOnScreenAroundNode = function(
-	/* DomNode */		node,
-	/* DomNode */		aroundNode,
-	/* Object */		aroundCorners,
-	/* Function? */		layoutNode){
-
-	// summary:
-	//		Position node adjacent or kitty-corner to aroundNode
-	//		such that it's fully visible in viewport.
-	//
-	// description:
-	//		Place node such that corner of node touches a corner of
-	//		aroundNode, and that node is fully visible.
-	//
-	// aroundCorners:
-	//		Ordered list of pairs of corners to try matching up.
-	//		Each pair of corners is represented as a key/value in the hash,
-	//		where the key corresponds to the aroundNode's corner, and
-	//		the value corresponds to the node's corner:
-	//
-	//	|	{ aroundNodeCorner1: nodeCorner1, aroundNodeCorner2: nodeCorner2, ...}
-	//
-	//		The following strings are used to represent the four corners:
-	//			* "BL" - bottom left
-	//			* "BR" - bottom right
-	//			* "TL" - top left
-	//			* "TR" - top right
-	//
-	// layoutNode: Function(node, aroundNodeCorner, nodeCorner)
-	//		For things like tooltip, they are displayed differently (and have different dimensions)
-	//		based on their orientation relative to the parent.   This adjusts the popup based on orientation.
-	//
-	// example:
-	//	|	dijit.placeOnScreenAroundNode(node, aroundNode, {'BL':'TL', 'TR':'BR'});
-	//		This will try to position node such that node's top-left corner is at the same position
-	//		as the bottom left corner of the aroundNode (ie, put node below
-	//		aroundNode, with left edges aligned).  If that fails it will try to put
-	// 		the bottom-right corner of node where the top right corner of aroundNode is
-	//		(ie, put node above aroundNode, with right edges aligned)
-	//
-
-	// get coordinates of aroundNode
-	aroundNode = dojo.byId(aroundNode);
-	var aroundNodePos = dojo.position(aroundNode, true);
-
-	// place the node around the calculated rectangle
-	return dijit._placeOnScreenAroundRect(node,
-		aroundNodePos.x, aroundNodePos.y, aroundNodePos.w, aroundNodePos.h,	// rectangle
-		aroundCorners, layoutNode);
-};
-
-/*=====
-dijit.__Rectangle = function(){
-	// x: Integer
-	//		horizontal offset in pixels, relative to document body
-	// y: Integer
-	//		vertical offset in pixels, relative to document body
-	// width: Integer
-	//		width in pixels
-	// height: Integer
-	//		height in pixels
-
-	this.x = x;
-	this.y = y;
-	this.width = width;
-	this.height = height;
-}
-=====*/
-
-
-dijit.placeOnScreenAroundRectangle = function(
-	/* DomNode */			node,
-	/* dijit.__Rectangle */	aroundRect,
-	/* Object */			aroundCorners,
-	/* Function */			layoutNode){
-
-	// summary:
-	//		Like dijit.placeOnScreenAroundNode(), except that the "around"
-	//		parameter is an arbitrary rectangle on the screen (x, y, width, height)
-	//		instead of a dom node.
-
-	return dijit._placeOnScreenAroundRect(node,
-		aroundRect.x, aroundRect.y, aroundRect.width, aroundRect.height,	// rectangle
-		aroundCorners, layoutNode);
-};
-
-dijit._placeOnScreenAroundRect = function(
-	/* DomNode */		node,
-	/* Number */		x,
-	/* Number */		y,
-	/* Number */		width,
-	/* Number */		height,
-	/* Object */		aroundCorners,
-	/* Function */		layoutNode){
-
-	// summary:
-	//		Like dijit.placeOnScreenAroundNode(), except it accepts coordinates
-	//		of a rectangle to place node adjacent to.
-
-	// TODO: combine with placeOnScreenAroundRectangle()
-
-	// Generate list of possible positions for node
-	var choices = [];
-	for(var nodeCorner in aroundCorners){
-		choices.push( {
-			aroundCorner: nodeCorner,
-			corner: aroundCorners[nodeCorner],
-			pos: {
-				x: x + (nodeCorner.charAt(1) == 'L' ? 0 : width),
-				y: y + (nodeCorner.charAt(0) == 'T' ? 0 : height)
-			}
-		});
-	}
-
-	return dijit._place(node, choices, layoutNode, {w: width, h: height});
-};
-
-dijit.placementRegistry= new dojo.AdapterRegistry();
-dijit.placementRegistry.register("node",
-	function(n, x){
-		return typeof x == "object" &&
-			typeof x.offsetWidth != "undefined" && typeof x.offsetHeight != "undefined";
-	},
-	dijit.placeOnScreenAroundNode);
-dijit.placementRegistry.register("rect",
-	function(n, x){
-		return typeof x == "object" &&
-			"x" in x && "y" in x && "width" in x && "height" in x;
-	},
-	dijit.placeOnScreenAroundRectangle);
-
-dijit.placeOnScreenAroundElement = function(
-	/* DomNode */		node,
-	/* Object */		aroundElement,
-	/* Object */		aroundCorners,
-	/* Function */		layoutNode){
-
-	// summary:
-	//		Like dijit.placeOnScreenAroundNode(), except it accepts an arbitrary object
-	//		for the "around" argument and finds a proper processor to place a node.
-
-	return dijit.placementRegistry.match.apply(dijit.placementRegistry, arguments);
-};
-
-dijit.getPopupAroundAlignment = function(/*Array*/ position, /*Boolean*/ leftToRight){
-	// summary:
-	//		Transforms the passed array of preferred positions into a format suitable for passing as the aroundCorners argument to dijit.placeOnScreenAroundElement.
-	//
-	// position: String[]
-	//		This variable controls the position of the drop down.
-	//		It's an array of strings with the following values:
-	//
-	//			* before: places drop down to the left of the target node/widget, or to the right in
-	//			  the case of RTL scripts like Hebrew and Arabic
-	//			* after: places drop down to the right of the target node/widget, or to the left in
-	//			  the case of RTL scripts like Hebrew and Arabic
-	//			* above: drop down goes above target node
-	//			* below: drop down goes below target node
-	//
-	//		The list is positions is tried, in order, until a position is found where the drop down fits
-	//		within the viewport.
-	//
-	// leftToRight: Boolean
-	//		Whether the popup will be displaying in leftToRight mode.
-	//
-	var align = {};
-	dojo.forEach(position, function(pos){
-		switch(pos){
-			case "after":
-				align[leftToRight ? "BR" : "BL"] = leftToRight ? "BL" : "BR";
-				break;
-			case "before":
-				align[leftToRight ? "BL" : "BR"] = leftToRight ? "BR" : "BL";
-				break;
-			case "below-alt":
-				leftToRight = !leftToRight;
-				// fall through
-			case "below":
-				// first try to align left borders, next try to align right borders (or reverse for RTL mode)
-				align[leftToRight ? "BL" : "BR"] = leftToRight ? "TL" : "TR";
-				align[leftToRight ? "BR" : "BL"] = leftToRight ? "TR" : "TL";
-				break;
-			case "above-alt":
-				leftToRight = !leftToRight;
-				// fall through
-			case "above":
-			default:
-				// first try to align left borders, next try to align right borders (or reverse for RTL mode)
-				align[leftToRight ? "TL" : "TR"] = leftToRight ? "BL" : "BR";
-				align[leftToRight ? "TR" : "TL"] = leftToRight ? "BR" : "BL";
-				break;
-		}
-	});
-	return align;
-};
-
-}
-
-if(!dojo._hasResource["dijit._base.window"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.window"] = true;
-dojo.provide("dijit._base.window");
-
-
-
-dijit.getDocumentWindow = function(doc){
-	return dojo.window.get(doc);
-};
-
-}
-
-if(!dojo._hasResource["dijit._base.popup"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.popup"] = true;
-dojo.provide("dijit._base.popup");
-
-
-
-
-
-/*=====
-dijit.popup.__OpenArgs = function(){
-	// popup: Widget
-	//		widget to display
-	// parent: Widget
-	//		the button etc. that is displaying this popup
-	// around: DomNode
-	//		DOM node (typically a button); place popup relative to this node.  (Specify this *or* "x" and "y" parameters.)
-	// x: Integer
-	//		Absolute horizontal position (in pixels) to place node at.  (Specify this *or* "around" parameter.)
-	// y: Integer
-	//		Absolute vertical position (in pixels) to place node at.  (Specify this *or* "around" parameter.)
-	// orient: Object|String
-	//		When the around parameter is specified, orient should be an
-	//		ordered list of tuples of the form (around-node-corner, popup-node-corner).
-	//		dijit.popup.open() tries to position the popup according to each tuple in the list, in order,
-	//		until the popup appears fully within the viewport.
-	//
-	//		The default value is {BL:'TL', TL:'BL'}, which represents a list of two tuples:
-	//			1. (BL, TL)
-	//			2. (TL, BL)
-	//		where BL means "bottom left" and "TL" means "top left".
-	//		So by default, it first tries putting the popup below the around node, left-aligning them,
-	//		and then tries to put it above the around node, still left-aligning them.   Note that the
-	//		default is horizontally reversed when in RTL mode.
-	//
-	//		When an (x,y) position is specified rather than an around node, orient is either
-	//		"R" or "L".  R (for right) means that it tries to put the popup to the right of the mouse,
-	//		specifically positioning the popup's top-right corner at the mouse position, and if that doesn't
-	//		fit in the viewport, then it tries, in order, the bottom-right corner, the top left corner,
-	//		and the top-right corner.
-	// onCancel: Function
-	//		callback when user has canceled the popup by
-	//			1. hitting ESC or
-	//			2. by using the popup widget's proprietary cancel mechanism (like a cancel button in a dialog);
-	//			   i.e. whenever popupWidget.onCancel() is called, args.onCancel is called
-	// onClose: Function
-	//		callback whenever this popup is closed
-	// onExecute: Function
-	//		callback when user "executed" on the popup/sub-popup by selecting a menu choice, etc. (top menu only)
-	// padding: dijit.__Position
-	//		adding a buffer around the opening position. This is only useful when around is not set.
-	this.popup = popup;
-	this.parent = parent;
-	this.around = around;
-	this.x = x;
-	this.y = y;
-	this.orient = orient;
-	this.onCancel = onCancel;
-	this.onClose = onClose;
-	this.onExecute = onExecute;
-	this.padding = padding;
-}
-=====*/
-
-dijit.popup = {
-	// summary:
-	//		This singleton is used to show/hide widgets as popups.
-
-	// _stack: dijit._Widget[]
-	//		Stack of currently popped up widgets.
-	//		(someone opened _stack[0], and then it opened _stack[1], etc.)
-	_stack: [],
-	
-	// _beginZIndex: Number
-	//		Z-index of the first popup.   (If first popup opens other
-	//		popups they get a higher z-index.)
-	_beginZIndex: 1000,
-
-	_idGen: 1,
-
-	_createWrapper: function(/*Widget || DomNode*/ widget){
-		// summary:
-		//		Initialization for widgets that will be used as popups.
-		//		Puts widget inside a wrapper DIV (if not already in one),
-		//		and returns pointer to that wrapper DIV.
-
-		var wrapper = widget.declaredClass ? widget._popupWrapper : (widget.parentNode && dojo.hasClass(widget.parentNode, "dijitPopup")),
-			node = widget.domNode || widget;
-
-		if(!wrapper){
-			// Create wrapper <div> for when this widget [in the future] will be used as a popup.
-			// This is done early because of IE bugs where creating/moving DOM nodes causes focus
-			// to go wonky, see tests/robot/Toolbar.html to reproduce
-			wrapper = dojo.create("div",{
-				"class":"dijitPopup",
-				style:{ display: "none"},
-				role: "presentation"
-			}, dojo.body());
-			wrapper.appendChild(node);
-
-			var s = node.style;
-			s.display = "";
-			s.visibility = "";
-			s.position = "";
-			s.top = "0px";
-
-			if(widget.declaredClass){		// TODO: in 2.0 change signature to always take widget, then remove if()
-				widget._popupWrapper = wrapper;
-				dojo.connect(widget, "destroy", function(){
-					dojo.destroy(wrapper);
-					delete widget._popupWrapper;
-				});
-			}
-		}
-		
-		return wrapper;
-	},
-
-	moveOffScreen: function(/*Widget || DomNode*/ widget){
-		// summary:
-		//		Moves the popup widget off-screen.
-		//		Do not use this method to hide popups when not in use, because
-		//		that will create an accessibility issue: the offscreen popup is
-		//		still in the tabbing order.
-
-		// Create wrapper if not already there
-		var wrapper = this._createWrapper(widget);
-
-		dojo.style(wrapper, {
-			visibility: "hidden",
-			top: "-9999px",		// prevent transient scrollbar causing misalign (#5776), and initial flash in upper left (#10111)
-			display: ""
-		});
-	},
-
-	hide: function(/*dijit._Widget*/ widget){
-		// summary:
-		//		Hide this popup widget (until it is ready to be shown).
-		//		Initialization for widgets that will be used as popups
-		//
-		// 		Also puts widget inside a wrapper DIV (if not already in one)
-		//
-		//		If popup widget needs to layout it should
-		//		do so when it is made visible, and popup._onShow() is called.
-
-		// Create wrapper if not already there
-		var wrapper = this._createWrapper(widget);
-
-		dojo.style(wrapper, "display", "none");
-	},
-		
-	getTopPopup: function(){
-		// summary:
-		//		Compute the closest ancestor popup that's *not* a child of another popup.
-		//		Ex: For a TooltipDialog with a button that spawns a tree of menus, find the popup of the button.
-		var stack = this._stack;
-		for(var pi=stack.length-1; pi > 0 && stack[pi].parent === stack[pi-1].widget; pi--){
-			/* do nothing, just trying to get right value for pi */
-		}
-		return stack[pi];
-	},
-
-	open: function(/*dijit.popup.__OpenArgs*/ args){
-		// summary:
-		//		Popup the widget at the specified position
-		//
-		// example:
-		//		opening at the mouse position
-		//		|		dijit.popup.open({popup: menuWidget, x: evt.pageX, y: evt.pageY});
-		//
-		// example:
-		//		opening the widget as a dropdown
-		//		|		dijit.popup.open({parent: this, popup: menuWidget, around: this.domNode, onClose: function(){...}});
-		//
-		//		Note that whatever widget called dijit.popup.open() should also listen to its own _onBlur callback
-		//		(fired from _base/focus.js) to know that focus has moved somewhere else and thus the popup should be closed.
-
-		var stack = this._stack,
-			widget = args.popup,
-			orient = args.orient || (
-				(args.parent ? args.parent.isLeftToRight() : dojo._isBodyLtr()) ?
-				{'BL':'TL', 'BR':'TR', 'TL':'BL', 'TR':'BR'} :
-				{'BR':'TR', 'BL':'TL', 'TR':'BR', 'TL':'BL'}
-			),
-			around = args.around,
-			id = (args.around && args.around.id) ? (args.around.id+"_dropdown") : ("popup_"+this._idGen++);
-
-		// If we are opening a new popup that isn't a child of a currently opened popup, then
-		// close currently opened popup(s).   This should happen automatically when the old popups
-		// gets the _onBlur() event, except that the _onBlur() event isn't reliable on IE, see [22198].
-		while(stack.length && (!args.parent || !dojo.isDescendant(args.parent.domNode, stack[stack.length-1].widget.domNode))){
-			dijit.popup.close(stack[stack.length-1].widget);
-		}
-
-		// Get pointer to popup wrapper, and create wrapper if it doesn't exist
-		var wrapper = this._createWrapper(widget);
-
-
-		dojo.attr(wrapper, {
-			id: id,
-			style: {
-				zIndex: this._beginZIndex + stack.length
-			},
-			"class": "dijitPopup " + (widget.baseClass || widget["class"] || "").split(" ")[0] +"Popup",
-			dijitPopupParent: args.parent ? args.parent.id : ""
-		});
-
-		if(dojo.isIE || dojo.isMoz){
-			if(!widget.bgIframe){
-				// setting widget.bgIframe triggers cleanup in _Widget.destroy()
-				widget.bgIframe = new dijit.BackgroundIframe(wrapper);
-			}
-		}
-
-		// position the wrapper node and make it visible
-		var best = around ?
-			dijit.placeOnScreenAroundElement(wrapper, around, orient, widget.orient ? dojo.hitch(widget, "orient") : null) :
-			dijit.placeOnScreen(wrapper, args, orient == 'R' ? ['TR','BR','TL','BL'] : ['TL','BL','TR','BR'], args.padding);
-
-		wrapper.style.display = "";
-		wrapper.style.visibility = "visible";
-		widget.domNode.style.visibility = "visible";	// counteract effects from _HasDropDown
-
-		var handlers = [];
-
-		// provide default escape and tab key handling
-		// (this will work for any widget, not just menu)
-		handlers.push(dojo.connect(wrapper, "onkeypress", this, function(evt){
-			if(evt.charOrCode == dojo.keys.ESCAPE && args.onCancel){
-				dojo.stopEvent(evt);
-				args.onCancel();
-			}else if(evt.charOrCode === dojo.keys.TAB){
-				dojo.stopEvent(evt);
-				var topPopup = this.getTopPopup();
-				if(topPopup && topPopup.onCancel){
-					topPopup.onCancel();
-				}
-			}
-		}));
-
-		// watch for cancel/execute events on the popup and notify the caller
-		// (for a menu, "execute" means clicking an item)
-		if(widget.onCancel){
-			handlers.push(dojo.connect(widget, "onCancel", args.onCancel));
-		}
-
-		handlers.push(dojo.connect(widget, widget.onExecute ? "onExecute" : "onChange", this, function(){
-			var topPopup = this.getTopPopup();
-			if(topPopup && topPopup.onExecute){
-				topPopup.onExecute();
-			}
-		}));
-
-		stack.push({
-			widget: widget,
-			parent: args.parent,
-			onExecute: args.onExecute,
-			onCancel: args.onCancel,
- 			onClose: args.onClose,
-			handlers: handlers
-		});
-
-		if(widget.onOpen){
-			// TODO: in 2.0 standardize onShow() (used by StackContainer) and onOpen() (used here)
-			widget.onOpen(best);
-		}
-
-		return best;
-	},
-
-	close: function(/*dijit._Widget?*/ popup){
-		// summary:
-		//		Close specified popup and any popups that it parented.
-		//		If no popup is specified, closes all popups.
-
-		var stack = this._stack;
-
-		// Basically work backwards from the top of the stack closing popups
-		// until we hit the specified popup, but IIRC there was some issue where closing
-		// a popup would cause others to close too.  Thus if we are trying to close B in [A,B,C]
-		// closing C might close B indirectly and then the while() condition will run where stack==[A]...
-		// so the while condition is constructed defensively.
-		while((popup && dojo.some(stack, function(elem){return elem.widget == popup;})) ||
-			(!popup && stack.length)){
-			var top = stack.pop(),
-				widget = top.widget,
-				onClose = top.onClose;
-
-			if(widget.onClose){
-				// TODO: in 2.0 standardize onHide() (used by StackContainer) and onClose() (used here)
-				widget.onClose();
-			}
-			dojo.forEach(top.handlers, dojo.disconnect);
-
-			// Hide the widget and it's wrapper unless it has already been destroyed in above onClose() etc.
-			if(widget && widget.domNode){
-				this.hide(widget);
-			}
-                        
-			if(onClose){
-				onClose();
-			}
-		}
-	}
-};
-
-// TODO: remove dijit._frames, it isn't being used much, since popups never release their
-// iframes (see [22236])
-dijit._frames = new function(){
-	// summary:
-	//		cache of iframes
-
-	var queue = [];
-
-	this.pop = function(){
-		var iframe;
-		if(queue.length){
-			iframe = queue.pop();
-			iframe.style.display="";
-		}else{
-			if(dojo.isIE < 9){
-				var burl = dojo.config["dojoBlankHtmlUrl"] || (dojo.moduleUrl("dojo", "resources/blank.html")+"") || "javascript:\"\"";
-				var html="<iframe src='" + burl + "'"
-					+ " style='position: absolute; left: 0px; top: 0px;"
-					+ "z-index: -1; filter:Alpha(Opacity=\"0\");'>";
-				iframe = dojo.doc.createElement(html);
-			}else{
-			 	iframe = dojo.create("iframe");
-				iframe.src = 'javascript:""';
-				iframe.className = "dijitBackgroundIframe";
-				dojo.style(iframe, "opacity", 0.1);
-			}
-			iframe.tabIndex = -1; // Magic to prevent iframe from getting focus on tab keypress - as style didn't work.
-			dijit.setWaiRole(iframe,"presentation");
-		}
-		return iframe;
-	};
-
-	this.push = function(iframe){
-		iframe.style.display="none";
-		queue.push(iframe);
-	}
-}();
-
-
-dijit.BackgroundIframe = function(/*DomNode*/ node){
-	// summary:
-	//		For IE/FF z-index schenanigans. id attribute is required.
-	//
-	// description:
-	//		new dijit.BackgroundIframe(node)
-	//			Makes a background iframe as a child of node, that fills
-	//			area (and position) of node
-
-	if(!node.id){ throw new Error("no id"); }
-	if(dojo.isIE || dojo.isMoz){
-		var iframe = (this.iframe = dijit._frames.pop());
-		node.appendChild(iframe);
-		if(dojo.isIE<7 || dojo.isQuirks){
-			this.resize(node);
-			this._conn = dojo.connect(node, 'onresize', this, function(){
-				this.resize(node);
-			});
-		}else{
-			dojo.style(iframe, {
-				width: '100%',
-				height: '100%'
-			});
-		}
-	}
-};
-
-dojo.extend(dijit.BackgroundIframe, {
-	resize: function(node){
-		// summary:
-		// 		Resize the iframe so it's the same size as node.
-		//		Needed on IE6 and IE/quirks because height:100% doesn't work right.
-		if(this.iframe){
-			dojo.style(this.iframe, {
-				width: node.offsetWidth + 'px',
-				height: node.offsetHeight + 'px'
-			});
-		}
-	},
-	destroy: function(){
-		// summary:
-		//		destroy the iframe
-		if(this._conn){
-			dojo.disconnect(this._conn);
-			this._conn = null;
-		}
-		if(this.iframe){
-			dijit._frames.push(this.iframe);
-			delete this.iframe;
-		}
-	}
-});
-
-}
-
-if(!dojo._hasResource["dijit._base.scroll"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.scroll"] = true;
-dojo.provide("dijit._base.scroll");
-
-
-
-dijit.scrollIntoView = function(/*DomNode*/ node, /*Object?*/ pos){
-	// summary:
-	//		Scroll the passed node into view, if it is not already.
-	//		Deprecated, use `dojo.window.scrollIntoView` instead.
-	
-	dojo.window.scrollIntoView(node, pos);
-};
-
-}
-
-if(!dojo._hasResource["dojo.uacss"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.uacss"] = true;
-dojo.provide("dojo.uacss");
-
-
-(function(){
-	// summary:
-	//		Applies pre-set CSS classes to the top-level HTML node, based on:
-	// 			- browser (ex: dj_ie)
-	//			- browser version (ex: dj_ie6)
-	//			- box model (ex: dj_contentBox)
-	//			- text direction (ex: dijitRtl)
-	//
-	//		In addition, browser, browser version, and box model are
-	//		combined with an RTL flag when browser text is RTL.  ex: dj_ie-rtl.
-
-	var d = dojo,
-		html = d.doc.documentElement,
-		ie = d.isIE,
-		opera = d.isOpera,
-		maj = Math.floor,
-		ff = d.isFF,
-		boxModel = d.boxModel.replace(/-/,''),
-
-		classes = {
-			dj_ie: ie,
-			dj_ie6: maj(ie) == 6,
-			dj_ie7: maj(ie) == 7,
-			dj_ie8: maj(ie) == 8,
-			dj_ie9: maj(ie) == 9,
-			dj_quirks: d.isQuirks,
-			dj_iequirks: ie && d.isQuirks,
-
-			// NOTE: Opera not supported by dijit
-			dj_opera: opera,
-
-			dj_khtml: d.isKhtml,
-
-			dj_webkit: d.isWebKit,
-			dj_safari: d.isSafari,
-			dj_chrome: d.isChrome,
-
-			dj_gecko: d.isMozilla,
-			dj_ff3: maj(ff) == 3
-		}; // no dojo unsupported browsers
-
-	classes["dj_" + boxModel] = true;
-
-	// apply browser, browser version, and box model class names
-	var classStr = "";
-	for(var clz in classes){
-		if(classes[clz]){
-			classStr += clz + " ";
-		}
-	}
-	html.className = d.trim(html.className + " " + classStr);
-
-	// If RTL mode, then add dj_rtl flag plus repeat existing classes with -rtl extension.
-	// We can't run the code below until the <body> tag has loaded (so we can check for dir=rtl).
-	// Unshift() is to run sniff code before the parser.
-	dojo._loaders.unshift(function(){
-		if(!dojo._isBodyLtr()){
-			var rtlClassStr = "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl ")
-			html.className = d.trim(html.className + " " + rtlClassStr);
-		}
-	});
-})();
-
-}
-
-if(!dojo._hasResource["dijit._base.sniff"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.sniff"] = true;
-dojo.provide("dijit._base.sniff");
-
-
-
-// summary:
-//		Applies pre-set CSS classes to the top-level HTML node, see
-//		`dojo.uacss` for details.
-//
-//		Simply doing a require on this module will
-//		establish this CSS.  Modified version of Morris' CSS hack.
-
-}
-
-if(!dojo._hasResource["dijit._base.typematic"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.typematic"] = true;
-dojo.provide("dijit._base.typematic");
-
-
-dijit.typematic = {
-	// summary:
-	//		These functions are used to repetitively call a user specified callback
-	//		method when a specific key or mouse click over a specific DOM node is
-	//		held down for a specific amount of time.
-	//		Only 1 such event is allowed to occur on the browser page at 1 time.
-
-	_fireEventAndReload: function(){
-		this._timer = null;
-		this._callback(++this._count, this._node, this._evt);
-		
-		// Schedule next event, timer is at most minDelay (default 10ms) to avoid
-		// browser overload (particularly avoiding starving DOH robot so it never gets to send a mouseup)
-		this._currentTimeout = Math.max(
-			this._currentTimeout < 0 ? this._initialDelay :
-				(this._subsequentDelay > 1 ? this._subsequentDelay : Math.round(this._currentTimeout * this._subsequentDelay)),
-			this._minDelay);
-		this._timer = setTimeout(dojo.hitch(this, "_fireEventAndReload"), this._currentTimeout);
-	},
-
-	trigger: function(/*Event*/ evt, /*Object*/ _this, /*DOMNode*/ node, /*Function*/ callback, /*Object*/ obj, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){
-		// summary:
-		//		Start a timed, repeating callback sequence.
-		//		If already started, the function call is ignored.
-		//		This method is not normally called by the user but can be
-		//		when the normal listener code is insufficient.
-		// evt:
-		//		key or mouse event object to pass to the user callback
-		// _this:
-		//		pointer to the user's widget space.
-		// node:
-		//		the DOM node object to pass the the callback function
-		// callback:
-		//		function to call until the sequence is stopped called with 3 parameters:
-		// count:
-		//		integer representing number of repeated calls (0..n) with -1 indicating the iteration has stopped
-		// node:
-		//		the DOM node object passed in
-		// evt:
-		//		key or mouse event object
-		// obj:
-		//		user space object used to uniquely identify each typematic sequence
-		// subsequentDelay (optional):
-		//		if > 1, the number of milliseconds until the 3->n events occur
-		//		or else the fractional time multiplier for the next event's delay, default=0.9
-		// initialDelay (optional):
-		//		the number of milliseconds until the 2nd event occurs, default=500ms
-		// minDelay (optional):
-		//		the maximum delay in milliseconds for event to fire, default=10ms
-		if(obj != this._obj){
-			this.stop();
-			this._initialDelay = initialDelay || 500;
-			this._subsequentDelay = subsequentDelay || 0.90;
-			this._minDelay = minDelay || 10;
-			this._obj = obj;
-			this._evt = evt;
-			this._node = node;
-			this._currentTimeout = -1;
-			this._count = -1;
-			this._callback = dojo.hitch(_this, callback);
-			this._fireEventAndReload();
-			this._evt = dojo.mixin({faux: true}, evt);
-		}
-	},
-
-	stop: function(){
-		// summary:
-		//		Stop an ongoing timed, repeating callback sequence.
-		if(this._timer){
-			clearTimeout(this._timer);
-			this._timer = null;
-		}
-		if(this._obj){
-			this._callback(-1, this._node, this._evt);
-			this._obj = null;
-		}
-	},
-
-	addKeyListener: function(/*DOMNode*/ node, /*Object*/ keyObject, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){
-		// summary:
-		//		Start listening for a specific typematic key.
-		//		See also the trigger method for other parameters.
-		// keyObject:
-		//		an object defining the key to listen for:
-		// 		charOrCode:
-		//			the printable character (string) or keyCode (number) to listen for.
-		// 		keyCode:
-		//			(deprecated - use charOrCode) the keyCode (number) to listen for (implies charCode = 0).
-		// 		charCode:
-		//			(deprecated - use charOrCode) the charCode (number) to listen for.
-		// 		ctrlKey:
-		//			desired ctrl key state to initiate the callback sequence:
-		//			- pressed (true)
-		//			- released (false)
-		//			- either (unspecified)
-		// 		altKey:
-		//			same as ctrlKey but for the alt key
-		// 		shiftKey:
-		//			same as ctrlKey but for the shift key
-		// returns:
-		//		an array of dojo.connect handles
-		if(keyObject.keyCode){
-			keyObject.charOrCode = keyObject.keyCode;
-			dojo.deprecated("keyCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.", "", "2.0");
-		}else if(keyObject.charCode){
-			keyObject.charOrCode = String.fromCharCode(keyObject.charCode);
-			dojo.deprecated("charCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.", "", "2.0");
-		}
-		return [
-			dojo.connect(node, "onkeypress", this, function(evt){
-				if(evt.charOrCode == keyObject.charOrCode &&
-				(keyObject.ctrlKey === undefined || keyObject.ctrlKey == evt.ctrlKey) &&
-				(keyObject.altKey === undefined || keyObject.altKey == evt.altKey) &&
-				(keyObject.metaKey === undefined || keyObject.metaKey == (evt.metaKey || false)) && // IE doesn't even set metaKey
-				(keyObject.shiftKey === undefined || keyObject.shiftKey == evt.shiftKey)){
-					dojo.stopEvent(evt);
-					dijit.typematic.trigger(evt, _this, node, callback, keyObject, subsequentDelay, initialDelay, minDelay);
-				}else if(dijit.typematic._obj == keyObject){
-					dijit.typematic.stop();
-				}
-			}),
-			dojo.connect(node, "onkeyup", this, function(evt){
-				if(dijit.typematic._obj == keyObject){
-					dijit.typematic.stop();
-				}
-			})
-		];
-	},
-
-	addMouseListener: function(/*DOMNode*/ node, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){
-		// summary:
-		//		Start listening for a typematic mouse click.
-		//		See the trigger method for other parameters.
-		// returns:
-		//		an array of dojo.connect handles
-		var dc = dojo.connect;
-		return [
-			dc(node, "mousedown", this, function(evt){
-				dojo.stopEvent(evt);
-				dijit.typematic.trigger(evt, _this, node, callback, node, subsequentDelay, initialDelay, minDelay);
-			}),
-			dc(node, "mouseup", this, function(evt){
-				dojo.stopEvent(evt);
-				dijit.typematic.stop();
-			}),
-			dc(node, "mouseout", this, function(evt){
-				dojo.stopEvent(evt);
-				dijit.typematic.stop();
-			}),
-			dc(node, "mousemove", this, function(evt){
-				evt.preventDefault();
-			}),
-			dc(node, "dblclick", this, function(evt){
-				dojo.stopEvent(evt);
-				if(dojo.isIE){
-					dijit.typematic.trigger(evt, _this, node, callback, node, subsequentDelay, initialDelay, minDelay);
-					setTimeout(dojo.hitch(this, dijit.typematic.stop), 50);
-				}
-			})
-		];
-	},
-
-	addListener: function(/*Node*/ mouseNode, /*Node*/ keyNode, /*Object*/ keyObject, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){
-		// summary:
-		//		Start listening for a specific typematic key and mouseclick.
-		//		This is a thin wrapper to addKeyListener and addMouseListener.
-		//		See the addMouseListener and addKeyListener methods for other parameters.
-		// mouseNode:
-		//		the DOM node object to listen on for mouse events.
-		// keyNode:
-		//		the DOM node object to listen on for key events.
-		// returns:
-		//		an array of dojo.connect handles
-		return this.addKeyListener(keyNode, keyObject, _this, callback, subsequentDelay, initialDelay, minDelay).concat(
-			this.addMouseListener(mouseNode, _this, callback, subsequentDelay, initialDelay, minDelay));
-	}
-};
-
-}
-
-if(!dojo._hasResource["dijit._base.wai"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.wai"] = true;
-dojo.provide("dijit._base.wai");
-
-
-dijit.wai = {
-	onload: function(){
-		// summary:
-		//		Detects if we are in high-contrast mode or not
-
-		// This must be a named function and not an anonymous
-		// function, so that the widget parsing code can make sure it
-		// registers its onload function after this function.
-		// DO NOT USE "this" within this function.
-
-		// create div for testing if high contrast mode is on or images are turned off
-		var div = dojo.create("div",{
-			id: "a11yTestNode",
-			style:{
-				cssText:'border: 1px solid;'
-					+ 'border-color:red green;'
-					+ 'position: absolute;'
-					+ 'height: 5px;'
-					+ 'top: -999px;'
-					+ 'background-image: url("' + (dojo.config.blankGif || dojo.moduleUrl("dojo", "resources/blank.gif")) + '");'
-			}
-		}, dojo.body());
-
-		// test it
-		var cs = dojo.getComputedStyle(div);
-		if(cs){
-			var bkImg = cs.backgroundImage;
-			var needsA11y = (cs.borderTopColor == cs.borderRightColor) || (bkImg != null && (bkImg == "none" || bkImg == "url(invalid-url:)" ));
-			dojo[needsA11y ? "addClass" : "removeClass"](dojo.body(), "dijit_a11y");
-			if(dojo.isIE){
-				div.outerHTML = "";		// prevent mixed-content warning, see http://support.microsoft.com/kb/925014
-			}else{
-				dojo.body().removeChild(div);
-			}
-		}
-	}
-};
-
-// Test if computer is in high contrast mode.
-// Make sure the a11y test runs first, before widgets are instantiated.
-if(dojo.isIE || dojo.isMoz){	// NOTE: checking in Safari messes things up
-	dojo._loaders.unshift(dijit.wai.onload);
-}
-
-dojo.mixin(dijit, {
-	hasWaiRole: function(/*Element*/ elem, /*String?*/ role){
-		// summary:
-		//		Determines if an element has a particular role.
-		// returns:
-		//		True if elem has the specific role attribute and false if not.
-		// 		For backwards compatibility if role parameter not provided,
-		// 		returns true if has a role
-		var waiRole = this.getWaiRole(elem);
-		return role ? (waiRole.indexOf(role) > -1) : (waiRole.length > 0);
-	},
-
-	getWaiRole: function(/*Element*/ elem){
-		// summary:
-		//		Gets the role for an element (which should be a wai role).
-		// returns:
-		//		The role of elem or an empty string if elem
-		//		does not have a role.
-		 return dojo.trim((dojo.attr(elem, "role") || "").replace("wairole:",""));
-	},
-
-	setWaiRole: function(/*Element*/ elem, /*String*/ role){
-		// summary:
-		//		Sets the role on an element.
-		// description:
-		//		Replace existing role attribute with new role.
-
-			dojo.attr(elem, "role", role);
-	},
-
-	removeWaiRole: function(/*Element*/ elem, /*String*/ role){
-		// summary:
-		//		Removes the specified role from an element.
-		// 		Removes role attribute if no specific role provided (for backwards compat.)
-
-		var roleValue = dojo.attr(elem, "role");
-		if(!roleValue){ return; }
-		if(role){
-			var t = dojo.trim((" " + roleValue + " ").replace(" " + role + " ", " "));
-			dojo.attr(elem, "role", t);
-		}else{
-			elem.removeAttribute("role");
-		}
-	},
-
-	hasWaiState: function(/*Element*/ elem, /*String*/ state){
-		// summary:
-		//		Determines if an element has a given state.
-		// description:
-		//		Checks for an attribute called "aria-"+state.
-		// returns:
-		//		true if elem has a value for the given state and
-		//		false if it does not.
-
-		return elem.hasAttribute ? elem.hasAttribute("aria-"+state) : !!elem.getAttribute("aria-"+state);
-	},
-
-	getWaiState: function(/*Element*/ elem, /*String*/ state){
-		// summary:
-		//		Gets the value of a state on an element.
-		// description:
-		//		Checks for an attribute called "aria-"+state.
-		// returns:
-		//		The value of the requested state on elem
-		//		or an empty string if elem has no value for state.
-
-		return elem.getAttribute("aria-"+state) || "";
-	},
-
-	setWaiState: function(/*Element*/ elem, /*String*/ state, /*String*/ value){
-		// summary:
-		//		Sets a state on an element.
-		// description:
-		//		Sets an attribute called "aria-"+state.
-
-		elem.setAttribute("aria-"+state, value);
-	},
-
-	removeWaiState: function(/*Element*/ elem, /*String*/ state){
-		// summary:
-		//		Removes a state from an element.
-		// description:
-		//		Sets an attribute called "aria-"+state.
-
-		elem.removeAttribute("aria-"+state);
-	}
-});
-
-}
-
-if(!dojo._hasResource["dijit._base"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base"] = true;
-dojo.provide("dijit._base");
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-if(!dojo._hasResource["dijit._Widget"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._Widget"] = true;
-dojo.provide("dijit._Widget");
-
-
-
-
-
-////////////////// DEFERRED CONNECTS ///////////////////
-
-// This code is to assist deferring dojo.connect() calls in widgets (connecting to events on the widgets'
-// DOM nodes) until someone actually needs to monitor that event.
-dojo.connect(dojo, "_connect",
-	function(/*dijit._Widget*/ widget, /*String*/ event){
-		if(widget && dojo.isFunction(widget._onConnect)){
-			widget._onConnect(event);
-		}
-	});
-
-dijit._connectOnUseEventHandler = function(/*Event*/ event){};
-
-////////////////// ONDIJITCLICK SUPPORT ///////////////////
-
-// Keep track of where the last keydown event was, to help avoid generating
-// spurious ondijitclick events when:
-// 1. focus is on a <button> or <a>
-// 2. user presses then releases the ENTER key
-// 3. onclick handler fires and shifts focus to another node, with an ondijitclick handler
-// 4. onkeyup event fires, causing the ondijitclick handler to fire
-dijit._lastKeyDownNode = null;
-if(dojo.isIE){
-	(function(){
-		var keydownCallback = function(evt){
-			dijit._lastKeyDownNode = evt.srcElement;
-		};
-		dojo.doc.attachEvent('onkeydown', keydownCallback);
-		dojo.addOnWindowUnload(function(){
-			dojo.doc.detachEvent('onkeydown', keydownCallback);
-		});
-	})();
-}else{
-	dojo.doc.addEventListener('keydown', function(evt){
-		dijit._lastKeyDownNode = evt.target;
-	}, true);
-}
-
-(function(){
-
-dojo.declare("dijit._Widget", dijit._WidgetBase, {
-	// summary:
-	//		Base class for all Dijit widgets.
-	//
-	//		Extends _WidgetBase, adding support for:
-	//			- deferred connections
-	//				A call like dojo.connect(myWidget, "onMouseMove", func)
-	//				will essentially do a dojo.connect(myWidget.domNode, "onMouseMove", func)
-	//			- ondijitclick
-	//				Support new dojoAttachEvent="ondijitclick: ..." that is triggered by a mouse click or a SPACE/ENTER keypress
-	//			- focus related functions
-	//				In particular, the onFocus()/onBlur() callbacks.   Driven internally by
-	//				dijit/_base/focus.js.
-	//			- deprecated methods
-	//			- onShow(), onHide(), onClose()
-	//
-	//		Also, by loading code in dijit/_base, turns on:
-	//			- browser sniffing (putting browser id like .dj_ie on <html> node)
-	//			- high contrast mode sniffing (add .dijit_a11y class to <body> if machine is in high contrast mode)
-	
-
-	////////////////// DEFERRED CONNECTS ///////////////////
-
-	// _deferredConnects: [protected] Object
-	//		attributeMap addendum for event handlers that should be connected only on first use
-	_deferredConnects: {
-		onClick: "",
-		onDblClick: "",
-		onKeyDown: "",
-		onKeyPress: "",
-		onKeyUp: "",
-		onMouseMove: "",
-		onMouseDown: "",
-		onMouseOut: "",
-		onMouseOver: "",
-		onMouseLeave: "",
-		onMouseEnter: "",
-		onMouseUp: ""
-	},
-
-	onClick: dijit._connectOnUseEventHandler,
-	/*=====
-	onClick: function(event){
-		// summary:
-		//		Connect to this function to receive notifications of mouse click events.
-		// event:
-		//		mouse Event
-		// tags:
-		//		callback
-	},
-	=====*/
-	onDblClick: dijit._connectOnUseEventHandler,
-	/*=====
-	onDblClick: function(event){
-		// summary:
-		//		Connect to this function to receive notifications of mouse double click events.
-		// event:
-		//		mouse Event
-		// tags:
-		//		callback
-	},
-	=====*/
-	onKeyDown: dijit._connectOnUseEventHandler,
-	/*=====
-	onKeyDown: function(event){
-		// summary:
-		//		Connect to this function to receive notifications of keys being pressed down.
-		// event:
-		//		key Event
-		// tags:
-		//		callback
-	},
-	=====*/
-	onKeyPress: dijit._connectOnUseEventHandler,
-	/*=====
-	onKeyPress: function(event){
-		// summary:
-		//		Connect to this function to receive notifications of printable keys being typed.
-		// event:
-		//		key Event
-		// tags:
-		//		callback
-	},
-	=====*/
-	onKeyUp: dijit._connectOnUseEventHandler,
-	/*=====
-	onKeyUp: function(event){
-		// summary:
-		//		Connect to this function to receive notifications of keys being released.
-		// event:
-		//		key Event
-		// tags:
-		//		callback
-	},
-	=====*/
-	onMouseDown: dijit._connectOnUseEventHandler,
-	/*=====
-	onMouseDown: function(event){
-		// summary:
-		//		Connect to this function to receive notifications of when the mouse button is pressed down.
-		// event:
-		//		mouse Event
-		// tags:
-		//		callback
-	},
-	=====*/
-	onMouseMove: dijit._connectOnUseEventHandler,
-	/*=====
-	onMouseMove: function(event){
-		// summary:
-		//		Connect to this function to receive notifications of when the mouse moves over nodes contained within this widget.
-		// event:
-		//		mouse Event
-		// tags:
-		//		callback
-	},
-	=====*/
-	onMouseOut: dijit._connectOnUseEventHandler,
-	/*=====
-	onMouseOut: function(event){
-		// summary:
-		//		Connect to this function to receive notifications of when the mouse moves off of nodes contained within this widget.
-		// event:
-		//		mouse Event
-		// tags:
-		//		callback
-	},
-	=====*/
-	onMouseOver: dijit._connectOnUseEventHandler,
-	/*=====
-	onMouseOver: function(event){
-		// summary:
-		//		Connect to this function to receive notifications of when the mouse moves onto nodes contained within this widget.
-		// event:
-		//		mouse Event
-		// tags:
-		//		callback
-	},
-	=====*/
-	onMouseLeave: dijit._connectOnUseEventHandler,
-	/*=====
-	onMouseLeave: function(event){
-		// summary:
-		//		Connect to this function to receive notifications of when the mouse moves off of this widget.
-		// event:
-		//		mouse Event
-		// tags:
-		//		callback
-	},
-	=====*/
-	onMouseEnter: dijit._connectOnUseEventHandler,
-	/*=====
-	onMouseEnter: function(event){
-		// summary:
-		//		Connect to this function to receive notifications of when the mouse moves onto this widget.
-		// event:
-		//		mouse Event
-		// tags:
-		//		callback
-	},
-	=====*/
-	onMouseUp: dijit._connectOnUseEventHandler,
-	/*=====
-	onMouseUp: function(event){
-		// summary:
-		//		Connect to this function to receive notifications of when the mouse button is released.
-		// event:
-		//		mouse Event
-		// tags:
-		//		callback
-	},
-	=====*/
-
-	create: function(/*Object?*/params, /*DomNode|String?*/srcNodeRef){
-		// To avoid double-connects, remove entries from _deferredConnects
-		// that have been setup manually by a subclass (ex, by dojoAttachEvent).
-		// If a subclass has redefined a callback (ex: onClick) then assume it's being
-		// connected to manually.
-		this._deferredConnects = dojo.clone(this._deferredConnects);
-		for(var attr in this.attributeMap){
-			delete this._deferredConnects[attr]; // can't be in both attributeMap and _deferredConnects
-		}
-		for(attr in this._deferredConnects){
-			if(this[attr] !== dijit._connectOnUseEventHandler){
-				delete this._deferredConnects[attr];	// redefined, probably dojoAttachEvent exists
-			}
-		}
-
-		this.inherited(arguments);
-
-		if(this.domNode){
-			// If the developer has specified a handler as a widget parameter
-			// (ex: new Button({onClick: ...})
-			// then naturally need to connect from DOM node to that handler immediately,
-			for(attr in this.params){
-				this._onConnect(attr);
-			}
-		}
-	},
-
-	_onConnect: function(/*String*/ event){
-		// summary:
-		//		Called when someone connects to one of my handlers.
-		//		"Turn on" that handler if it isn't active yet.
-		//
-		//		This is also called for every single initialization parameter
-		//		so need to do nothing for parameters like "id".
-		// tags:
-		//		private
-		if(event in this._deferredConnects){
-			var mapNode = this[this._deferredConnects[event] || 'domNode'];
-			this.connect(mapNode, event.toLowerCase(), event);
-			delete this._deferredConnects[event];
-		}
-	},
-
-	////////////////// FOCUS RELATED ///////////////////
-	// _onFocus() and _onBlur() are called by the focus manager
-
-	// focused: [readonly] Boolean
-	//		This widget or a widget it contains has focus, or is "active" because
-	//		it was recently clicked.
-	focused: false,
-
-	isFocusable: function(){
-		// summary:
-		//		Return true if this widget can currently be focused
-		//		and false if not
-		return this.focus && (dojo.style(this.domNode, "display") != "none");
-	},
-
-	onFocus: function(){
-		// summary:
-		//		Called when the widget becomes "active" because
-		//		it or a widget inside of it either has focus, or has recently
-		//		been clicked.
-		// tags:
-		//		callback
-	},
-
-	onBlur: function(){
-		// summary:
-		//		Called when the widget stops being "active" because
-		//		focus moved to something outside of it, or the user
-		//		clicked somewhere outside of it, or the widget was
-		//		hidden.
-		// tags:
-		//		callback
-	},
-
-	_onFocus: function(e){
-		// summary:
-		//		This is where widgets do processing for when they are active,
-		//		such as changing CSS classes.  See onFocus() for more details.
-		// tags:
-		//		protected
-		this.onFocus();
-	},
-
-	_onBlur: function(){
-		// summary:
-		//		This is where widgets do processing for when they stop being active,
-		//		such as changing CSS classes.  See onBlur() for more details.
-		// tags:
-		//		protected
-		this.onBlur();
-	},
-
-	////////////////// DEPRECATED METHODS ///////////////////
-
-	setAttribute: function(/*String*/ attr, /*anything*/ value){
-		// summary:
-		//		Deprecated.  Use set() instead.
-		// tags:
-		//		deprecated
-		dojo.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.", "", "2.0");
-		this.set(attr, value);
-	},
-
-	attr: function(/*String|Object*/name, /*Object?*/value){
-		// summary:
-		//		Set or get properties on a widget instance.
-		//	name:
-		//		The property to get or set. If an object is passed here and not
-		//		a string, its keys are used as names of attributes to be set
-		//		and the value of the object as values to set in the widget.
-		//	value:
-		//		Optional. If provided, attr() operates as a setter. If omitted,
-		//		the current value of the named property is returned.
-		// description:
-		//		This method is deprecated, use get() or set() directly.
-
-		// Print deprecation warning but only once per calling function
-		if(dojo.config.isDebug){
-			var alreadyCalledHash = arguments.callee._ach || (arguments.callee._ach = {}),
-				caller = (arguments.callee.caller || "unknown caller").toString();
-			if(!alreadyCalledHash[caller]){
-				dojo.deprecated(this.declaredClass + "::attr() is deprecated. Use get() or set() instead, called from " +
-				caller, "", "2.0");
-				alreadyCalledHash[caller] = true;
-			}
-		}
-
-		var args = arguments.length;
-		if(args >= 2 || typeof name === "object"){ // setter
-			return this.set.apply(this, arguments);
-		}else{ // getter
-			return this.get(name);
-		}
-	},
-	
-	////////////////// ONDIJITCLICK SUPPORT ///////////////////
-
-	// nodesWithKeyClick: [private] String[]
-	//		List of nodes that correctly handle click events via native browser support,
-	//		and don't need dijit's help
-	nodesWithKeyClick: ["input", "button"],
-
-	connect: function(
-			/*Object|null*/ obj,
-			/*String|Function*/ event,
-			/*String|Function*/ method){
-		// summary:
-		//		Connects specified obj/event to specified method of this object
-		//		and registers for disconnect() on widget destroy.
-		// description:
-		//		Provide widget-specific analog to dojo.connect, except with the
-		//		implicit use of this widget as the target object.
-		//		This version of connect also provides a special "ondijitclick"
-		//		event which triggers on a click or space or enter keyup.
-		//		Events connected with `this.connect` are disconnected upon
-		//		destruction.
-		// returns:
-		//		A handle that can be passed to `disconnect` in order to disconnect before
-		//		the widget is destroyed.
-		// example:
-		//	|	var btn = new dijit.form.Button();
-		//	|	// when foo.bar() is called, call the listener we're going to
-		//	|	// provide in the scope of btn
-		//	|	btn.connect(foo, "bar", function(){
-		//	|		console.debug(this.toString());
-		//	|	});
-		// tags:
-		//		protected
-
-		var d = dojo,
-			dc = d._connect,
-			handles = this.inherited(arguments, [obj, event == "ondijitclick" ? "onclick" : event, method]);
-
-		if(event == "ondijitclick"){
-			// add key based click activation for unsupported nodes.
-			// do all processing onkey up to prevent spurious clicks
-			// for details see comments at top of this file where _lastKeyDownNode is defined
-			if(d.indexOf(this.nodesWithKeyClick, obj.nodeName.toLowerCase()) == -1){ // is NOT input or button
-				var m = d.hitch(this, method);
-				handles.push(
-					dc(obj, "onkeydown", this, function(e){
-						//console.log(this.id + ": onkeydown, e.target = ", e.target, ", lastKeyDownNode was ", dijit._lastKeyDownNode, ", equality is ", (e.target === dijit._lastKeyDownNode));
-						if((e.keyCode == d.keys.ENTER || e.keyCode == d.keys.SPACE) &&
-							!e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey){
-							// needed on IE for when focus changes between keydown and keyup - otherwise dropdown menus do not work
-							dijit._lastKeyDownNode = e.target;
-							
-							// Stop event to prevent scrolling on space key in IE.
-							// But don't do this for _HasDropDown because it surpresses the onkeypress
-							// event needed to open the drop down when the user presses the SPACE key.
-							if(!("openDropDown" in this && obj == this._buttonNode)){
-								e.preventDefault();
-							}
-						}
-			 		}),
-					dc(obj, "onkeyup", this, function(e){
-						//console.log(this.id + ": onkeyup, e.target = ", e.target, ", lastKeyDownNode was ", dijit._lastKeyDownNode, ", equality is ", (e.target === dijit._lastKeyDownNode));
-						if( (e.keyCode == d.keys.ENTER || e.keyCode == d.keys.SPACE) &&
-							e.target == dijit._lastKeyDownNode &&	// === breaks greasemonkey
-							!e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey){
-								//need reset here or have problems in FF when focus returns to trigger element after closing popup/alert
-								dijit._lastKeyDownNode = null;
-								return m(e);
-						}
-					})
-				);
-			}
-		}
-
-		return handles;		// _Widget.Handle
-	},
-
-	////////////////// MISCELLANEOUS METHODS ///////////////////
-
-	_onShow: function(){
-		// summary:
-		//		Internal method called when this widget is made visible.
-		//		See `onShow` for details.
-		this.onShow();
-	},
-
-	onShow: function(){
-		// summary:
-		//		Called when this widget becomes the selected pane in a
-		//		`dijit.layout.TabContainer`, `dijit.layout.StackContainer`,
-		//		`dijit.layout.AccordionContainer`, etc.
-		//
-		//		Also called to indicate display of a `dijit.Dialog`, `dijit.TooltipDialog`, or `dijit.TitlePane`.
-		// tags:
-		//		callback
-	},
-
-	onHide: function(){
-		// summary:
-			//		Called when another widget becomes the selected pane in a
-			//		`dijit.layout.TabContainer`, `dijit.layout.StackContainer`,
-			//		`dijit.layout.AccordionContainer`, etc.
-			//
-			//		Also called to indicate hide of a `dijit.Dialog`, `dijit.TooltipDialog`, or `dijit.TitlePane`.
-			// tags:
-			//		callback
-	},
-
-	onClose: function(){
-		// summary:
-		//		Called when this widget is being displayed as a popup (ex: a Calendar popped
-		//		up from a DateTextBox), and it is hidden.
-		//		This is called from the dijit.popup code, and should not be called directly.
-		//
-		//		Also used as a parameter for children of `dijit.layout.StackContainer` or subclasses.
-		//		Callback if a user tries to close the child.   Child will be closed if this function returns true.
-		// tags:
-		//		extension
-
-		return true;		// Boolean
-	}
-});
-
-})();
-
-}
-
-if(!dojo._hasResource["dojo.string"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.string"] = true;
-dojo.provide("dojo.string");
-
-dojo.getObject("string", true, dojo);
-
-/*=====
-dojo.string = {
-	// summary: String utilities for Dojo
-};
-=====*/
-
-dojo.string.rep = function(/*String*/str, /*Integer*/num){
-	//	summary:
-	//		Efficiently replicate a string `n` times.
-	//	str:
-	//		the string to replicate
-	//	num:
-	//		number of times to replicate the string
-	
-	if(num <= 0 || !str){ return ""; }
-	
-	var buf = [];
-	for(;;){
-		if(num & 1){
-			buf.push(str);
-		}
-		if(!(num >>= 1)){ break; }
-		str += str;
-	}
-	return buf.join("");	// String
-};
-
-dojo.string.pad = function(/*String*/text, /*Integer*/size, /*String?*/ch, /*Boolean?*/end){
-	//	summary:
-	//		Pad a string to guarantee that it is at least `size` length by
-	//		filling with the character `ch` at either the start or end of the
-	//		string. Pads at the start, by default.
-	//	text:
-	//		the string to pad
-	//	size:
-	//		length to provide padding
-	//	ch:
-	//		character to pad, defaults to '0'
-	//	end:
-	//		adds padding at the end if true, otherwise pads at start
-	//	example:
-	//	|	// Fill the string to length 10 with "+" characters on the right.  Yields "Dojo++++++".
-	//	|	dojo.string.pad("Dojo", 10, "+", true);
-
-	if(!ch){
-		ch = '0';
-	}
-	var out = String(text),
-		pad = dojo.string.rep(ch, Math.ceil((size - out.length) / ch.length));
-	return end ? out + pad : pad + out;	// String
-};
-
-dojo.string.substitute = function(	/*String*/		template,
-									/*Object|Array*/map,
-									/*Function?*/	transform,
-									/*Object?*/		thisObject){
-	//	summary:
-	//		Performs parameterized substitutions on a string. Throws an
-	//		exception if any parameter is unmatched.
-	//	template:
-	//		a string with expressions in the form `${key}` to be replaced or
-	//		`${key:format}` which specifies a format function. keys are case-sensitive.
-	//	map:
-	//		hash to search for substitutions
-	//	transform:
-	//		a function to process all parameters before substitution takes
-	//		place, e.g. mylib.encodeXML
-	//	thisObject:
-	//		where to look for optional format function; default to the global
-	//		namespace
-	//	example:
-	//		Substitutes two expressions in a string from an Array or Object
-	//	|	// returns "File 'foo.html' is not found in directory '/temp'."
-	//	|	// by providing substitution data in an Array
-	//	|	dojo.string.substitute(
-	//	|		"File '${0}' is not found in directory '${1}'.",
-	//	|		["foo.html","/temp"]
-	//	|	);
-	//	|
-	//	|	// also returns "File 'foo.html' is not found in directory '/temp'."
-	//	|	// but provides substitution data in an Object structure.  Dotted
-	//	|	// notation may be used to traverse the structure.
-	//	|	dojo.string.substitute(
-	//	|		"File '${name}' is not found in directory '${info.dir}'.",
-	//	|		{ name: "foo.html", info: { dir: "/temp" } }
-	//	|	);
-	//	example:
-	//		Use a transform function to modify the values:
-	//	|	// returns "file 'foo.html' is not found in directory '/temp'."
-	//	|	dojo.string.substitute(
-	//	|		"${0} is not found in ${1}.",
-	//	|		["foo.html","/temp"],
-	//	|		function(str){
-	//	|			// try to figure out the type
-	//	|			var prefix = (str.charAt(0) == "/") ? "directory": "file";
-	//	|			return prefix + " '" + str + "'";
-	//	|		}
-	//	|	);
-	//	example:
-	//		Use a formatter
-	//	|	// returns "thinger -- howdy"
-	//	|	dojo.string.substitute(
-	//	|		"${0:postfix}", ["thinger"], null, {
-	//	|			postfix: function(value, key){
-	//	|				return value + " -- howdy";
-	//	|			}
-	//	|		}
-	//	|	);
-
-	thisObject = thisObject || dojo.global;
-	transform = transform ?
-		dojo.hitch(thisObject, transform) : function(v){ return v; };
-
-	return template.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g,
-		function(match, key, format){
-			var value = dojo.getObject(key, false, map);
-			if(format){
-				value = dojo.getObject(format, false, thisObject).call(thisObject, value, key);
-			}
-			return transform(value, key).toString();
-		}); // String
-};
-
-/*=====
-dojo.string.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 taken from [Steven Levithan's blog](http://blog.stevenlevithan.com/archives/faster-trim-javascript).
-	//		The short yet performant version of this function is dojo.trim(),
-	//		which is part of Dojo base.  Uses String.prototype.trim instead, if available.
-	return "";	// String
-}
-=====*/
-
-dojo.string.trim = String.prototype.trim ?
-	dojo.trim : // aliasing to the native function
-	function(str){
-		str = str.replace(/^\s+/, '');
-		for(var i = str.length - 1; i >= 0; i--){
-			if(/\S/.test(str.charAt(i))){
-				str = str.substring(0, i + 1);
-				break;
-			}
-		}
-		return str;
-	};
-
-}
-
-if(!dojo._hasResource["dojo.parser"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.parser"] = true;
-dojo.provide("dojo.parser");
-
-
-
-new Date("X"); // workaround for #11279, new Date("") == NaN
-
-dojo.parser = new function(){
-	// summary:
-	//		The Dom/Widget parsing package
-
-	var d = dojo;
-
-	function val2type(/*Object*/ value){
-		// summary:
-		//		Returns name of type of given value.
-
-		if(d.isString(value)){ return "string"; }
-		if(typeof value == "number"){ return "number"; }
-		if(typeof value == "boolean"){ return "boolean"; }
-		if(d.isFunction(value)){ return "function"; }
-		if(d.isArray(value)){ return "array"; } // typeof [] == "object"
-		if(value instanceof Date) { return "date"; } // assume timestamp
-		if(value instanceof d._Url){ return "url"; }
-		return "object";
-	}
-
-	function str2obj(/*String*/ value, /*String*/ type){
-		// summary:
-		//		Convert given string value to given type
-		switch(type){
-			case "string":
-				return value;
-			case "number":
-				return value.length ? Number(value) : NaN;
-			case "boolean":
-				// for checked/disabled value might be "" or "checked".	 interpret as true.
-				return typeof value == "boolean" ? value : !(value.toLowerCase()=="false");
-			case "function":
-				if(d.isFunction(value)){
-					// IE gives us a function, even when we say something like onClick="foo"
-					// (in which case it gives us an invalid function "function(){ foo }").
-					//	Therefore, convert to string
-					value=value.toString();
-					value=d.trim(value.substring(value.indexOf('{')+1, value.length-1));
-				}
-				try{
-					if(value === "" || value.search(/[^\w\.]+/i) != -1){
-						// The user has specified some text for a function like "return x+5"
-						return new Function(value);
-					}else{
-						// The user has specified the name of a function like "myOnClick"
-						// or a single word function "return"
-						return d.getObject(value, false) || new Function(value);
-					}
-				}catch(e){ return new Function(); }
-			case "array":
-				return value ? value.split(/\s*,\s*/) : [];
-			case "date":
-				switch(value){
-					case "": return new Date("");	// the NaN of dates
-					case "now": return new Date();	// current date
-					default: return d.date.stamp.fromISOString(value);
-				}
-			case "url":
-				return d.baseUrl + value;
-			default:
-				return d.fromJson(value);
-		}
-	}
-
-	var dummyClass = {}, instanceClasses = {
-		// map from fully qualified name (like "dijit.Button") to structure like
-		// { cls: dijit.Button, params: {label: "string", disabled: "boolean"} }
-	};
-
-	// Widgets like BorderContainer add properties to _Widget via dojo.extend().
-	// If BorderContainer is loaded after _Widget's parameter list has been cached,
-	// we need to refresh that parameter list (for _Widget and all widgets that extend _Widget).
-	// TODO: remove this in 2.0, when we stop caching parameters.
-	d.connect(d, "extend", function(){
-		instanceClasses = {};
-	});
-
-	function getProtoInfo(cls, params){
-		// cls: A prototype
-		//		The prototype of the class to check props on
-		// params: Object
-		//		The parameters object to mix found parameters onto.
-		for(var name in cls){
-			if(name.charAt(0)=="_"){ continue; }	// skip internal properties
-			if(name in dummyClass){ continue; }		// skip "constructor" and "toString"
-			params[name] = val2type(cls[name]);
-		}
-		return params;
-	}
-
-	function getClassInfo(/*String*/ className, /*Boolean*/ skipParamsLookup){
-		// summary:
-		//		Maps a widget name string like "dijit.form.Button" to the widget constructor itself,
-		//		and a list of that widget's parameters and their types
-		// className:
-		//		fully qualified name (like "dijit.form.Button")
-		// returns:
-		//		structure like
-		//			{
-		//				cls: dijit.Button,
-		//				params: { label: "string", disabled: "boolean"}
-		//			}
-
-		var c = instanceClasses[className];
-		if(!c){
-			// get pointer to widget class
-			var cls = d.getObject(className), params = null;
-			if(!cls){ return null; }		// class not defined [yet]
-			if(!skipParamsLookup){ // from fastpath, we don't need to lookup the attrs on the proto because they are explicit
-				params = getProtoInfo(cls.prototype, {})
-			}
-			c = { cls: cls, params: params };
-			
-		}else if(!skipParamsLookup && !c.params){
-			// if we're calling getClassInfo and have a cls proto, but no params info, scan that cls for params now
-			// and update the pointer in instanceClasses[className]. This happens when a widget appears in another
-			// widget's template which still uses dojoType, but an instance of the widget appears prior with a data-dojo-type,
-			// skipping this lookup the first time.
-			c.params = getProtoInfo(c.cls.prototype, {});
-		}
-		
-		return c;
-	}
-
-	this._functionFromScript = function(script, attrData){
-		// summary:
-		//		Convert a <script type="dojo/method" args="a, b, c"> ... </script>
-		//		into a function
-		// script: DOMNode
-		//		The <script> DOMNode
-		// attrData: String
-		//		For HTML5 compliance, searches for attrData + "args" (typically
-		//		"data-dojo-args") instead of "args"
-		var preamble = "";
-		var suffix = "";
-		var argsStr = (script.getAttribute(attrData + "args") || script.getAttribute("args"));
-		if(argsStr){
-			d.forEach(argsStr.split(/\s*,\s*/), function(part, idx){
-				preamble += "var "+part+" = arguments["+idx+"]; ";
-			});
-		}
-		var withStr = script.getAttribute("with");
-		if(withStr && withStr.length){
-			d.forEach(withStr.split(/\s*,\s*/), function(part){
-				preamble += "with("+part+"){";
-				suffix += "}";
-			});
-		}
-		return new Function(preamble+script.innerHTML+suffix);
-	};
-
-	this.instantiate = function(/* Array */nodes, /* Object? */mixin, /* Object? */args){
-		// summary:
-		//		Takes array of nodes, and turns them into class instances and
-		//		potentially calls a startup method to allow them to connect with
-		//		any children.
-		// nodes: Array
-		//		Array of nodes or objects like
-		//	|		{
-		//	|			type: "dijit.form.Button",
-		//	|			node: DOMNode,
-		//	|			scripts: [ ... ],	// array of <script type="dojo/..."> children of node
-		//	|			inherited: { ... }	// settings inherited from ancestors like dir, theme, etc.
-		//	|		}
-		// mixin: Object?
-		//		An object that will be mixed in with each node in the array.
-		//		Values in the mixin will override values in the node, if they
-		//		exist.
-		// args: Object?
-		//		An object used to hold kwArgs for instantiation.
-		//		See parse.args argument for details.
-
-		var thelist = [],
-		mixin = mixin||{};
-		args = args||{};
-
-		// TODO: for 2.0 default to data-dojo- regardless of scopeName (or maybe scopeName won't exist in 2.0)
-		var attrName = (args.scope || d._scopeName) + "Type",	// typically "dojoType"
-			attrData = "data-" + (args.scope || d._scopeName) + "-";	// typically "data-dojo-"
-
-		d.forEach(nodes, function(obj){
-			if(!obj){ return; }
-
-			// Get pointers to DOMNode, dojoType string, and clsInfo (metadata about the dojoType), etc.
-			var node, type, clsInfo, clazz, scripts, fastpath;
-			if(obj.node){
-				// new format of nodes[] array, object w/lots of properties pre-computed for me
-				node = obj.node;
-				type = obj.type;
-				fastpath = obj.fastpath;
-				clsInfo = obj.clsInfo || (type && getClassInfo(type, fastpath));
-				clazz = clsInfo && clsInfo.cls;
-				scripts = obj.scripts;
-			}else{
-				// old (backwards compatible) format of nodes[] array, simple array of DOMNodes. no fastpath/data-dojo-type support here.
-				node = obj;
-				type = attrName in mixin ? mixin[attrName] : node.getAttribute(attrName);
-				clsInfo = type && getClassInfo(type);
-				clazz = clsInfo && clsInfo.cls;
-				scripts = (clazz && (clazz._noScript || clazz.prototype._noScript) ? [] :
-							d.query("> script[type^='dojo/']", node));
-			}
-			if(!clsInfo){
-				throw new Error("Could not load class '" + type);
-			}
-
-			// Setup hash to hold parameter settings for this widget.	Start with the parameter
-			// settings inherited from ancestors ("dir" and "lang").
-			// Inherited setting may later be overridden by explicit settings on node itself.
-			var params = {};
-				
-			if(args.defaults){
-				// settings for the document itself (or whatever subtree is being parsed)
-				d._mixin(params, args.defaults);
-			}
-			if(obj.inherited){
-				// settings from dir=rtl or lang=... on a node above this node
-				d._mixin(params, obj.inherited);
-			}
-			
-			// mix things found in data-dojo-props into the params
-			if(fastpath){
-				var extra = node.getAttribute(attrData + "props");
-				if(extra && extra.length){
-					try{
-						extra = d.fromJson.call(args.propsThis, "{" + extra + "}");
-						d._mixin(params, extra);
-					}catch(e){
-						// give the user a pointer to their invalid parameters. FIXME: can we kill this in production?
-						throw new Error(e.toString() + " in data-dojo-props='" + extra + "'");
-					}
-				}
-
-				// For the benefit of _Templated, check if node has data-dojo-attach-point/data-dojo-attach-event
-				// and mix those in as though they were parameters
-				var attachPoint = node.getAttribute(attrData + "attach-point");
-				if(attachPoint){
-					params.dojoAttachPoint = attachPoint;
-				}
-				var attachEvent = node.getAttribute(attrData + "attach-event");
-				if(attachEvent){
-					params.dojoAttachEvent = attachEvent;
-				}
-				dojo.mixin(params, mixin);
-			}else{
-				// FIXME: we need something like "deprecateOnce()" to throw dojo.deprecation for something.
-				// remove this logic in 2.0
-				// read parameters (ie, attributes) specified on DOMNode
-
-				var attributes = node.attributes;
-
-				// clsInfo.params lists expected params like {"checked": "boolean", "n": "number"}
-				for(var name in clsInfo.params){
-					var item = name in mixin ? { value:mixin[name], specified:true } : attributes.getNamedItem(name);
-					if(!item || (!item.specified && (!dojo.isIE || name.toLowerCase()!="value"))){ continue; }
-					var value = item.value;
-					// Deal with IE quirks for 'class' and 'style'
-					switch(name){
-					case "class":
-						value = "className" in mixin ? mixin.className : node.className;
-						break;
-					case "style":
-						value = "style" in mixin ? mixin.style : (node.style && node.style.cssText); // FIXME: Opera?
-					}
-					var _type = clsInfo.params[name];
-					if(typeof value == "string"){
-						params[name] = str2obj(value, _type);
-					}else{
-						params[name] = value;
-					}
-				}
-			}
-
-			// Process <script type="dojo/*"> script tags
-			// <script type="dojo/method" event="foo"> tags are added to params, and passed to
-			// the widget on instantiation.
-			// <script type="dojo/method"> tags (with no event) are executed after instantiation
-			// <script type="dojo/connect" event="foo"> tags are dojo.connected after instantiation
-			// note: dojo/* script tags cannot exist in self closing widgets, like <input />
-			var connects = [],	// functions to connect after instantiation
-				calls = [];		// functions to call after instantiation
-
-			d.forEach(scripts, function(script){
-				node.removeChild(script);
-				// FIXME: drop event="" support in 2.0. use data-dojo-event="" instead
-				var event = (script.getAttribute(attrData + "event") || script.getAttribute("event")),
-					type = script.getAttribute("type"),
-					nf = d.parser._functionFromScript(script, attrData);
-				if(event){
-					if(type == "dojo/connect"){
-						connects.push({event: event, func: nf});
-					}else{
-						params[event] = nf;
-					}
-				}else{
-					calls.push(nf);
-				}
-			});
-
-			var markupFactory = clazz.markupFactory || clazz.prototype && clazz.prototype.markupFactory;
-			// create the instance
-			var instance = markupFactory ? markupFactory(params, node, clazz) : new clazz(params, node);
-			thelist.push(instance);
-
-			// map it to the JS namespace if that makes sense
-			// FIXME: in 2.0, drop jsId support. use data-dojo-id instead
-			var jsname = (node.getAttribute(attrData + "id") || node.getAttribute("jsId"));
-			if(jsname){
-				d.setObject(jsname, instance);
-			}
-
-			// process connections and startup functions
-			d.forEach(connects, function(connect){
-				d.connect(instance, connect.event, null, connect.func);
-			});
-			d.forEach(calls, function(func){
-				func.call(instance);
-			});
-		});
-
-		// Call startup on each top level instance if it makes sense (as for
-		// widgets).  Parent widgets will recursively call startup on their
-		// (non-top level) children
-		if(!mixin._started){
-			// TODO: for 2.0, when old instantiate() API is desupported, store parent-child
-			// relationships in the nodes[] array so that no getParent() call is needed.
-			// Note that will  require a parse() call from ContentPane setting a param that the
-			// ContentPane is the parent widget (so that the parse doesn't call startup() on the
-			// ContentPane's children)
-			d.forEach(thelist, function(instance){
-				if( !args.noStart && instance  &&
-					dojo.isFunction(instance.startup) &&
-					!instance._started &&
-					(!instance.getParent || !instance.getParent())
-				){
-					instance.startup();
-				}
-			});
-		}
-		return thelist;
-	};
-
-	this.parse = function(rootNode, args){
-		// summary:
-		//		Scan the DOM for class instances, and instantiate them.
-		//
-		// description:
-		//		Search specified node (or root node) recursively for class instances,
-		//		and instantiate them. Searches for either data-dojo-type="Class" or
-		//		dojoType="Class" where "Class" is a a fully qualified class name,
-		//		like `dijit.form.Button`
-		//
-		//		Using `data-dojo-type`:
-		//		Attributes using can be mixed into the parameters used to instantitate the
-		//		Class by using a `data-dojo-props` attribute on the node being converted.
-		//		`data-dojo-props` should be a string attribute to be converted from JSON.
-		//
-		//		Using `dojoType`:
-		//		Attributes are read from the original domNode and converted to appropriate
-		//		types by looking up the Class prototype values. This is the default behavior
-		//		from Dojo 1.0 to Dojo 1.5. `dojoType` support is deprecated, and will
-		//		go away in Dojo 2.0.
-		//
-		// rootNode: DomNode?
-		//		A default starting root node from which to start the parsing. Can be
-		//		omitted, defaulting to the entire document. If omitted, the `args`
-		//		object can be passed in this place. If the `args` object has a
-		//		`rootNode` member, that is used.
-		//
-		// args: Object
-		//		a kwArgs object passed along to instantiate()
-		//
-		//			* noStart: Boolean?
-		//				when set will prevent the parser from calling .startup()
-		//				when locating the nodes.
-		//			* rootNode: DomNode?
-		//				identical to the function's `rootNode` argument, though
-		//				allowed to be passed in via this `args object.
-		//			* template: Boolean
-		//				If true, ignores ContentPane's stopParser flag and parses contents inside of
-		//				a ContentPane inside of a template.   This allows dojoAttachPoint on widgets/nodes
-		//				nested inside the ContentPane to work.
-		//			* inherited: Object
-		//				Hash possibly containing dir and lang settings to be applied to
-		//				parsed widgets, unless there's another setting on a sub-node that overrides
-		//			* scope: String
-		//				Root for attribute names to search for.   If scopeName is dojo,
-		//				will search for data-dojo-type (or dojoType).   For backwards compatibility
-		//				reasons defaults to dojo._scopeName (which is "dojo" except when
-		//				multi-version support is used, when it will be something like dojo16, dojo20, etc.)
-		//			* propsThis: Object
-		//				If specified, "this" referenced from data-dojo-props will refer to propsThis.
-		//				Intended for use from the widgets-in-template feature of `dijit._Templated`
-		//
-		// example:
-		//		Parse all widgets on a page:
-		//	|		dojo.parser.parse();
-		//
-		// example:
-		//		Parse all classes within the node with id="foo"
-		//	|		dojo.parser.parse(dojo.byId('foo'));
-		//
-		// example:
-		//		Parse all classes in a page, but do not call .startup() on any
-		//		child
-		//	|		dojo.parser.parse({ noStart: true })
-		//
-		// example:
-		//		Parse all classes in a node, but do not call .startup()
-		//	|		dojo.parser.parse(someNode, { noStart:true });
-		//	|		// or
-		//	|		dojo.parser.parse({ noStart:true, rootNode: someNode });
-
-		// determine the root node based on the passed arguments.
-		var root;
-		if(!args && rootNode && rootNode.rootNode){
-			args = rootNode;
-			root = args.rootNode;
-		}else{
-			root = rootNode;
-		}
-		root = root ? dojo.byId(root) : dojo.body();
-		args = args || {};
-
-		var attrName = (args.scope || d._scopeName) + "Type",		// typically "dojoType"
-			attrData = "data-" + (args.scope || d._scopeName) + "-";	// typically "data-dojo-"
-
-		function scan(parent, list){
-			// summary:
-			//		Parent is an Object representing a DOMNode, with or without a dojoType specified.
-			//		Scan parent's children looking for nodes with dojoType specified, storing in list[].
-			//		If parent has a dojoType, also collects <script type=dojo/*> children and stores in parent.scripts[].
-			// parent: Object
-			//		Object representing the parent node, like
-			//	|	{
-			//	|		node: DomNode,			// scan children of this node
-			//	|		inherited: {dir: "rtl"},	// dir/lang setting inherited from above node
-			//	|
-			//	|		// attributes only set if node has dojoType specified
-			//	|		scripts: [],			// empty array, put <script type=dojo/*> in here
-			//	|		clsInfo: { cls: dijit.form.Button, ...}
-			//	|	}
-			// list: DomNode[]
-			//		Output array of objects (same format as parent) representing nodes to be turned into widgets
-
-			// Effective dir and lang settings on parent node, either set directly or inherited from grandparent
-			var inherited = dojo.clone(parent.inherited);
-			dojo.forEach(["dir", "lang"], function(name){
-				// TODO: what if this is a widget and dir/lang are declared in data-dojo-props?
-				var val = parent.node.getAttribute(name);
-				if(val){
-					inherited[name] = val;
-				}
-			});
-
-			// if parent is a widget, then search for <script type=dojo/*> tags and put them in scripts[].
-			var scripts = parent.clsInfo && !parent.clsInfo.cls.prototype._noScript ? parent.scripts : null;
-
-			// unless parent is a widget with the stopParser flag set, continue search for dojoType, recursively
-			var recurse = (!parent.clsInfo || !parent.clsInfo.cls.prototype.stopParser) || (args && args.template);
-
-			// scan parent's children looking for dojoType and <script type=dojo/*>
-			for(var child = parent.node.firstChild; child; child = child.nextSibling){
-				if(child.nodeType == 1){
-					// FIXME: desupport dojoType in 2.0. use data-dojo-type instead
-					var type, html5 = recurse && child.getAttribute(attrData + "type");
-					if(html5){
-						type = html5;
-					}else{
-						// fallback to backward compatible mode, using dojoType. remove in 2.0
-						type = recurse && child.getAttribute(attrName);
-					}
-					
-					var fastpath = html5 == type;
-
-					if(type){
-						// if dojoType/data-dojo-type specified, add to output array of nodes to instantiate
-						var params = {
-							"type": type,
-							fastpath: fastpath,
-							clsInfo: getClassInfo(type, fastpath), // note: won't find classes declared via dojo.Declaration
-							node: child,
-							scripts: [], // <script> nodes that are parent's children
-							inherited: inherited // dir & lang attributes inherited from parent
-						};
-						list.push(params);
-
-						// Recurse, collecting <script type="dojo/..."> children, and also looking for
-						// descendant nodes with dojoType specified (unless the widget has the stopParser flag),
-						scan(params, list);
-					}else if(scripts && child.nodeName.toLowerCase() == "script"){
-						// if <script type="dojo/...">, save in scripts[]
-						type = child.getAttribute("type");
-						if (type && /^dojo\/\w/i.test(type)) {
-							scripts.push(child);
-						}
-					}else if(recurse){
-						// Recurse, looking for grandchild nodes with dojoType specified
-						scan({
-							node: child,
-							inherited: inherited
-						}, list);
-					}
-				}
-			}
-		}
-
-		// Ignore bogus entries in inherited hash like {dir: ""}
-		var inherited = {};
-		if(args && args.inherited){
-			for(var key in args.inherited){
-				if(args.inherited[key]){ inherited[key] = args.inherited[key]; }
-			}
-		}
-
-		// Make list of all nodes on page w/dojoType specified
-		var list = [];
-		scan({
-			node: root,
-			inherited: inherited
-		}, list);
-
-		// go build the object instances
-		var mixin = args && args.template ? {template: true} : null;
-		return this.instantiate(list, mixin, args); // Array
-	};
-}();
-
-//Register the parser callback. It should be the first callback
-//after the a11y test.
-
-(function(){
-	var parseRunner = function(){
-		if(dojo.config.parseOnLoad){
-			dojo.parser.parse();
-		}
-	};
-
-	// FIXME: need to clobber cross-dependency!!
-	if(dojo.getObject("dijit.wai.onload") === dojo._loaders[0]){
-		dojo._loaders.splice(1, 0, parseRunner);
-	}else{
-		dojo._loaders.unshift(parseRunner);
-	}
-})();
-
-}
-
-if(!dojo._hasResource["dojo.cache"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.cache"] = true;
-dojo.provide("dojo.cache");
-
-
-/*=====
-dojo.cache = {
-	// summary:
-	// 		A way to cache string content that is fetchable via `dojo.moduleUrl`.
-};
-=====*/
-
-	var cache = {};
-	dojo.cache = function(/*String||Object*/module, /*String*/url, /*String||Object?*/value){
-		// summary:
-		// 		A getter and setter for storing the string content associated with the
-		// 		module and url arguments.
-		// description:
-		// 		module and url are used to call `dojo.moduleUrl()` to generate a module URL.
-		// 		If value is specified, the cache value for the moduleUrl will be set to
-		// 		that value. Otherwise, dojo.cache will fetch the moduleUrl and store it
-		// 		in its internal cache and return that cached value for the URL. To clear
-		// 		a cache value pass null for value. Since XMLHttpRequest (XHR) is used to fetch the
-		// 		the URL contents, only modules on the same domain of the page can use this capability.
-		// 		The build system can inline the cache values though, to allow for xdomain hosting.
-		// module: String||Object
-		// 		If a String, the m